計算機圖形學彩版第八章建模與消隱_第1頁
計算機圖形學彩版第八章建模與消隱_第2頁
計算機圖形學彩版第八章建模與消隱_第3頁
計算機圖形學彩版第八章建模與消隱_第4頁
計算機圖形學彩版第八章建模與消隱_第5頁
已閱讀5頁,還剩99頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1孔令德

建模與消隱第八章3本章學習目標柏拉圖多面體的數據結構光滑物體網格劃分的數學模型凸多面體的背面剔除算法曲面的背面剔除算法深度緩沖算法深度排序算法48.1三維物體的數據結構

8.2常用物體的幾何模型8.3消隱算法分類

8.4隱線算法

8.5隱面算法8.6本章小結

本章內容5

在二維顯示器上繪制三維圖形時,必須把三維信息經過投影變換為二維信息。由于投影變換失去了圖形的深度信息,往往導致對圖形的理解存在二義性。要生成具有真實感的圖形,就要在給定視點和視線方向之后,決定場景中物體哪些線段或表面是可見的,哪些線段或表面是不可見的。這一問題習慣上稱為消除隱藏線和消除隱藏面,簡稱為消隱。68.1三維物體的數據結構場景中經常繪制的三維物體有柏拉圖多面體PlatonicPolyhedra圓柱cylinder球sphere圓錐cone圓環(huán)torus這些物體可以采用線框模型描述,也可以采用表面模型或實體模型描述。無論使用哪種模型描述,都需要為物體建立頂點表、邊表和面表構成的數據結構。建立三維用戶坐標系為右手系Oxyz,x軸水平向右為正,y軸垂直向上為正,z軸從紙面指向觀察者。78.1.1物體的幾何信息和拓撲信息描述一個物體需要幾何信息的描述和拓撲信息的描述。因為只有幾何信息的描述,在表示上存在不惟一性。圖8-1所示的5個頂點,其幾何信息已經確定,如果拓撲信息不同,則可產生圖8-2和8-3所示的兩種不同的線框圖形。圖8-1五個頂點圖8-2五角星連線圖8-3五邊形連線幾何信息:描述幾何元素空間位置的信息。拓撲信息:描述幾何元素之間相互連接關系的信息。8對物體線框信息的描述不僅包括頂點坐標,而且包括每條邊是由哪些頂點連接而成。對于物體表面信息的描述包括每個表面是由哪些邊連接而成,或是由哪些頂點環(huán)繞而成。9.1.2三維物體的數據結構在三維坐標系下,描述一個物體不僅需要頂點表描述其幾何信息,而且還需要借助于邊表和面表描述其拓撲信息,才能完全確定物體的幾何形狀。制作多面體或曲面體的旋轉動畫時,常將物體的中心假設為旋轉中心。假定立方體中心位于三維坐標系原點,立方體的邊與坐標軸平行,且每條邊的長度為2a。9立方體模型如圖8-4所示。立方體是凸多面體,滿足歐拉公式:

圖8-4立方體數學模型(8-1)式中:V是多面體的頂點數,F(xiàn)是多面體的面數,E是多面體的邊數V+F-E=210表8-1立方體頂點表頂點x坐標y坐標z坐標V0x0=-ay0=-az0=-aV1x1=ay1=-az1=-aV2x2=ay2=az2=-aV3x3=-ay3=az3=-aV4x4=-ay4=-az4=aV5x5=ay5=-az5=aV6x6=ay6=az6=aV7x7=-ay7=az7=a表8-1,記錄了立方體頂點的幾何信息。11表8-2立方體邊表邊起點終點E0V0V1E1V1V2E2V2V3E3V3V0E4V4V5E5V5V6E6V6V7E7V7V4E8V0V4E9V1V5E10V2V6E11V3V7邊表8-2記錄了每條邊的頂點索引號,即邊的拓撲信息。12表8-3立方體面表面第1條邊第2條邊第3條邊第4條邊說明F0E4E5E6E7前面F1E0E3E2E1后面F2E3E8E7E11左面F3E1E10E5E9右面F4E2E11E6E10頂面F5E0E9E4E8底面面表8-3記錄了立方體每個面上邊的索引號,即面的拓撲信息138.1.3物體的表示模型

線框模型是計算機圖形學中表示物體最早使用的模型。線框模型使用頂點和棱邊來表示物體,就如同用邊線搭出的框架一樣,線框模型中沒有表面、體積等信息。線框模型只使用頂點表和邊表就可以完全描述其數據結構。圖8-5所示為立方體線框模型。優(yōu)點:可產生任意方向視圖,視圖間保持正確的投影關系。缺點:所有棱邊全繪制出來,易產生二義性,如圖8-6所示。線框模型14圖9-5立方體線框模型圖9-6線框模型二義性15

表面模型是使用物體外表面的集合來定義物體,就如同在線框模型上蒙了一層外皮。表面模型仍缺乏體的概念,是一個物體的外殼。與線框模型相比,表面模型增加了一個面表,用以記錄邊與面之間的拓撲關系。優(yōu)點:表面模型的優(yōu)點是可以進行面著色,隱藏面消隱,以及表面積計算,有限元網格劃分等。缺點:無法進行實體之間的并交叉運算。圖8-7表示的是雙三次Bezier曲面的網格模型(meshmodel)。圖8-8表示的是雙三次Bezier曲面的表面模型。2.表面模型16圖8-7雙三次Bezier線框模型圖8-8雙三次Bezier表面模型17

實體模型是在封閉的表面模型內部進行了填充,有了如體積和重量等特性,能反映立體的真實性,立體才具有“體”的概念。它的內部和外部的概念,定義了在表面模型的哪一側存在實體。它的表面有正面和反面之分。如圖8-9所示。

3.實體模型圖8-9立方體表面模型(a)正面(b)反面用有向棱邊隱含地表示表面的外法向量方向。常用右手準則定義,拓撲合法的物體在相鄰兩個面的公共邊界上,棱邊的方向正好相反,如圖9-10所示。圖8-10立方體實體模型

實體模型與表面模型數據結構的差異是將面表的頂點索引號按照從物體外部觀察的逆時針方向的順序排列,就可確切地分清體內與體外。

實體模型、線框模型和表面模型的根本區(qū)別在于其數據結構不僅記錄了頂點的幾何信息,而且記錄了線、面、體的拓撲信息。常用的實體造型方法主要有:邊界表示法(boundaryrepresentation,B-rep)構造表示法(constructivesolidgeometry,CSG)B-rep用表面、棱邊、頂點等物體的邊界信息來表示物體。CSG通過基本體素的交、并、差來來構造復雜物體。20

一般情況下,用頂點表、邊表和面表3張表可以方便地檢索到物體的任意一個頂點、任意一條邊和任意一個表面,且數據結構清晰。

實際建模中,實體模型采用了有向棱邊,相鄰兩個表面上共享的一條棱邊的定義方向截然相反,導致無法確定棱邊的頂點連接順序,因而放棄邊表。物體的線框模型、表面模型以及實體模型都統(tǒng)一到只使用頂點表和面表兩種數據結構來表示。要求面表中按照表面法矢量向外的方向遍歷多邊形頂點索引號,表明處理的是物體的正面。僅用頂點表和面表表示物體數據結構的缺點是物體的每條棱邊都要被重復地繪制2次。本章將采用B-rep來建立柏拉圖多面體和常用曲面體的幾何模型。8.1.4雙表數據結構在雙表結構中,立方體的頂點表依然使用表8-1。圖8-11所示為表8-4所示立方體的表面展開圖。圖8-11立方體表面展開圖

每個表面的第一個頂點索引號取最小值。例如立方體的“前面”F0按照表面外法矢量的右手法則確定頂點索引號,可以有4種結果:4567、5674、6745和7456,最后約定4567作為“前面”F0的頂點索引號。

表8-4立方體面表面頂點1頂點2頂點3頂點4說明F04567前面F10321后面F20473左面F31265右面F42376頂面F50154底面238.2常用物體的幾何模型場景中常用的物體有柏拉圖多面體(platonicpolyhedra)以及球體(sphere)、圓柱體(cylinder)、圓錐體(cone)、圓環(huán)體(torus)等曲面體(curvedsurface)。

通過建立物體的幾何模型,可以很容易地獲得物體的頂點表和面表數據結構。

建立三維用戶坐標系為右手系{O;x,y,z},x軸水平向右為正,y軸垂直向上為正,z軸指向觀察者。248.2.1多面體正多面體只有正四面體、正六面體、正八面體、正十二面體和正二十面體5種,如圖8-12所示,表8-5給出了其幾何信息。這五種多面體統(tǒng)稱為柏拉圖多面體。

柏拉圖多面體屬于凸多面體,是計算機圖形學中表示最多的物體。在幾何學中,若一種多面體的每個頂點均能對應到另一種多面體每個面的中心,二者互稱為對偶多面體。對偶多面體具有相同的邊數E,且一個多面體的頂點數V等于對偶多面體的面數F。正四面體的對偶多面體依然是正四面體,正六面體與正八面體互為對偶多面體,正十二面體與正二十面體互為對偶多面體,如圖8-13所示。25圖8-12柏拉圖多面體表8-5柏拉圖多面體幾何信息統(tǒng)計正多面體正四面體正六面體正八面體正十二面體正二十面體頂點數V4862012邊數E612123030面數F4681220表面的形狀正三角形正方形正三角形正五邊形正三角形26圖8-13柏拉圖多面體對偶多面體271.正四面體在一個立方體的相對兩個表面上,取兩條不共面的面對角線V0V2和V1V3,再將這兩條對角線的四個端點兩兩相連,便得到一個正四面體V0V1V2V3。此立方體被稱為正四面體的伴隨立方體,如圖8-14所示。圖8-14正四面體幾何模型28正四面體的外接球與其伴隨立方體的外接球是同一個球;正四面體外接球的直徑就是立方體的對角線。假設立方體的邊長為2a,它的頂點坐標為(±a,±a,±a),令正四面體的V0點為(a,a,a),可以得到正四面體的頂點表,見表8-6。表8-6正四面體頂點表頂點x坐標y坐標z坐標V0x0=ay0=az0=aV1x1=ay1=-az1=-aV2x2=-ay2=-az2=aV3x3=-ay3=az3=-a29表8-7正四面體面表面頂點1頂點2頂點3面頂點1頂點2頂點3F0123F2013F1032F3021圖8-15正四面體表面展開圖根據圖8-15所示的正四面體表面展開圖可以得到正四面體的面表,見表8-7。302.正八面體設正八面體的外接球面的半徑為r,6個頂點都取自坐標軸,并且兩兩關于原點對稱,如圖8-16所示,頂點表見表8-8。根據圖8-17所示的正八面體展開圖可以得到正八面體的面表,見表8-9。圖8-16正八面體幾何模型31表8-8正八面體頂點表頂點x坐標y坐標z坐標V0x0=0y0=rz0=0V1x1=0y1=-rz1=0V2x2=ry2=0z2=0V3x3=0y3=0z3=-rV4x4=-ry4=0z4=0V5x5=0y3=0z5=r32面頂點1頂點2頂點3面頂點1頂點2頂點3F0045F4154F1052F5125F2023F6132F3034F7143表8-9正八面體面表圖8-17正八面表面展開圖33建立正十二面體的坐標系如圖8-18所示。三個互相垂直的矩形是黃金矩形。黃金矩形就是矩形的短邊與長邊之比為,被稱為黃金分割數。黃金矩形的頂角位于正二十面體的十二個頂點上,根據對偶性,黃金矩形的頂角位于正十二面體的十二個表面的中心點。設黃金矩形的短邊半邊長為b,則黃金矩形的長邊半邊長為a=b/。

3.正十二面體正十二面體有20個頂點、30條邊和12個面,每個面為正五邊形。正十二面體的對偶多面體是正二十面體。34圖8-18正十二面體幾何模型35表8-10為正十二面體的頂點表。頂點x坐標y坐標z坐標V0x0=ay0=az0=aV1x1=a+by1=0z1=bV2x2=ay2=-az2=aV3x3=0y3=-bz3=a+bV4x4=0y4=bz4=a+bV5x5=a+by5=0z5=-bV6x6=ay6=az6=-aV7x7=by7=a+bz7=0V8x8=-by8=a+bz8=0V9x9=-ay9=az9=-a表8-10正十二面體頂點表接下頁36頂點x坐標y坐標z坐標V10x10=0y10=bz10=-a-bV11x11=ay11=-az11=-aV12x12=by12=-a-bz12=0V13x13=-by13=-a-bz13=0V14x14=-a-by14=0z14=bV15x15=-ay15=az15=aV16x16=-ay16=-az16=-aV17x17=0y17=-bz17=-a-bV18x18=-ay18=-az18=aV19x19=-a-by19=0z19=-b37根據圖8-19所示的正十二面體表面展開圖可以得到正十二面體的面表,見表8-11。圖8-19正十二面體表面展開圖38表8-11正十二面體面表面頂點1頂點2頂點3頂點4頂點5F0078154F1610987F215670F31212115F41112131617F523181312F604321F734151418F851117106F9910171619F1089191415F111318141916394.正二十面體正二十面體有12個頂點、30條邊和20個面。每個表面為正三角形。正二十面體的對偶多面體是正十二面體。圖8-20中三個黃金矩形兩兩正交,這些矩形的頂角是正二十面體的十二個頂點。圖8-20使用黃金矩形定義的正二十面體40設黃金矩形的長邊半邊長為a,則黃金矩形的短邊半邊長為b=a×。把每一個黃金矩形與一個二維坐標面重合,可以得到表8-12所示的頂點表。表8-12正二十面體頂點表頂點x坐標y坐標z坐標頂點x坐標y坐標z坐標V0x0=0y0=az0=bV6x6=by6=0z6=aV1x1=0y1=az1=-bV7x7=-by7=0z7=aV2x2=ay2=bz2=0V8x8=by8=0z8=-aV3x3=ay3=-bz3=0V9x9=-by9=0z9=-aV4x4=0y4=-az4=-bV10x10=-ay10=bz10=0V5x5=0y5=-az5=bV11x11=-ay11=-bz11=041根據圖8-21所示的正二十面體表面展開圖可以得到正二十面體的面表,見表8-13。圖8-21正二十面體表面展開圖42表8-13正二十面體面表面頂點1頂點2頂點3面頂點1頂點2頂點3F0062F10189F1263F11348F2365F12354F3567F134511F4076F1471011F5238F150107F6128F164119F7021F17498F80110F185711F91910F1991110438.2.2曲面體多面體沒有連續(xù)方程表示形式,用頂點表和面表直接給出數據結構定義。對于球體、圓柱體、圓錐體、圓環(huán)體等光滑物體,表面已有確定的參數方程表示形式。

繪制曲面體時,需要進行網格劃分,即將光滑曲面離散為平面多邊形來表示,這些多邊形一般為平面三角形或四邊形網格。隨著網格單元數量的增加,多邊形網格可以較好地逼近光滑曲面。曲面體的網格頂點表和面表由參數方程離散后計算得到。441.球體球心在原點,半徑為r的球面三維坐標系如圖8-22所示。球面的參數方程表示為(8-2)圖8-22球面的幾何模型45假定將球面劃分為n1=4個緯度區(qū)域,n2=8個經度區(qū)域。則緯度方向的角度增量和經度方向的角度增量均為α=β=45°,示例球面的網格模型如圖8-23所示。

圖8-23示例球面

46球面共有(n1-1)*n2+2=26個頂點。頂點索引號為0~25。北極點序號為0,然后從z軸正向開始,繞y軸按逆時針方向確定位于第一條緯度線上與各條經度線相交的點,如圖9-28和圖9-29所示,最后一個頂點為南極點。北極點坐標為V0(0,r,0),南極點坐標為V25(0,-r,0)。圖8-22北半球頂點編號

圖8-23南半球頂點編號47面表用二維數組定義,第一維表示緯度自北極向南極遞增的方向,第二維表示在同一緯度線上從z軸正向開始,繞y軸的逆時針方向。如圖8-26和圖8-27所示。所有網格的頂點排列順序應以小面的法線指向球面外部的右手法則為準。圖8-26北半球表面編號圖8-27

南半球表面編號48球面網格化的方法稱為地理劃分法。地理劃分法預先定義了球面的南北極,使得靠近“南北極”的三角形網格變小,有聚集的趨勢,而靠近“赤道”的三角極網格變大,有擴散的趨勢。如圖8-28所示。圖8-28球面地理劃分法效果圖49另一種球面劃分法是遞歸劃分法。首先繪制正二十面體(或正八面體),對每個等邊三角形網格,計算每條邊的中點,中點之間使用直線段連接,如圖8-29所示。這樣一個等邊三角形網格就由4個更小的等邊三角形網格來代替。最后把新生成的3個中點所表示的位置矢量單位化,并將此單位矢量乘以球體的半徑,這相當于將新增加的中點拉到球面上。如此細分下去,直到精度滿足要求為止。圖8-29等邊三角形的遞歸劃分正二十面體的遞歸過程如圖8-30所示。(a)n=0(b)n=1(c)n=2(d)n=3圖8-30不同遞歸深度的正二十面體遞歸劃分法效果圖512.圓柱體假定圓柱的中心軸與y軸重合,橫截面是半徑為r的圓,圓柱的高度沿著y軸方向從0拉伸到h,三維坐標系原點O位于底面中心,如圖8-31所示。如果不考慮頂面和底面,圓柱側面的參數方程為圖8-31圓柱面的幾何模型(8-3)

52假定圓柱的周向網格數n1=8,縱向網格數n2=3,示例圓柱面的網格模型如圖8-32所示。圓柱網格模型的頂點表的頂點數為:n1×(n2+1)+2=34。頂面和底面各有8個三角形網格,側面有24個四邊形網格,圓柱網格模型的面表的面片總數為40。

圖8-32示例圓柱面柱頂面和底面各有8個三角形網格,如圖8-33和圖8-34所示。

圖8-34圓柱頂面的網格劃分圖8-33圓柱底面的網格劃分側面有24個四邊形網格,如圖8-35所示。圖8-35圓柱側面的網格劃分適當加大周向和縱向劃分的網格數,圓柱面網格模型趨向光滑,圓柱面網格模型的透視投影效果如圖8-36所示。圖8-36圓柱面網格模型效果圖563.圓錐體假定圓錐的中心軸與y軸重合,橫截面的最大半徑為r,橫截面的最小半徑為0,圓錐的高度沿著y軸方向從0拉伸到h,三維坐標系原點O位于底面中心,如圖8-37所示。如不考慮底面,圓錐側面的參數方程為(8-4)圖8-37圓錐面的幾何模型57假定圓錐的周向網格數n1=8,縱向網格數n2=3,示例圓錐面的網格模型如圖8-38所示。圓錐網格模型的頂點總數為:n1×n2+2=26。圓錐網格模型的面片總數為:n1×(n2+1)=32。圖8-38示例圓錐面圓錐底面使用三角形網格逼近,如圖8-39所示。示例圓錐面?zhèn)让娴捻旤c編號如圖8-40所示。圖8-39圓錐底面的網格劃分圖8-40圓錐側面的三角形網格劃分示例圓錐面?zhèn)让娴谋砻婢幪柸鐖D8-41所示。圖8-41圓錐側面的四邊形網格劃分604.圓環(huán)圓環(huán)面由一個在xOy面內偏置的圓周繞y軸進行旋轉掃掠而成,如圖8-43所示。環(huán)體半徑為r1,截面半徑為r2。圖8-43偏置圓周掃掠成圓環(huán)面61建立右手用戶坐標系{O;x,y,z},原點O位于圓環(huán)中心,x軸水平向右,y軸垂直向上,z軸指向觀察者。圓環(huán)在xOz坐標面內水平放置。沿著環(huán)體的中心線建立右手動態(tài)參考坐標系{O’;x’,y’,z’},O’點位于環(huán)體的中心線上,x’軸沿著矢徑O’O的方向向外,y’軸與y軸同向,z’軸沿著環(huán)體中心線切線的順時針方向,如圖8-44所示。圖8-44圓環(huán)面的幾何模型62圓環(huán)面的參數方程為(8-5)示例圓環(huán)面的網格模型如圖8-45所示圖8-45示例圓環(huán)面圓環(huán)面的頂點總數n1×n2=36個,頂點索引號為0~35。沿z軸正向的橫截面與圓環(huán)面交為正六邊形,頂點從y軸正向開始繞圓環(huán)中心線順時針計數,第一圈為V0~V5,如圖8-46所示。圖8-46示例圓環(huán)面的橫截面左視圖沿圓環(huán)周向繞y軸逆時針旋轉,每隔60°劃分一個圓環(huán)網格,圓環(huán)劃分后的每個網格為平面四邊形,網格模型的面片總數為n1×n2=36。圓環(huán)面的頂點編號和表面編號如圖8-47所示。圖8-47圓環(huán)面的頂點和表面劃分適當加大周向和縱向劃分的網格數,圓環(huán)面網格模型趨向光滑,圓環(huán)網格模型的透視投影效果如圖8-48所示。(a)狀態(tài)1(b)狀態(tài)2圖8-48圓環(huán)面的網格模型效果圖66根據消隱方法的不同,消隱算法可分為兩類:(1)隱線算法。用于消除物體上不可見的邊界線。隱線算法主要是針對線框模型提出的,它只要求畫出物體的各可見棱邊,如圖8-49所示。(2)隱面算法。用于用于消除物體上不可見的表面。隱面算法主要是針對表面模型提出的,一般不繪制物體的可見棱邊,只繪制物體的各可見表面,如圖8-50所示。8.3消隱算法分類

圖8-49隱線算法圖8-50隱面算法67計算機圖形學的創(chuàng)始人Sutherland根據消隱空間的不同,將消隱算法分為3類:(1)物體空間法。物體空間消隱算法主要在三維觀察空間中完成。根據模型的幾何關系來判斷哪些表面可見,哪些表面不可見。(2)圖像空間法。圖像空間消隱算法主要在物體投影后的二維圖像空間中利用幀緩沖信息確定哪些表面遮擋了其它表面。圖像空間法受限于顯示器的分辨率。(3)物像空間法。在描述物體的三維觀察空間和二維圖像空間中同時進行消隱。688.4隱線算法8.4.1凸多面體消隱算法

對于凸多面體的任一個面,根據其外法矢量和視矢量的夾角θ來進行可見性檢測。如果兩個矢量的夾角0°≤θ≤90°時,表示該表面可見,繪制邊界線

;如果90°<θ≤180°時,表示該表面不可見,不繪制邊界線

圖8-51

凸多面體消隱原理以圖8-51所示的立方體為例來進行具體說明。通過各個表面的三維頂點坐標,可以計算該表面的外法矢量。對于“前面”V4V5V6V7,取V4點為參考點。該點的外法矢量70前面的外法矢量可以表示為:式中,i,j,k為三維坐標系的標準單位矢量(8-6)給定視點位置球面坐標為Ov(

),,其中:R為視徑,

,

。視矢量從多邊形的參考點V4的指向視點,視矢量分量的計算公式為:視矢量表示為:(8-7)i,j,k為三維坐標系的標準單位矢量71表面外法矢量和視矢量的數量積為:將外法矢量N和視矢量S單位化為n和s,則有可見cosθ的正負取決于表面的單位外法矢量和單位視矢量的數量積:(8-8)凸多面體表面可見性檢測條件如下:當0°≤θ<90°時,表面可見,畫出表面多邊形邊界。當θ=90°時,表面多邊形退化為一條直線,繪制結果為一段直線;當90°<θ≤180°時,表面不可見,不繪制該多邊形邊界。將作為繪制可見表面邊界的基本條件。由于剔除了背向視點的不可見表面,只繪制朝向視點的可見表面,因此本算法也被稱為背面剔除算法。立方體消隱前的線框模型透視投影如圖8-52(a)所示,消隱后的線框模型透視投影如圖8-52(b)所示,

(a)消隱前(b)消隱后圖8-52立方體透視投影74圖8-53-圖8-56所示為柏拉圖多面體的虛線消隱效果圖。圖8-53立方體虛線消隱透視投影圖8-54正八面體虛線消隱透視投影圖8-55正十二面體虛線消隱透視投影

圖8-56正二十面體虛線消隱透視投影

759.4.2曲面體消隱算法曲面體可以采用有限單元法劃分為若干個小網格區(qū)域。常用的方法是采用三角形網格或四邊形網格來逼近曲面,這樣曲面體消隱的主要工作就是確定各三角形網格或四邊形網格的可見性。即利用網格的外法矢量與視矢量的數量積來進行可見性檢測。以球面的消隱為例來講解曲面體的隱線算法,球面方程表示為式(8-2)。76

球面可采用參數曲線簇與參數曲線簇所構成的四邊形經緯網格來表示,如圖8-57所示。圖8-57球面的經緯網格77設相鄰的兩條緯線分別為0、1,

相鄰的兩條經線分別為0、1,

則四邊形平面片V0V1V2V3各點的坐標為:V0(0,0)、V1(1,0)、V2(1,1)、V3(0,1)。以V1V0和V2V0為邊矢量,計算四邊形平面片的V0V1V2V3外法矢量為:給定視點位置球面坐標表示為:(,,)78對于四邊形網格V0V1V2V3的參考點V0(0,0),視矢量分量的計算公式為式中,R為視點的矢徑,和為視點的位置角。r為球面的半徑,0和0為球面上一點V0的位置角。四邊形網格V0V1V2V3的參考點V0(0,0)的法矢量N的計算方法與凸多面體類似。球面上V0(0,0)點的平均外法矢量可以使用該點的位置矢量代替。79將法矢量N規(guī)范化為單位矢量n,視矢量S規(guī)范化為單位矢量s,有球面網格四邊形平面片可見性檢測條件為:當繪制該網格邊界。球面消隱前的線框模型透視投影如圖8-58(a)所示,北極點和南極點同時繪制出來,無法確認究竟是北極點朝向讀者還是南極點朝向讀者。80使用背面剔除算法后,可以看出圖8-58(a)中球面的北極點朝向讀者,如圖8-58(b)所示。

圖8-58球面網格透視投影(a)消隱前(b)消隱后818.5隱面算法隱面算法從視點的角度觀察物體的表面,離視點近的表面的投影遮擋了離視點遠的表面的投影,屏幕上的繪制結果為所有可見表面最終投影的集合。2.深度緩沖器算法表面消隱的最常用方法有兩種1.深度排序算法在屏幕上先投影離視點遠的表面,再投影離視點近的表面,后繪制的表面遮擋了先繪制的表面,稱為深度排序算法。使用緩沖器記錄了物體表面在屏幕上投影所覆蓋范圍內的全部像素的偽深度值,依次訪問屏幕范圍內物體表面所覆蓋的每一像素,用深度小的像素點顏色替代深度大的像素點顏色,就可以實現(xiàn)面消隱,稱為深度緩沖器算法。828.5.1深度緩沖器算法

1.算法原理

深度緩沖器算法于1974年由Catmull提出,屬于圖像空間消隱算法。在觀察空間內不對物體表面的可見性進行檢測,在圖像空間中根據每個像素的深度值確定最終繪制的物體表面上各個像素的顏色。也稱為Z-Buffer算法。EdwinEarlCatmull83建立8-59所示的三維屏幕坐標系,原點Os位于屏幕客戶區(qū)中心,xs軸水平向右為正,ys軸垂直向上為正,zs軸指向屏幕內部,{O;xs,ys,zs}成左手坐標系。設視點位于zs軸負向,視線方向沿著zs軸正向,指向xsOsys坐標面。圖8-59三維屏幕坐標系84圖8-59中所示為立方體的透視投影圖,

對于屏幕上的投影像素(x1,y1)(x1,y1,z1)點的顏色覆蓋(x1,y1,z2)點的顏色。像素(x1,y1)的最終顯示顏色為“前面”的(x1,y1,z1)點的顏色。由于z1<z2,(x1,y1,z1)點離視點近,(x1,y1,z2)點離視點遠?!扒懊妗焙汀昂竺妗痹谄聊簧希▁sOsys面)的投影坐標(x1,y1,0)相同,假定平行于zs軸的視線與立方體的“前面”交于(x1,y1,z1)點,與立方體的“后面”交于(x1,y1,z2)點。85Z-Buffer算法建立兩個緩沖器:一個是深度緩沖器,用以存儲圖像空間中每一像素點相應的偽深度值,初始化為最大偽深度值(zs坐標)。另一個是幀緩沖器,用以存儲圖像空間中的每個像素的顏色值,初始化為屏幕的背景色。Z-Buffer算法計算準備寫入幀緩沖器當前像素的偽深度值,并與已經存儲在深度緩沖器中的原可見像素的偽深度值進行比較。如果當前像素的偽深度值小于原可見像素的偽深度值,表明當前像素更靠近觀察者且遮住了原像素,則將當前像素的顏色寫入幀緩沖器,同時用當前像素的偽深度值更新深度緩沖器。否則,不作更改。862.算法描述幀緩沖器初始值置為背景色。確定深度緩沖器的寬度、高度和初始深度。一般將初始深度置為最大深度值。對于多邊形表面中的每一像素(xs,ys),計算其深度值zs(xs,ys)。將zs(xs,ys)與存儲在z緩沖器中該位置的深度值zBuffer(xs,ys)進行比較。如果zs(xs,ys)≤zBuffer(xs,ys),則將此像素的顏色寫入幀緩沖器,且用z(xs,ys)重置zbuffer(xs,ys)。873.計算偽深度若多邊形的平面方程已知,一般采用增量法計算掃描線上每一像素點的深度值。當立方體旋轉到圖8-60所示的位置時,六個表面都不與投影面xOy面平行,且每個表面頂點的三維坐標已知,這時需要根據每個表面的平面方程計算多邊形內各個像素點的深度值。圖8-60旋轉立方體視線方向88圖8-61旋轉立方體的任一表面

對于圖8-61所示的一個立方體表面V0V1V2V3,其平面一般方程為式中A,B,C是該平面法矢量N的坐標,(8-10)即89根據多邊形表面頂點的坐標可以計算出兩個邊矢量矢量矢量根據兩個邊矢量的叉積,可求得表面的法矢量N,得到系數A,B,C將A、B、C和點(x0,y0,z0)代入方程(8-10),得(8-11)90這樣,從式(8-10)可以得到當前像素點(xs,ys)處的深度值(8-12)如果C=0,說明多邊形表面的法矢量與zs軸垂直,在xsOsys面內的投影為一條直線,在算法中可以不予以考慮。如果已知掃描線yi與多邊形表面的投影相交,左邊界像素(xi,yi)的深度值為zs(xi,yi),其相鄰點(xi+1,yi)處的偽深度值為zs(xi+1,yi)。(8-13)令:偽深度步長為91式(8-13)寫為

(8-14)式(8-14)可以根據掃描線上前一個像素點的偽深度值計算出后續(xù)所有像素點的深度值。同一掃描線上的偽深度增量可由一步加法完成。對于下一條掃描線y=y(tǒng)i+1,其最左邊的像素點坐標的x值為(8-15)式中,k為有效邊的斜率。4.匹配深度緩沖器下標對于場景中的單個物體,一般將其回轉中心放在屏幕坐標系原點,也即位于屏幕客戶區(qū)中心,屏幕客戶區(qū)如圖8-62中白色矩形所示。圖8-62中灰色矩形代表寬度為w,高度為h的深度緩沖器。圖8-62匹配深度緩沖器數組的下標93深度緩沖器使用二維數組實現(xiàn)。使用Z-Buffer算法消隱時,需要根據物體表面投影的二維坐標(xs,ys)去檢索深度緩沖器的zs值,而(xs,ys)的取值有正有負。為了避免深度緩沖器數組zBuffer下標的索引號為負值,二維深度緩沖器數組采用zBuffer[xs+w/2][ys+h/2]進行匹配。假設物體占據整個深度緩沖器,則滿足:-w/2≤xs≤w/2,-h/2≤ys≤h/2。此時,深度緩沖器左下角的索引號為[0][0],右上角的索引號為[w-1][h-1]。5.相對透視深度的進一步討論真實感場景中一般繪制的是三維物體的透視投影。使用深度緩沖器算法消隱時,需要在透視變換后保留物體表面頂點的偽深度坐標。設視域四棱臺的近剪切面為Near,遠剪切面為Far,透視變換公式為(8-16)式中(xv,yv,zv)為物體在觀察坐標系中的坐標,(xs,ys,zs)為物體在屏幕坐標系中的坐標。95將zv=0代入式(8-16)中,有zs=-∞。這說明,透視變換把所有通過視點的直線映射為平行于zs軸的直線。圖8-63中,透視變換把一個位于觀察坐標系中的立方體變換為屏幕坐標系內的正四棱臺。觀察坐標系中連接立方體頂點與視點的直線變成了屏

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論