冯氏光照模型-yee的MacBook Pro
冯氏光照模型
现实生活中的光照效果是得长复杂的,要精确模拟这种效果是不现实的,所以需要一种能够近似现实光照效果的简化模型。比较著名的是冯氏光照模型
(Phong Lighting Model)。
在冯氏光照模型中,生活中的光照有三种类型:环境光(Ambient)、漫反射(Diffuse)和镜面高光(Specular)
1 |
|
环境光
某些光从光源发出后,被多个物体(墙壁、镜子等)反射 ,最终照射到物体上。对于场景中这种经过反射多次以至于无法确定来自某个方向的光,被称为环境光。在冯氏模型中,环境光从各个角度照射物体,其强度都是一致。
通常情况我们使用一个较小的光线因子乘以光源颜色
来模拟。
1 |
|
漫反射
漫反射是为了模拟平行光源、点光源对物体的方向性影响。
我们知道,当一束光线照射到物体表面时,光线的入射角越小,该表面的亮度就越大,看上去也就越亮。反之,该表面的亮度就越小,看上去越暗。
入射角的表示:
要定义入射角,需要先定义一个法向量
,即垂直于物体表面,并且朝向平面外部的向量。
1 |
|
几何体在旋转、缩放时,每个表面的法向量也会随之变化。
- 平移变换不会改变法向量,因为平移不会改变物体的方向。
- 旋转变换会改变法向量,因为旋转改变了物体的方向。
- 拉伸的情况比较复杂,如果在所有轴上的缩放比例都是一样的,那么法向量不会发生变化
如何计算变换之后的法向量呢?
只要将变换之前的法向量乘以模型矩阵的逆转置矩阵(inverse transpose matrix)即可 。具体操作就是:对模型矩阵先求逆,再转置。
模型矩阵即:对顶点进行变换(缩放、位移、旋转)的矩阵 。
平行光源
在现实中平行光漫反射可以模拟遥远的光源,比如太阳光,由于太阳距离地球过于遥远,所以太阳光照射在物体各个点的方向可以看做是平行的。
1 |
|
冯氏光照模型-yee的MacBook Pro
http://example.com/2024/05/23/webgl/冯氏光照模型-yee的MacBook Pro/