光照與材質
光照是電腦圖形學的重要組成部分,沒有光照,任何物體看起來就象是塑料作成的,還是缺少真實感。
在大自然中,光也是最重要的組成要素之一。籍於光,我們才能認識世界。能夠產生光的物體稱為光源。對人類來說,太陽就是最大、最重要的光源,其他小如燃燒的蠟燭,發光的二極體也是光源。有光就有陰影,在光照不到的地方就形成了陰影。
當光照在物體上時,不論是什麼物體,都會反射光,但是反射光的強弱和物體的屬性相關。透明的物體還會透射光,將一部分光透射出去。因為光的本質是能量,所以透射和反射的都是能量,並且任何物體都會吸收光。
(修改)反射光通常可以分成三部分:環境反射、漫反射、鏡面反射。環境反射光假定入射光均勻地從周圍環境入射至景物表面並等量地向各個方向反射出去,通常物體表面還會受到從周圍環境來的反射光(如來自地面、天空、牆壁等的反射光)的照射,這些光常統稱為環境光線(Ambient Light);漫反射分量表示特定光源在景物表面的反射光中那些向空間各方向均勻反射出去的光,這些光常稱為漫射光(Diffuse Light);鏡面反射光為朝一定方向的反射光,如一個點光源照射一個金屬球時會在球面上形成一塊特別亮的地區,呈現所謂“高光(Highlight)”,它是光源在金屬球面上產生的鏡面反射光(Specular Light)。對於較光滑物體,其鏡面反射光的高光地區小而亮;相反,粗糙表面的鏡面反射光呈發散狀態,其高光地區大而不亮。
OpenGL中的光應用分為三部分:光源屬性、材質屬性和全域光屬性。
光照也有RGBA和色彩索引表兩種模式。相對於色彩索引表模式,RGBA模式更加靈活,更少的約束。因此,RGBA模式在OpenGL中應用廣泛的多。
OpenGL光照是基於Phone光照模型的。在幾何體的每一個頂點,顏色值是由幾何體的材質屬性和光源屬性共同決定的。頂點顏色的最終值是要疊加四個分量,這四個分量就是OpenGL的四種光:環境光線(Ambient Light)、漫射光(Diffuse Light)、鏡面光(Specular Light)和輻射光(Emission Light)。
輻射光是最簡單的一種光,它直接從物體發出並且不受任何光源影響。環境光線是由情境中所有不能確定方向的光。
漫射光來自一個方向,當照射到物體上,則在各個方向上均勻地發散出去。所以,視點的位置不影響看到的漫射光的亮度。漫射光是當前光照下表現出來的最基本的部分。基本上所有的光都有漫射成分,聚焦能力越強的光,其漫射成分就越小,如雷射速,聚焦能力越弱的光,其漫射成分就越大,如手電筒發出的光。
鏡面光來自固定方向並沿另一方向反射出去,一個平行雷射束在高品質的鏡面上產生100%的鏡面反射。光亮的金屬和塑料具有很高非反射成分,而象粉筆和地毯等幾乎沒有反射成分。因此,從某種意義上講,物體的反射程度等同於其上的光強(或光亮度)。