三、坐標(biāo)系統(tǒng)
繪制過程的幾何處理部分可被看成應(yīng)用一系列的坐標(biāo)變換將物體數(shù)據(jù)庫變換到一系列的坐標(biāo)系下,這些坐標(biāo)系對所有繪制系統(tǒng)都是公用的,是理解3D圖形學(xué)的基礎(chǔ)。用計算機生成圖象的一系列基本操作與繪制過程要經(jīng)歷的一系列空間即坐標(biāo)系有關(guān)。隨著繪制過程的進(jìn)行處理將從一個空間進(jìn)入下一個空間。已完整地建立起描述這些變換的方法。在對物體實施變換時希望對頂點和頂點的法向量使用相同的變換矩陣。事實上,當(dāng)變換在所有方向并不相同時,頂點法向量必須采用不同的變換矩陣。由于單位法向量經(jīng)過變換之后其長度不一定仍保持不變,因而必須對其進(jìn)行重新單位化處理(單位法向量是光照計算所要求的)。
1.局部坐標(biāo)系(局部空間)
為了建模和進(jìn)行局部變換的方便可選擇被建模物體之內(nèi)或附近的某一點作為局部坐標(biāo)系的原點。例如可選擇一個立方體的某一頂點作為坐標(biāo)原點,三個坐標(biāo)軸即是與該頂點相連的立方體的三條邊。在局部坐標(biāo)系選定之后,物體各頂點的局部坐標(biāo)以及相對于該局部坐標(biāo)系的各頂點的法向量和物體上多邊形的法向量就可以被提取并存儲起來。
2.世界坐標(biāo)系(世界空間)
當(dāng)每一個物體在其局部坐標(biāo)系中被建立起來之后,就需要將其放置到將要繪制的場景之中。組成場景的每個物體都有自己獨立的局部坐標(biāo)系。整個場景的坐標(biāo)系就是所謂的世界坐標(biāo)系。場景中的所有物體都必須從自己的局部坐標(biāo)系中變換到世界坐標(biāo)系中以定義場景中物體之間的空間相對關(guān)系。如果一個物體在場景中被定義為運動的,則必須為該物體定義一個隨時間變化的變換序列以便在每一幀將該物體變換到世界坐標(biāo)系中的不同位置。場景中的光源也在世界坐標(biāo)系中定義。如果光照計算是在世界空間中進(jìn)行,則對物體法向量的變換到此為止。對物體表面屬性如紋理、顏色等的定義和調(diào)整也在世界空間中進(jìn)行。
3.眼睛坐標(biāo)系、相機坐標(biāo)系或觀察坐標(biāo)系(眼睛空間)
眼睛坐標(biāo)系統(tǒng)是用來建立對世界空間進(jìn)行觀察時的觀察參數(shù)和觀察范圍的。在圖形學(xué)中通常用假想的相機來輔助對觀察系統(tǒng)的理解。一個假想的相機可以以任意方向放置在世界空間的任何位置,膠片平面在圖形學(xué)中就是觀察平面,也就是場景將投影到其上的平面。建立一個普遍適用的觀察空間相當(dāng)繁瑣,在多數(shù)情況下是對眼睛坐標(biāo)空間做許多限制。一個最小的實用系統(tǒng)可以這樣建立,首先要求眼睛坐標(biāo)系的原點和投影中心是世界坐標(biāo)系中的同一個坐標(biāo)點;其次要求觀察平面的法向量和觀察方向在眼睛空間中與Z坐標(biāo)軸重合;最后,觀察方向必須是這樣的,當(dāng)相機朝著Z軸的正向時Z值的增加將遠(yuǎn)離眼睛的位置,同時在左手坐標(biāo)系的前提下,X軸指向右,Y軸向上。滿足這一要求的系統(tǒng)就可以使假想的相機以任何觀察方向放置在世界坐標(biāo)空間中的任何位置。圖2 是有關(guān)坐標(biāo)系之間的關(guān)系。
眼睛坐標(biāo)系是最適宜做背面刪除的空間。背面刪除操作是將背對觀察者的多邊形全部剔除,在場景中這些多邊形對于觀察者來說是不可見的。如果對一個凸物體做背面刪除,則可以完全解決其隱藏面問題。對于具有凹面的物體而言這一操作并不能解決隱藏面問題。背面刪除操作是通過計算多邊形所在平面的法向量與視線向量之間的夾角來決定該平面是否可見。如果這兩個向量的點積大于0,意味著其夾角小于90o 即該多邊形是可見的,否則為不可見。視線向量是從多邊形指向視點的向量。多邊形平面的法向量可通過其不共線的三個頂點計算而得。多邊形的法向量必須指向物體的外部,為保證這一點,多邊形的頂點必須以反時針方向(從多邊形外部看時)順序存儲。如圖3所示。
4.屏幕坐標(biāo)系(屏幕空間)
屏幕空間是比較難于靠直覺理解的一種空間概念。它是描述如何觀察場景的方法的過程,與透視幾何有關(guān),也可以理解為怎樣定義場景中能夠到達(dá)眼睛(或相機)的光線的過程。將場景中的一個點投影到距離視點為D的觀察平面或屏幕要用到的基本變換是透視變換,屏幕或觀察平面的法向與觀察方向一致。從圖4可以看到,運用相似三角形原理,點P在屏幕上的投影P’(Xs= Dxe/Ze, ys=Dye/Ze)。屏幕與觀察平面略有不同,屏幕是觀察平面上的一塊矩形區(qū)域,在經(jīng)過一個與設(shè)備有關(guān)的變換之后,可以從觀察平面坐標(biāo)求得屏幕坐標(biāo)。屏幕空間的定義使得其只對一個封閉空間中所包圍的場景進(jìn)行繪制處理,這個封閉的空間稱作視錐臺。它可以這樣來描述:設(shè)想在距離視點D處的觀察平面上有一尺寸為2h的正方形窗口,且該窗口關(guān)于觀察方向是對稱的,則平面
xe=±hze/D ye=±hze/D
ze=D ze=F