兰伯特光照模型(Lambert Lighting)和半兰伯特光照模型(Half-Lanbert)

关于漫反射

光打到凹凸不平的平面上,光线会被反射到四面八方,被称为漫反射

 关于这种模型,由于光线由于分散,所以进入人眼的光线强度和观察角度没有区别

 在A点和B点接收到的光线强度是一样的

在漫反射下,光线强度只和光的入射角度有关

关于法线和叉乘

法线,是指始终垂直于某平面的虚线,这是在二维平面下的法线

叉乘是求一条垂直于平面的向量

 可以用叉乘求出物体的法线

关于点乘

点乘表示A在B方向上的投影与B方向的乘机,反映了两个向量在方向上的相似度

计算公式为:

兰伯特光照模型(Lambert Lighting)

diffuse = I*cosθ

其中I为入射光强度

cosθ为光源方向和顶点法线的余弦,也就是两者的点乘,这个值越大,则cosθ越大

但是如果光在物体背面,则这个值为负数,于是就归为0就可以了

然后再乘上材质的颜色就是最后的颜色值了,也就是下面的完全公式

Diffuse = 直射光颜色 *材质颜色 * max(0,cos夹角(光和法线的夹角))

在辐射度量学之前,图形学一直处于一个想当然的境地

这个公式是在1760年提出来的,这个公式完全是经验公式,看起来像那么回事就可以了

但是兰伯特光照模型有个弊端,就是在物体打不着光的一面完全是黑色的,会“不那么好看”

于是就有了半兰伯特光照模型

半兰伯特光照模型(Half-Lanbert)

在1998的《半条命》的游戏引擎中,使用了半兰伯特的光照模型

这是Valve官方开发者文档上的原句

"Half Lambert" lighting is a technique first developed in the original Half-Life.

Half Lambert - Valve Developer Community (valvesoftware.com) 

在半兰伯特光照模型公式中

Diffuse = 直射光颜色 * 材质颜色 * (dot(光源方向, 法线方向) * 0.5 + 0.5)

在光在物体的背面的时候,最后的计算结果也会有明暗变化

这样物体就会”好看多了“

猜你喜欢

转载自blog.csdn.net/qq_36653924/article/details/130007076