一、定义
-
光照模型(illumination model):
- 也称为明暗模型,用于计算物体某点处的光强(颜色值)。从算法理论基础而方,光照模型分为两类:一种是基于物理理论的,另一种是基于经验模型的。
-
基于物理理论的光照模型:
- 偏重于使用物理的度量和统计方法,效果非常真实,但是计算复杂,实现起来也较为困难;
-
经验模型:
- 是对光照的一种模拟,通过实践总结出简化的方法,简化了真实的光照计算,并且能达到很不错的效果。
二、光照模型
-
局部光照模型 :
- 局部光照模型只关心直接光照部分,即直接从光源发出并照射到物体表现并反射至摄像头的光线。
- 局部光照模型满足叠加原理,可以基本将光线分为四个部分:
- 漫反射 、高光反射、环境光、自发光。
-
漫反射:
- Lambert余弦定律
-
理论基础:
在光学中通常使用辐射度来量化光。
其中光源每秒发出的能量为辐射通量P
单位面积接受的光量为辐射通量密度(辐照度)P/A
当光源垂直照射的单位面积的辐照度为
将光束以某个角度照射到更大的平面上的辐射度为
可以认为A1与A2的关系是:
简洁的来说:反射光线的强度与表现法线和光源方向之间的夹角的余弦成正比
光照公式
漫反射效果与观察者位置无关,与光源位置有关
-
高光反射:
- 当光线到达物体表现并发生了反射,观察视线在反射光线的附近时,便能够观察到了高光反射 。
- 高光反射描述了光线与物体表面发生的反射(光强不变,方向改变)
- 高光反射的反射率是根据一种菲涅尔效应的物理现象决定,通常使用对应的反射贴图描述物体表面的反射率,并且使用光泽度(粗糙度、反光度)描述高光范围的大小。
- 计算公式:
- 其中
表示了材质的光泽度
表示了材质的反射光
- R表示反射光线
- V表示视线向量
-
环境光:
- 在局部光照模型中,由于没有考虑间接光照的影响,因此为了处理这种间接光照,为光照模型引入环境光。
- 通常使用漫反射的反照率来指示环境光照的反射光量,该模型假定场景中发生多次散射和反射,并在所有方向上均等的射向目标物体。
-
自发光:
- 物体自身发射的光线,通常作为单独的一项加入光照模型,一般使用一张发光贴图描述物体的自发光。
- 局部光照模型的整体效果,环境光+高光反射+漫反射+自发光。
-
经典光照模型:
-
Lambert模型:
- 总结:Lambert模型只考虑表面的漫反射部分。
-
Gourand模型:
- 总结:Gourand模型计算顶点光照并通过增量法插值计算多边形内部的光强,当顶点密度低时,表现效果很差,对于高光的效果也不尽如意,计算量较小。
- Gourand模型是以顶点为单位计算光量在通过插值得到每个像素点的光亮度。
- 在表现物体光滑性上有比较好的表现,但值不再是线性变化的时候,比如镜面高光,由于线性插值导致内插值不可能大于顶点值。因此高光只能出现在顶点。由于使用的颜色插值,会导致镜面高光蔓延到周边。
-
Phong模型:
- 总结:Phong模型能够较好的呈现镜面高光的效果,也是四种模型中最接近真实的效果,需要计算较复杂的反射向量。
- Phong模型就是第一个有影响力的光照模型,考虑直接光照的反射作用,使用环境光代替间接光照。
环境光量
入射光量
漫反射率
镜面反射率
l 指向光源入射光向量
n 物体表面法线
r 反射向量
gloss 光泽度,控制高光反射区域
-
Blinn-Phone模型:
- 总结:Blinn-Phong模型效果与Phong模型相近,更偏向艺术性的效果,使用方便计算的半程向量代替较为复杂的反射向量,计算量小于Phong,是效果和效率的最佳选择,也是大多数情况下的默认光照模型。
- Blinn-Phong模型不再依赖于反射向量,而是采用了所谓的半程向量(Halfway Vecotr),即光线与视线夹角一半方向上的一个单位向量。当半程向量与法线向量越接近时,镜面光分量就越大。
-
Flat模型:
- 平面着色模型,计算多边形的单个强度,每个三角形只有一个法线方向。以相同的光强度值显示多边形的所有点。通常适用于lowPoly风格的场景。