镜面反射(Specular)
镜面反射又称高光,是指由光源直接经物体表面反射入眼睛的光线。镜面反射使物体看上去有光泽,粗糙表面因反射率不高,所以缺乏此效果。镜面反射的强度取决于物体,光源和观察者。
n为表面法向量
v 指向观察者
l 指向光源
r 为"镜像"向量,即l对n镜像的结果。
θ 为r和v的夹角,由r·v给出。描述镜像的方位性。
以上所有向量均为单位向量。
下列等式给出给出镜面反射的Phong模型。
mgls为材料的光泽度,也称为Phong指数。它控制"亮斑"的范围,小的mgls带来大而平滑的光滑的光斑,大的值带来小而亮的光斑。
mspec为材料的反射颜色,控制光斑的强度。强反射面有,有较大的mspec值,粗糙些的表面则有较小的mspec值。
Sspec是光源的镜面反射颜色,控制光本身的色彩和强度。常与光的漫反射颜色Sdiff
由n是变化的,导致r需要频繁计算,在观察者离物体的距离远大于物体的尺寸的情况下,可以尽量避免计算r值。
下面介绍一下Blinn模型
Blinn模型通过计算一个稍微不同的角度来避免计算,使用的是h,表示v,l的中间向量,由标准化的v,l的平均值求得,计算如下:
Blinn模型和Phong模型类似,注意θ表示是n与h的夹角。
漫反射光照(Diffuse)
漫反射是物体粗糙表面散开的随机方向上的反射。漫反射光照服从Lambert法则:反射光强正比于法向量与光线夹角的余弦,用点乘来计算余弦,公式如下:
n为表面法向量,l为指向光源的单位向量,mdiff为材料的散射色,即多数人认同的物体颜色,Sdiff为光源散射色,一般和光源镜面色Sspec
环境光照(Ambient)
镜面反射和漫反射都是刻画光源经物体反射后直接进入眼中的光线。对于光线经常经过多次反射进入眼睛的反射,称为环境光。例如,黑暗的厨房打开冰箱,整个房间会亮些,尽管箱门(或身体)挡住了大部分直线光。环境光取决于材质和全局环境光,下面的公式计算环境光:mamb为材质的环境光分量。它总是等于漫反射分量。gamb为整个场景的环境光照值。
光照衰弱(Attenuation)
从物理学上来说,光照强度的衰弱为光源的光照强度除以当前距离的平方。公式如下:
其中是I0距离光源d=1时的光照强度。
但对于3D图形编程来说,一般不使用这公式,选择下面的公式较多,而且便于控制效果。
其中a0、a1和a2衰减参数。通过调整这个三个参数的大小可以实现不同的光强衰减的效果。
结合光照模型,会有如下公式:
其中D为漫反射的光强,S为高光的光强,k为相应的参数的系数