【跟月影学可视化】学习笔记。
物体的光照效果是由光源、介质(物体的材质)和反射类型决定的,而反射类型又由物体的材质特点决定。
在 3D 光照模型中,根据不同的光源特点分为四种:
环境光(Ambient Light)
:指物体所在的三维空间中天然的光,它充满整个空间,在每一处的光照强度都一样。 平行光(Directional Light)
:平行光是朝着某个方向照射的光,能够照亮几何体的一部分表面,它属于有向光。点光源(Positional Light)
:指空间中某一点发出的光,与方向光不同的是,点光源不仅有方向属性,还有位置属性。聚光灯(Spot Light)
:与点光源相比,聚光灯增加了方向以及角度范围,只有在这个范围内,光线才能照到。点光源跟平行光的示意图:
聚光灯示意图:
有向光在与物体发生作用的时候,根据物体的材质特性,会产生两种反射类型:
漫反射(Diffuse reflection)
镜面反射(Specular reflection)
漫反射示意图:
一个物体最终的光照效果,是漫反射、镜面反射以及环境光叠加在一起的效果,示意图如下:
环境光没有方向,物体表面反射环境光的效果,只和环境光本身以及材质的反射率有关。
物体在环境光中呈现的颜色的公式如下:(环境光的颜色为 L,材质对光的反射率为 R。)
下面实现给物体增加环境光效果:
如何给物体增加环境光效果
有向光的漫反射在各个方向上的反射光均匀分布,反射强度与光的射入方向与法线的夹角的余弦成正比。
下面实现给物体增加平行光效果:
如何给物体增加平行光效果
加了平行光线之后,我们可以感受到明显的阴暗变化,效果如下:
计算点光源的光照,要先根据光源位置和物体表面相对位置来确定方向,然后再和平行光一样,计算光的方向和物体表面法向的夹角。
如何给物体添加点光源
真实世界中,点光源的光照强度会随着空间的距离增加而衰减。我们需要模拟一个衰减系数出来。
衰减系数等于一个常量 d0d_0d0(通常为 1),除以衰减函数 P。衰减函数可以用一个二次多项式 P 来描述,公式如下:
然后利用光线到点坐标的距离,用来计算衰减,实现如下:
点光源的衰减
衰减对比效果如下:光线强度随着距离衰减,可以右边较远的几何体几乎没有光照。
与点光源相比,聚光灯相对来说比较复杂,要用 5 个参数来描述:
spotLightColor
聚光灯颜色spotLightPosition
聚光灯位置spotLightDecayFactor
聚光灯衰减系数spotLightDirection
聚光灯方向spotLightAngle
聚光灯角度利用聚光灯方向和角度,就可以求法向量与光线方向夹角的余弦值,这个值可以判断坐标是否在夹角内,最终的光照效果就只会出现在光照的角度内。
如何给物体添加聚光灯效果
大致的效果如下:可以明显的感受到聚光灯的效果