光照與霧化
標(biāo)準(zhǔn)光照模型是局部模型中的一種----即當(dāng)處理一個物體時,不考慮其他物體的影響。物體也不向別的物體投下影子,實際上,物體自身無法生成影子,影子是使用全局光照模型生成的。
色彩的數(shù)學(xué)
計算機中的色彩常用RGB色彩模型表示,這里R表示紅,G表示綠,B表示藍(lán),其精度因平臺與渲染狀態(tài)而異。我們視RGB為0至1間的值,并且也不考慮其中各分量到底占用多少二進(jìn)制位。在計算機圖形學(xué)中,色彩常被視為數(shù)學(xué)實體。我們用黑體的小寫羅馬字母表示色彩符號,如c,與向量符號相同,但由于二者上下文不同,所以不會混淆。
可以認(rèn)為色彩存在于一個3D單位立方體"色彩空間"中,如圖15.7所示:

黑、白兩色十分重要,分別由RGB(0, 0, 0)和(1, 1,
1)表示,并且用特殊的符號0、1分別標(biāo)識,灰色都在黑白色之間的那條連線上。
色彩可以加、減、乘以標(biāo)量,和向量運算一樣。兩個色彩也可以作"按位乘"運算,運算記作
。
色彩運算有時會使一個或多個RGB分量超出[0, 1]的界限(比如,計算光照時,出現(xiàn)極強的光亮),此時簡單地加以截斷。根據(jù)情況,也許在計算中每一步都進(jìn)行截斷,也許中間允許超界,而在最后截斷。
如果只有一個分量超界,截斷運算可能會引起色彩混亂。比如,色彩(1, 2, 1)其實是(0.5,
1, 0.5)的一個更亮的表示,類似某種綠色。簡單地加以截斷后,綠色消失只剩余白色。更聰明的辦法是除以最大色彩值以單位化。此例中,均除以最大分量值2。當(dāng)然,開始時就防止越界(比如,調(diào)整光強以使越界不發(fā)生)才是最好的辦法。
光源
為進(jìn)行渲染,必須向圖形API描述場景中的光。下面是一個光源類型的簡單列表:
點光源,平行光,聚光燈,環(huán)境光。
我們將討論大多數(shù)渲染API都支持的常見光源。
點光源是向四面八方發(fā)射光線的單點,又稱全向光或球狀光。點光源有方向和色彩,此色彩同時表示色調(diào)與亮度,點光源還有一個輻射衰減半徑,控制照亮的范圍。圖15.8展示了3DS如何表示點光源。

光強通常由光源中心向輻射前進(jìn)方向不斷衰減,最終為0。點光源可代表許多常見發(fā)光物,如燈泡、電燈、火把等。
平行光是從無限遠(yuǎn)處射來的點光源的光線,場景中所有光線皆為平行的。平行光源沒有位置的概念,也無衰減。太陽是平行光的典型代表(目前還不考慮太陽的位置來渲染場景)。
聚光燈指從特定光源向特定方向射出的光,比如信號燈、車頭燈等。它們有位置、方向、甚至還有輻射距離的概念,其照亮區(qū)域為圓錐形或金字塔形。
圓形聚光燈有一個圓形的"底",其寬度由輻射衰減角給出(注意與輻射衰減距離的區(qū)別)。并且,有一個描述高亮區(qū)的內(nèi)角度,如圖15.9:

方形聚光燈形成金字塔形狀,而不是圓錐形。方形聚光燈非常有趣,因為常被用來投影圖像,比如電影放映。
最后,環(huán)境光指不屬于任何光源而照亮整個場景的光。不考慮環(huán)境光,則物體的影子將完全是黑的,因為它們不被任何光源照亮。現(xiàn)實中,這類物體常被間接照亮,環(huán)境光是積累這種間接光照最根本的方法。
標(biāo)準(zhǔn)光照方程----概述
光照方程定義了標(biāo)準(zhǔn)光照模型,用于計算單個像素的色彩。標(biāo)準(zhǔn)方程可簡寫為公式15.7:
Clit = Cspec + Cdiff
+ Camb
公式15.7 標(biāo)準(zhǔn)光照方程
其中,
(1)Clit是打開光照情況下計算顏色值的結(jié)果,這與關(guān)閉光照(注意:相當(dāng)于用最強光照照射)情況下計算的結(jié)果不同。和我們?nèi)粘I钪械?光照"一詞不同,計算機圖形學(xué)中的"光照"是指取關(guān)閉光照情況下的紋理顏色值進(jìn)行計算,一般情況下得到的結(jié)果比原紋理顏色值暗。
(2)Cspec是鏡面反射分量。
(3)Cdiff是散射分量。
(4)Camb是環(huán)境分量。
物體外觀主要取決于以下四點因素:
(1)物體表面的性質(zhì),即材質(zhì)屬性。
(2)表面的方位與朝向,朝向常用單位法向量表示。
(3)照射來的各光源性質(zhì)。
(4)觀察者位置。
方程中的三個組成部分,分別考慮了上述因子的不同組合。