1. 程式人生 > >問題六十八:著色模型(shading model)(1)——反射模型(reflection model)(1)——概述

問題六十八:著色模型(shading model)(1)——反射模型(reflection model)(1)——概述

“反射模型”和“光照模型”

這兩個概念好像經常被等價使用。作者為了更好理解其他相關概念,對“反射模型”和“光照模型”做如下區分:(將“光反射”分成三個部分:入射光、入射光和表面的相互作用、反射光)

“光照模型”:模擬的是“入射光”。研究的是入射光的組成。影響入射光的因素有:環境光的屬性、光源的屬性。

“反射模型”:模擬的是“入射光和表面的相互作用”。研究的是入射光是怎麼和表面相互作用變成反射光的。影響反射光的因素有:入射光的屬性、表面的物理屬性。

咱先學習反射模型。

學習反射模型的思路是這樣的:

第一步,概述。對反射光建立感官上的認識。最重要的是明白:反射光是由漫反射光和鏡面反射光兩部分組成。(注意是“兩部分”不是“兩類”,意思是任何反射光中都同時包含漫反射光和鏡面反射光)。

第二步,反射原理。分析漫反射的原理,模擬漫反射光;分析鏡面反射,模擬鏡面反射光。

第三步,BRDF引入輻射學的概念,用BRDF來描述物體表面對光的反射特性。

第四步,C++實現。用C++分別實現表面對光的漫反射BRDF和鏡面反射的BRDF,然後根據各自的BRDF和入射光得到各自的反射光。

概述。先看一張圖:


該圖說明如下幾個問題:

1,反射光是由兩部分組成:漫反射光、鏡面反射光;

2,對於自身不發光的物體,之所以能過被看見,是因為其表面的漫反射;

3,漫反射在各個方向的反射率是一樣,是均勻反射的;

4,鏡面反射的反射率比漫反射的反射率要高得多(如上圖中紅色圈內示意),所以對應的反射光成為“高光”;

68.1.1.1 光

光由光子組成。光子具有波粒二相性。也就是說光子即具有波的特性,也具有粒子的特性。關於波的特性,我們會考慮它的波長、頻率、能量。通過觀察和測量,這三者有如下關係。


由如上關係,可以看出:

1,波長越大,頻率越小;波長越小,頻率越大。

2,一個光子的能量:頻率越大,能量越多;頻率越小,能量越少。

另外,其中波長在大概400nm到700nm之間的光是能被人眼看到的,所以,這個範圍的光成為“可見光”。不同頻率的可見光被人眼感知為不同的顏色:頻率越高的光偏藍,頻率低的光偏紅。

借圖:


我們日常見到光一般都是由多種不同頻率的光混合而成。比如說白光。當一束白光經過一個稜鏡時,由於不同頻率的光對應不同的折射率,所以會發生色散。


這個現象也證明了,白光是由多種不同頻率(顏色)混合而成。

怎麼描述這種混合光中不同頻率的光的多少呢?這個“多少”指的是該頻率的光的光子的個數。前面我們有計算一個光子的能量,所以,這個“多少”也是指該頻率的光的總能量。

我們借用“頻譜”的概念。頻率圖描述的就是混合光中各種頻率(波長)的光的能量分佈情況。頻譜圖大概長這個樣子:

68.1.1.2 光和物體表面的相互作用

光和物體相互作用時,會發生散射。對於透明物體散射分為反射和折射;對於不透明物體散射只有反射。我們這裡暫時只考慮不透明物體。


物體表面是有一定厚度的。鏡面反射發生在表面的上面,相當於光子直接從表面彈回;漫反射發生在物體的表面裡面,光子和表面裡面的原子相互作用。

上圖在畫漫反射光線時,為了突出光子和表面裡面的原子相互作用,畫的有些誇張,實際情況差不多應該是這樣子(出射點基本可以認為是一點):


估計很多童鞋會發現一個問題,為什麼鏡面反射光線會有三條????

先簡單回答一下:因為表面的上表面不是理想光學鏡面(不是特別特別特別平)。

又要重複貼圖了。如之前環境中的球。

通過漫反射光看到的是這個樣子:


通過鏡面反射光看到的是這個樣子:


通過漫反射光鏡面反射光看到的是這個樣子:


我們已經知道,反射光由漫反射光和鏡面反射光兩部分組成。

反射模型要做的事情就是:分別模擬這兩部分光的強度和方向。


未完待續~~

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.