前面,我们有这么一张图:
为了突出光子和表面里面的原子相互作用,还是用画得更为夸张的图好了。(注意:只关注蓝色光线。)
关于“漫反射光”(上图中的蓝色反射光),我们先要回答两个问题:
1,物体漫反射的光为什么是特定颜色的?(所以,物体呈现不同的颜色)
2,漫反射光的方向为什么是随机的?
姑且认为上面这个球是蓝色的(其实淡紫色)。为什么白光照在蓝色球上,反射的却是蓝色的光呢?
这个就要考虑光的波的特性了,光子以一定的频率振动。我们知道波是可以共振的。在一定程度上讲,自然界中所有物质都有一个使得它达到最大振幅的频率,这个频率被称为“共振频率”。
物体表面里面的原子是以各种频率在不停振动。当振动的光子进入表面里面撞击到原子时,光子就有可能将其所带的一部分或者所有能量传递给原子。
当光子的能量刚好能够使得原子达到它的一个更高的稳定的能量级状态,那么这个光子将会被原子吸收(这个光子就没了),原子将会在更高的能量级状态上呆一段时间。一段时间后,原子就会回到它之前的能量级状态,同时释放一个能量和之前被吸收的光子相同的新的光子,然后这个新的光子从物体的表面出去了。
当光子的能量并不是那么刚好时,光子的能量会被原子吸收,然后很快以热能的方式释放。
接下来,回答之前的问题:
1,为什么白光照在蓝色球上,反射的却是蓝色的光呢?
因为:蓝光的光子的能量刚好能够使蓝色球表面里面的原子达到一个更高的稳定的能量级状态,所以,一段时间后,原子释放的新的光子是蓝光的光子。不那么刚好的光子都被原子吸收,然后以热能的方式释放了。所以,最后从表面里面出来的只有蓝光的光子。所以,漫反射光线是蓝色的。
2,漫反射光的方向为什么是随机的?
因为:新的光子出表面的方向即是原子释放光子的方向,然而原子振动是随机的,释放光子的方向是随机的,所以,漫反射光的方向是随机的。
我们已经知道,漫反射光的光子射出的方向是随机的。所以,根据概率分布,每个方向上的光子数量是相等的。所以,漫反射光在各个方向的强度是相等的。所以,在入射光强度一定的情况下,影响反射光强度的只有入射光方向向量和表面法向量的夹角了。
所以,漫反射光的强度是入射光强度、入射夹角、物体对光线的漫反射系数的函数。可以用如下式子表示:
实际计算中,以ray tracing中光线撞击物体为例:光线(对应反射光)撞击到物体,则以得到撞击点的空间坐标P、物体在撞击点出的法向量N和物体的物理属性(可以求得方程中的F);由于是漫反射,反射光方向是所有方向,所以,所有反射光线对应的入射光线的方向L都是光源位置和撞击点P的连线;入射光强度Ilj则是光源的物理属性了,找光照模型要就行了,对于反射模型而言,是已知的。所以,反射光的强度就这么求得了(注意到,入射光和F的表示中带有波长参数,所以,求得的反射光也是对应相应波长的,即反射光是有特定颜色的。)
Reference:
[1]. Kevin Suffern, Ray Tracing from theGround Up, A K Peters Ltd, 2007.
[2]. Andrew S. Glassner, An Introduction toRay Tracing, Xerox PARC, 1989.
[3]. Tomas Akenine-Moller, Eric Haines, NatyHoffman, Real-Time Rendering, A K Peters Ltd, 2008.
[4]. https://en.wikipedia.org/wiki/Phong_reflection_model
[5]. http://www.raytracegroundup.com/
[6]. http://www.realtimerendering.com/