一、光照模型
光照模型(illumination model),也称为明暗模型,用于计算物体某点处的光强(颜色值)。从算法理论基础而言,光照模型分为两类:一种是基于物理理论的,另一种是基于经验模型的。
- 基于物理理论:偏向于使用物理的度量和统计方法, 效果非常真实,但是计算复杂,实现起来也较为困难。
- 基于经验模型:是对光照的一种模拟,通过实践总结出简化的方法,简化了真实的光照计算,并且能达到很不错的效果。
为什么需要光照模型?
现实世界的光照是极其复杂的,而且会受到诸多因素的影响,有限的计算能力无法完全模拟。使用简化的光照模型对现实的情况进行近似,使得计算处理起来会更容易,并且令效果更符合需求。这些光照模型就是基于我们对光的物理特性的理解。
光照模型的发展
二、局部光照模型
局部光照模型只关心直接光照部分,即直接从光源发出照射到物体表面并反射至摄像头的光线。
局部光照模型的组成:
- 漫反射
- 高光反射
- 环境光
- 自发光
(1)漫反射
在光照模型的定义中,当光线从光源照射到模型表面时,光线均匀被反射到各个方向,这种现象就是漫反射。在漫反射的过程中,光线发生了吸收和散射,而因此改变颜色和方向。
漫反射光照符合Lambert定律,反射光强与物体表面法线和光源方向之间的夹角余弦值成正比。
计算公式:
漫反射效果与观察者的位置无关,与光源位置有关。
(2)高光反射(镜面反射)
当光线到达物体表面并发生了反射,观察视线在反射光线的附近时,便能够观察到了高光反射。高光反射描述了光线与物体表面发生的反射(光强不变,方向改变)。
高光反射的反射率是根据一种菲涅尔效应的物理现象决定,通常使用对应的反射贴图描述物体表面的反射率,并且使用光泽度(粗糙度,反光度)描述高光范围的大小。
计算公式:
Gloss(光泽度)影响了物体表面发生高光反射的面积。
不同光泽度下的高光效果:
光泽度越大,高光范围越小。
(3)环境光
在局部光照模型中,没有考虑间接光照的影响。为了处理这种间接光照,引入了环境光。
计算公式:
通常漫反射的反照率来表示环境光照的反射光量。
(4)自发光
顾名思义,物体自身发射的光线,通常作为单独的一项加入光照模型。一般使用一张发光贴图描述物体的自发光。
三、经典光照模型
(1)Lambert模型
(2)Phong模型
(3)Blinn-Phong模型
Phong模型和Blinn-Phong模型的区别:
- 计算更加简洁,半角向量比反射向量的计算更加简洁。
当光源与视线都在物体表面之上时,半角向量与法线的角度永远不大于90度。设想一种情况:当材质的反光度非常低,因此物体的被光线照射的大部分区域都会发生高光反射,这些区域中一部分高光区域的反射向量与视线的夹角超过了90度。如果使用Phong模型就会导致高光区域一部分发生缺失。这是由于phone模型只考虑视线与光照分布在法线两侧的情况。当视线与光照在法线同侧时且高光反射对亮度有较大影响时,就会发生断层。
(3)Gourand模型
(4)Flat模型
光照模型展示:
总结:
- Lambert模型只考虑表面的漫反射部分
- Phong模型能够较好的呈现镜面高光的效果,也是四种模型中最接近真实的效果,需要计算较复杂的反射向量
- Blinn-Phong模型效果与Phong模型相近,更偏向艺术性的效果,使用方便计算的半程向量代替较为复杂的反射向量,计算量小于Phong,是效果和效率的最佳选择,也是大多数情况下的默认光照模型
- Gourand模型计算顶点光照并通过增量法插值计算多边形内部的光强,当顶点密度低时,表现效果很差,对于高光的效果也不尽如意,计算量较小