# 光照模型
当光照射到物体表面时,一部分被物体表面吸收,另一部分被反射,对于透明物体而言,还有一部分光穿过透明体,产生透射光。被物体吸收的光能转化为热量,只有反射光和透射光能够进入眼睛,产生视觉效果。反射光和透射光的强度决定了物体表面亮度,它们包含的不同波长光的比例决定了物体表面的颜色。
所以,物体表面的光照颜色有入射光、物体材质,以及材质和光的交互规律共同决定。在3D渲染中,物体表面的光强是由环境光(Ambient)、漫反射光(Diffuse)、镜面高光(Specular)共同决定的:
# 漫反射光照模型
漫反射通常用来模拟粗糙表面的光照反射。当一束平行的入射光线射到粗糙表面时,表面会把光线向着四面八方反射,所以入射光线虽然互相平行,由于各个入射点的法向方向不一致,造成的反射光线向不同的方向无规则地反射(如下图所示)。漫反射的光强只与入射角有关,而与反射角无关,即与视点的位置无关,视点再任何地方,观察到的漫反射光强都一样。
Lambert(兰伯特)为常用的光照模型:
其中 Il 表示漫反射光强度,Kd 表示材质的漫反射系数(0 Kd 1),N 表示顶点法向量,L 表示光线方向(注意:由顶点指向光照,不要弄反了)。
综合考虑环境光和方向光,Lambert光照模型公式可写为:
# 镜面发射光照模型
Lambert光照模型可以很好表现粗糙表面上的光照现象,如粗糙的墙壁、纸张等,但是用于诸如金属材质的物体时,就会显得比较呆板,表现不出光泽,主要原因是该模型没有考虑这些表面的镜面反射效果。一个光滑表面被光照射时,可以从某个方向看到很强的发射光,这是因为在接近镜面反射角的一个区域内,发射了入射光的全部或绝大部分光强,该现象称为镜面反射。
# Phong镜面发射光照模型
为了更好的描述镜面发射的光强与反射光线和视线夹角的关系,Phong BuiTuong 提出了计算镜面发射光强的经验模型(即 Phong 模型),其数学公式为:
综合环境光和漫反射光的 Phong 光照公式:
其中 Il 表示光照强度,Ks 表示材质的镜面反射系数(0 Ks 1),V 表示从顶点到视点的观察方向,R 表示反射光线方向,S 表示高光指数[1]。
反射方向 R 可以通过入射光方向 L (从顶点指向光源)和物体法向量 N 计算:
因为:
所以有:
# Blinn-Phong镜面发射光照模型
Blinn-Phong光照模型是在 Phong 光照模型基础修改得来。在 Phong 光照模型中需要计算 ,在 Blinn-Phong 光照模型使用 代替 ,Blinn-Phong 光照模型公式为:
综合环境光和漫反射光的 Blinn-Phong 光照模型为:
N 为顶点法向量,H 为“半角向量”由光线方向 L(从顶点到光源)和视线方向 V(从顶点到观察点)计算得来:
Blinn-Phong 相比 Phong,在观察方向趋于平行于表面时,高光形状会拉长,更接近真实情况。
高光指数反映了物体表面的光泽程度,S 越大,反射光越集中,越小,表示物体越粗糙,反射光越分散。 ↩︎
← Gamma校正