着色及光線反射原理


着色英文名叫shading,在韋氏字典里的意思表達的是一個物體的明暗顏色,在圖形學中有特殊的含義,即:將材質應用於對象的過程

shading有很多種方式,這里介紹其中一種比較簡單的,叫Blinn-Phong 反射模型

我們知道,人的眼睛能看到物體表面的明暗和顏色,是因為光射到了物體上,然后反射到人的眼睛里。

反射有三種方式:高光 Specular highlights漫反射 Diffuse reflection環境光Ambient lighting

 

 

對於每一個單獨的物體,為了衡量光線的強度 ,我們定幾個參數作為輸入項,根據這幾個參數,可以得到最后的顏色。

 

 

着色點 shading point:我們假設物體表面有無數個點可以反射光,每個點為一個shading point

法線向量 n:沿物體表面,過shading point做一條切線,垂直於這條切線並向外的線,設為單位向量

光源方向向量 l:從shading point連向光源的線,設為單位向量

觀測方向向量 v:從shading point連向攝像機的線,設為單位向量

現在把高光、漫反射、環境光分別用以上參數做分析。

漫反射

 

 

我們可以認為,漫反射是光線以一定的角度直射到物體表面,均勻的反射到各個方向。 

Blinn-Phong 反射模型認為,漫反射受到3個因素疊加而成,分別是光源到物體的距離光線跟物體的角度物體的材質

光源到物體的距離

我們把光線看成一種能量,一束光外擴散,總能量不變,范圍便大,強度變低。光的強度跟距離的平方成反比

我們用I/r²表示能量到達系數,I表示光強度,r表示擴散半徑。

 

光線跟物體的角度

就像太陽的直射會造成夏季一樣,光射向物體的角度會造成物體表面單位面積的光密度不同,從而接收到的光強度不同。當角度θ越接近0°強度最大,物體越亮;越接近90°強度越小,物體越暗。

我們用max(0, n · l) 表示接收系數,n和l分別是法向量和光源向量,他們的乘積等於兩個向量的夾角cosθ的值(0°時為1,90°時為0)。max的作用是如果值為負並不會有衰減。

 

 

物體的材質

不同的材質表面吸收的光不同,導致人看到的顏色不同。

我們用kd表示材質漫反射系數

 

 

從左到右不同的材質, 同樣強度同樣角度的光照所反射的顏色不同。

 

綜上所述,可以用一個公式來表示漫反射的總顏色值:

 

 

 

 

高光

Blinn-Phong 反射模型認為,高光是一束很窄的光,只有反射向量和觀測向量非常接近時,才能被觀測到。

 

跟漫反射類似,我們可用光源到物體的距離反射向量和觀測向量的夾角物體的材質三個因素疊加形成高光。(跟漫發射不同的是,Blinn-Phong 反射模型的高光不會考慮接收強度,也就是光線跟物體的角度)。

但是由於反射向量的計算量比較大(根據入射方向和法線向量求出),Blinn-Phong 提出了一種優化方法,即法線向量n半程向量h的夾角,可以一定程度來表示R和v是否接近。

而半程向量非常好求,l + v后再做歸一化即可得。

 

這里需要注意的是,因為最后的夾角會影響到是否能觀察到高光,而用簡單的cos函數會導致能被觀測到的范圍非常大,例如當α=45°,cos並不等於0,相當於偏移45度依然能觀察到高光,顯然跟現實不太符合。這里的方法是把cos函數變成cos次方函數,通過調整次方p的值調整可見范圍。一般p的值為100~200,把可見范圍調整到3°~5°。

 

 由此可得到Blinn-Phong 反射模型下的高光公式:

 

環境光

Blinn-Phong 反射模型認為,環境光跟光源的距離、射入角度的關系不大,可以把所有所有射入的光線因素當成常量I,然后再加上物體的材質,總共2個因素。

 

因此,在Blinn-Phong 反射模型中,環境光的強度是一樣的(常量I),意味着如果物體的材質一樣,所有只有環境光反射的地方(比如背面),看起來都是平的(沒有明暗分別),不管這個地方是凹還是凸。

總結:

1.高光受光照強度入射角度(Blinn-Phong模型不考慮)、觀測角度材質系數影響;

2.漫反射受關照強度入射角度材質系數影響;

3.環境光受常數I材質系數影響。

 

高光 Specular highlights漫反射 Diffuse reflection環境光Ambient lighting三種反射疊在一起,即為最終的Blinn-Phong 反射。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM