光线跟踪是一种非常成功的生成真实感图像的算法。要研究光线跟踪算法,首先要研究各种照明模型。
这里要记住一点,物体本身是没有颜色的,你看到的一个物体的颜色是物体与入射到它表面的光线作用后射到你的眼睛里的光线(这里只考虑反射颜色,不考虑透明体的投射颜色)。也就是说,是物体关于颜色的属性(比如 对于不同波长光的反射率)刻画了物体和某个波长的光作用后能够呈现给你什么颜色。
泛光模型(ambient reflexion)
泛光模型是最简单的模型。该模型刻画得不是直接光源(如电灯,太阳)对物体照明效果的贡献,它刻画的是周围环境反射光(间接光源,如来自地面和墙壁的反射光)对物体表面照明效果贡献。其假设就是这些间接光源的综合效果是各向同性的,即任何一个方向的来自间接光源的入射光都是等强度的,同时也假设物体反射出的光也是各向同性的,即反射到各个方向的光都是等强度的。泛光模型的数学公式非常简单,即
I=Ka * Ia 其中Ka(a是下脚标)表示物体表面对泛光的反射率,Ia(a是脚标,字母I 表示强度Itensity)I是物体泛光反射强度。公式中的I和K都是有三个分量的向量,因为计算机图形学中的颜色都是由红(R)绿(G)蓝(B)三个基色按照不用的比例合成出来的。所以其实这个公式的可以写成如下公式
[R G B]=[KaR KaG KaB].[Ra Ga Ba] 即物体表面对泛光的反射率等于I与K的点积。KaR KaG KaB 取值范围是0~1(因为反射光的强度不可能大于入射光)。
如果仅用以上公式计算一个物体上每个点的光亮度,对于一个一般物体(这里"一般"指的是一个物体表面反射率处处相同),其反射的光亮度是个定值。由此渲染的出的图像几乎没有真实感,所以这个模型还不够“真实”。要想够真实,就得够复杂,就得考虑添加其他的成分,于是乎下面就有了Lambert漫