3D圖形芯片的算法原理分析
注意,場(chǎng)景中的每個(gè)物體的每個(gè)三角形都要經(jīng)過以上處理過程。
四、象素處理
經(jīng)過以上一系列的變換之后,一個(gè)多邊形已變換到屏幕坐標(biāo)系下。將一個(gè)屏幕多邊形在屏幕上繪制出來就是多邊形的象素處理過程,它包括光柵化、隱藏面消除、明暗處理。光柵化、隱藏面消除、明暗處理是整個(gè)3D圖形生成過程中最內(nèi)層的處理。他們是三個(gè)二維插值過程。光柵化是用屏幕空間三角形的頂點(diǎn)坐標(biāo)插值,以求得三角形的邊所截取的三角形內(nèi)掃描線段的端點(diǎn)坐標(biāo),并進(jìn)而求得所截掃描線段上的象素坐標(biāo)。隱藏面消除則是通過對(duì)屏幕空間三角形頂點(diǎn)的深度值(Z坐標(biāo))進(jìn)行插值,從而獲得三角形內(nèi)掃描線段上每個(gè)象素的深度值。明暗處理是用同樣的方法由頂點(diǎn)光強(qiáng)求得三角形內(nèi)掃描段上每個(gè)象素的光強(qiáng)。這三種處理的算法具有相同的數(shù)學(xué)表示形式,只需將坐標(biāo)、深度或光強(qiáng)代入該方程就可以得到相應(yīng)的結(jié)果??傊?,場(chǎng)景的繪制過程可概括為:
對(duì)場(chǎng)景中的每個(gè)物體的每個(gè)多邊形做幾何變換將其變換到屏幕空間;
對(duì)多邊形內(nèi)的每一個(gè)掃描段求出其端點(diǎn)及其上每個(gè)象素的坐標(biāo);
對(duì)掃描段上的每個(gè)象素做隱藏面消除處理及明暗處理。
1.光柵化
光柵化處理通過插值求得三角形內(nèi)掃描段的x坐標(biāo)的起點(diǎn)和終點(diǎn)。問題是何處是終點(diǎn)和起點(diǎn)?當(dāng)使用實(shí)數(shù)坐標(biāo)時(shí)在象素之內(nèi)的何處進(jìn)行采樣,屏幕坐標(biāo)是取整數(shù)還是保留小數(shù)精度?這些問題如果處理得不好,就會(huì)在多邊形之間產(chǎn)生孔洞,產(chǎn)生重疊的多邊形,這會(huì)在透明效果處理時(shí)產(chǎn)生嚴(yán)重問題。如果反走樣處理不精確,則會(huì)在帶有紋理的表面上產(chǎn)生紋理不連續(xù)現(xiàn)象。例如,如果對(duì)屏幕坐標(biāo)取整,則屏幕多邊形的頂點(diǎn)將延伸或縮回到離它最近的象素,這樣多邊形的大小將發(fā)生微小的變化,而且不能用密集采樣進(jìn)行反走樣處理,動(dòng)畫中的“顫抖”現(xiàn)象便是由此而引起的。在象素內(nèi)何處采樣并不重要,重要的是對(duì)象素采樣的處理必須一致。
2.隱藏面消除
全屏幕Z-Buffer(深度緩存器)算法已成為圖形學(xué)事實(shí)上的標(biāo)準(zhǔn)隱藏面消除算法,他雖然簡(jiǎn)單但存儲(chǔ)要求很高。Z-Buffer算法可看作是工作在三維屏幕空間。每一個(gè)象素有一個(gè)二維屏幕空間坐標(biāo)( xs , ys )和由眼睛空間頂點(diǎn)的深度值插值而得到的z深度值。深度緩存器開始時(shí)被初始化為遠(yuǎn)處裁剪平面的深度,對(duì)每一個(gè)象素比較其插值得到的深度值與已存儲(chǔ)在深度緩存中( xs , ys )處的值,如果該值小于存儲(chǔ)值,則新計(jì)算的象素更靠近觀察者。這時(shí)新計(jì)算的象素的明暗處理值將覆蓋幀緩存中的舊值,深度存儲(chǔ)器中的值也換成新計(jì)算的值。深度緩存器算法對(duì)場(chǎng)景數(shù)據(jù)庫組織及場(chǎng)景復(fù)雜性沒有限制。在處理復(fù)雜場(chǎng)景或物體時(shí),應(yīng)保證足夠的深度精度。
3.明暗處理
首先計(jì)算多邊形頂點(diǎn)的明暗參數(shù),然后在多邊形平面上進(jìn)行插值。這樣繪制出的物體不但具有很強(qiáng)的三維立體感,而且消除了用于近似曲面的多邊形之間的公用邊所形成的不連續(xù)特征。實(shí)現(xiàn)這一處理方式的算法有兩種,一種稱作Gouraud明暗處理,一種稱作Phong明暗處理(均以發(fā)明者的名字命名)。這也是基于多邊形的繪制日益受歡迎的一個(gè)重要原因。Gouraud明暗處理的速度快,但不能產(chǎn)生精確的高光效果,通常用在對(duì)速度要求高的場(chǎng)合,如飛行模擬、交互式CAD應(yīng)用等。Phong明暗處理可以生成高質(zhì)量的圖像,但將耗費(fèi)龐大的硬件資源。Gouraud明暗處理僅在多邊形的頂點(diǎn)使用局部反射光照模型計(jì)算光強(qiáng),然后使用頂點(diǎn)處的光強(qiáng)通過插值求出多邊形內(nèi)
評(píng)論