关于漫反射
光打到凹凸不平的平面上,光线会被反射到四面八方,被称为漫反射
关于这种模型,由于光线由于分散,所以进入人眼的光线强度和观察角度没有区别
在A点和B点接收到的光线强度是一样的
在漫反射下,光线强度只和光的入射角度有关
关于法线和叉乘
法线,是指始终垂直于某平面的虚线,这是在二维平面下的法线
叉乘是求一条垂直于平面的向量
可以用叉乘求出物体的法线
关于点乘
点乘表示A在B方向上的投影与B方向的乘机,反映了两个向量在方向上的相似度
计算公式为:
兰伯特光照模型(Lambert Lighting)
diffuse = I*cosθ
其中I为入射光强度
cosθ为光源方向和顶点法线的余弦,也就是两者的点乘,这个值越大,则cosθ越大
但是如果光在物体背面,则这个值为负数,于是就归为0就可以了
然后再乘上材质的颜色就是最后的颜色值了,也就是下面的完全公式
Diffuse = 直射光颜色 *材质颜色 * max(0,cos夹角(光和法线的夹角))
在辐射度量学之前,图形学一直处于一个想当然的境地
这个公式是在1760年提出来的,这个公式完全是经验公式,看起来像那么回事就可以了
但是兰伯特光照模型有个弊端,就是在物体打不着光的一面完全是黑色的,会“不那么好看”
于是就有了半兰伯特光照模型
半兰伯特光照模型(Half-Lanbert)
在1998的《半条命》的游戏引擎中,提出了半兰伯特的光照模型
在半兰伯特光照模型公式中
Diffuse = 直射光颜色 * 材质颜色 * (dot(光源方向, 法线方向) * 0.5 + 0.5)
在光在物体的背面的时候,最后的计算结果也会有明暗变化
这样物体就会”好看多了“