“反射模型”和“光照模型”
这两个概念好像经常被等价使用。作者为了更好理解其他相关概念,对“反射模型”和“光照模型”做如下区分:(将“光反射”分成三个部分:入射光、入射光和表面的相互作用、反射光)
“光照模型”:模拟的是“入射光”。研究的是入射光的组成。影响入射光的因素有:环境光的属性、光源的属性。
“反射模型”:模拟的是“入射光和表面的相互作用”。研究的是入射光是怎么和表面相互作用变成反射光的。影响反射光的因素有:入射光的属性、表面的物理属性。
咱先学习反射模型。
学习反射模型的思路是这样的:
第一步,概述。对反射光建立感官上的认识。最重要的是明白:反射光是由漫反射光和镜面反射光两部分组成。(注意是“两部分”不是“两类”,意思是任何反射光中都同时包含漫反射光和镜面反射光)。
第二步,反射原理。分析漫反射的原理,模拟漫反射光;分析镜面反射,模拟镜面反射光。
第三步,BRDF。引入辐射学的概念,用BRDF来描述物体表面对光的反射特性。
第四步,C++实现。用C++分别实现表面对光的漫反射BRDF和镜面反射的BRDF,然后根据各自的BRDF和入射光得到各自的反射光。
概述。先看一张图:
该图说明如下几个问题:
1,反射光是由两部分组成:漫反射光、镜面反射光;
2,对于自身不发光的物体,之所以能过被看见,是因为其表面的漫反射;
3,漫反射在各个方向的反射率是一样,是均匀反射的;
4,镜面反射的反射率比漫反射的反射率要高得多(如上图中红色圈内示意),所以对应的反射光成为“高光”;
光由光子组成。光子具有波粒二相性。也就是说光子即具有波的特性,也具有粒子的特性。关于波的特性,我们会考虑它的波长、频率、能量。通过观察和测量,这三者有如下关系。
由如上关系,可以看出:
1,波长越大,频率越小;波长越小,频率越大。
2,一个光子的能量:频率越大,能量越多;频率越小,能量越少。
另外,其中波长在大概400nm到700nm之间的光是能被人眼看到的,所以,这个范围的光成为“可见光”。不同频率的可见光被人眼感知为不同的颜色:频率越高的光偏蓝,频率低的光偏红。
借图:
我们日常见到光一般都是由多种不同频率的光混合而成。比如说白光。当一束白光经过一个棱镜时,由于不同频率的光对应不同的折射率,所以会发生色散。
这个现象也证明了,白光是由多种不同频率(颜色)混合而成。
怎么描述这种混合光中不同频率的光的多少呢?这个“多少”指的是该频率的光的光子的个数。前面我们有计算一个光子的能量,所以,这个“多少”也是指该频率的光的总能量。
我们借用“频谱”的概念。频率图描述的就是混合光中各种频率(波长)的光的能量分布情况。频谱图大概长这个样子:
光和物体相互作用时,会发生散射。对于透明物体散射分为反射和折射;对于不透明物体散射只有反射。我们这里暂时只考虑不透明物体。
物体表面是有一定厚度的。镜面反射发生在表面的上面,相当于光子直接从表面弹回;漫反射发生在物体的表面里面,光子和表面里面的原子相互作用。
上图在画漫反射光线时,为了突出光子和表面里面的原子相互作用,画的有些夸张,实际情况差不多应该是这样子(出射点基本可以认为是一点):
估计很多童鞋会发现一个问题,为什么镜面反射光线会有三条????
先简单回答一下:因为表面的上表面不是理想光学镜面(不是特别特别特别平)。
又要重复贴图了。如之前环境中的球。
通过漫反射光看到的是这个样子:
通过镜面反射光看到的是这个样子:
通过漫反射光和镜面反射光看到的是这个样子:
我们已经知道,反射光由漫反射光和镜面反射光两部分组成。
反射模型要做的事情就是:分别模拟这两部分光的强度和方向。
未完待续~~
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]. Peter Andrew Walker, A VisualizationSystem fro Bidirectional Reflectance Distribution Functions, University ofOregon, 1999.
[5]. https://en.wikipedia.org/wiki/Phong_reflection_model
[6]. http://www.raytracegroundup.com/
[7]. http://www.realtimerendering.com/
[8]. https://en.wikipedia.org/wiki/Light
[9]. http://baike.baidu.com/subview/41199/14530220.htm