計算機圖形學(xué)-消隱課件_第1頁
計算機圖形學(xué)-消隱課件_第2頁
計算機圖形學(xué)-消隱課件_第3頁
計算機圖形學(xué)-消隱課件_第4頁
計算機圖形學(xué)-消隱課件_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

跨入計算機殿堂的入門篇計算機圖形學(xué)施智平shizhiping@第八章消隱本章內(nèi)容圖形的數(shù)據(jù)結(jié)構(gòu)消隱算法分類隱線算法隱面算法圖形的數(shù)據(jù)結(jié)構(gòu)

W.K.Giloi在其著作InteractiveComputerGraphics中提出:

ComputerGraphics=DataStructure+GraphicsAlgorithms+Language圖形的數(shù)據(jù)結(jié)構(gòu)圖形的幾何信息和拓撲信息基本圖形的數(shù)據(jù)結(jié)構(gòu)立體表示模型圖形的幾何信息和拓撲信息幾何信息:描述幾何元素空間位置的信息。拓撲信息:描述幾何元素之間相互連接關(guān)系的信息。描述一個物體不僅要有幾何信息的描述而且還要有拓撲信息的描述。因為只有幾何信息的描述,在表示上存在不惟一性。五個頂點,幾何信息已經(jīng)確定,如果拓撲信息不同,則可產(chǎn)生不同圖形基本圖形的數(shù)據(jù)結(jié)構(gòu)在三維坐標系下,描述一個物體不僅需要頂點表,而且還需要邊表和面表,才能完全表達清楚立體的數(shù)據(jù)結(jié)構(gòu)

頂點x坐標y坐標z坐標P1x1=0y1=0z1=0P2x2=0y2=az2=0P3x3=0y3=az3=aP4x4=0y4=0z4=aP5x5=ay5=0z5=0P6x6=ay6=az6=0P7x7=ay7=az7=aP8x8=ay8=0z8=a表1立方體頂點表

邊起點終點E1P1P2E2P2P3E3P3P4E4P4P1E5P5P6E6P6P7E7P7P8E8P8P5E9P1P5E10P2P6E11P3P7E12P4P8表2立方體邊表

面邊1邊2邊3邊4F1E1E4E3E2F2E5E6E7E8F3E9E8E12E4F4E10E2E11E6F5E1E10E5E9F6E3E12E7E11表3立方體面表

立體表示模型計算機三維模型的描述經(jīng)歷了線框模型表面模型實體模型的發(fā)展,所表達的幾何體信息越來越完整線框模型(WireframeModel)線框模型只是用幾何體的邊線來表示立體的外形,就如同用邊線搭出的框架一樣,線框模型中沒有表面、體積等信息。線框模型只使用頂點表和邊表兩個數(shù)據(jù)結(jié)構(gòu)描述面點之間的拓撲關(guān)系線框模型的優(yōu)點:可以產(chǎn)生任意方向視圖,視圖間能保持正確的投影關(guān)系線框模型的缺點:因為所有棱邊全部繪制出來,理解方面容易產(chǎn)生二義性線框模型不能進行兩個面的求交運算16立體線框模型表示

線框模型表示的二義性表面模型(SurfaceModel)表面模型是利用立體的外表面來構(gòu)造模型就如同在線框模型上蒙上了一層外皮,使立體具有了一定的輪廓,可以進行消隱處理與線框模型相比,表面模型增加了一個面表,用以記錄邊面之間的拓撲關(guān)系。表面模型的優(yōu)點:可以進行面著色,隱藏面消隱,以及表面積計算,有限元網(wǎng)格劃分等。缺點:表面模型仍缺乏體積的概念,

是一個立體的空殼無法進行立體之間的相交運算實體模型(SolidModel)實體模型,如同在立體表面模型的內(nèi)部進行了填充,使之具有了如體積和重量等特性,更能反映立體的真實性,這時的立體才具有“體”的概念。實體模型與表面模型的不同之處在于確定了表面的哪一側(cè)存在實體在表面模型的基礎(chǔ)上采用有向棱邊隱含地表示表面的外法矢方向,使用右手法則取向:四個手指沿閉合的棱邊方向,大拇指方向與表面外法矢量方向一致立方體實體模型表示

拓撲合法的立體在相鄰兩個面的公共邊界上,棱邊的方向正好相反實體模型只需將面表改成環(huán)表形式,就可確切地分清體內(nèi)體外實體模型和線框模型、表面模型的根本區(qū)別在于其數(shù)據(jù)結(jié)構(gòu)不僅記錄了全部幾何信息,而且記錄了全部點、線、面、體的拓撲信息實體模型常采用集合論中的并、交、差等運算來構(gòu)造復(fù)雜形體消隱算法分類無論多么復(fù)雜的空間物體,沿視線方向上都只能看到一部分表面,其余的表面背向觀察者不可見計算機圖形學(xué)的一個重要任務(wù)就是對空間物體的表面進行可見性檢測,繪制出可見邊線和表面經(jīng)過消隱后得到的圖形稱為消隱圖根據(jù)消隱方法的不同,消隱算法可分為兩類:隱線算法用于消除物體上不可見的邊界線主要針對線框模型,要求畫出物體的各可見棱邊隱面算法用于消除物體上不可見的表面主要針對表面模型,不僅要求畫出物體的各個可見棱邊,而且還要求填充各個表面隱線算法

隱面算法

計算機圖形學(xué)的創(chuàng)始人Southerland根據(jù)消隱空間的不同,將消隱算法分為三類:物空間消隱算法:在描述物體的坐標系空間中進行消隱。像空間消隱算法:在物體投影后的二維圖像空間中進行消隱。物像空間消隱算法:在描述物體的坐標系空間和圖像空間同時進行消隱。隱線算法線框模型消隱一般在物空間中進行物空間消隱算法是根據(jù)邊界線的可見性檢測條件,判斷哪些邊界線是可見的,哪些邊界線是不可見的,在屏幕上只繪制可見邊界線。凸多面體消隱算法凸多面體消隱是最簡單和最基本的情形凸多面體的性質(zhì):連接立體上不同表面的任意兩點的直線完全位于該凸多面體之內(nèi)由凸多邊形構(gòu)成,其表面要么完全可見,要么完全不可見凸多面體消隱算法的關(guān)鍵是給出測試其表面邊界線可見性的判別式對于凸多面體的任一個面,其外法矢量和視矢量的夾角θ可進行可見性檢測θ<90°時,可見;θ>90°時,不可見XYDFECANSB法向向量N

視線向量V法向向量N

法向向量N<90°<90°可見可見

不可見>90°H(xh,yh,zh)G(xg,yg,zg)E(xe,ye,ze)F(xf,yf,zf)圖-12計算表面法矢量

表面的外法線矢量面EFGH的外法線矢量N=EFEG;已知各頂點的三維坐標時,可求出各表面的外法線矢量取面EFGH上的一點E(xE,yE,zE),其外法矢量為N,視矢量為S,外法矢量和視矢量的夾角為θ借助于點F(xF,yF,zF)和點G(xG,yG,zG)來計算面的外法矢量邊矢量EF的三個分量為:EFx=xF-xE;EFy=y(tǒng)F-yE;EFz=zF-zE邊矢量EG的三個分量為:EGx=xG-xE;EGy=y(tǒng)G-yE;EGz=zG-zE;面EFGH的外法矢量為兩個邊矢量的矢量積,外法矢量的三個分量為:外法矢量表示為:給定視點位置球面坐標表示為:

其中:R為視徑,則對于前面EFGH上的E(xE,yE,zE)點的視矢量分量的計算公式為:視矢量表示為:表面外法矢量和視矢量的數(shù)量積為:cosθ的正負取決于分子(表面外法矢量和視矢量的數(shù)量積):34(3)

凸多面體表面可見性檢測條件為:當(dāng)0°≤θ<90°時

立方體表面可見,繪該表面多邊形當(dāng)θ=90°時,

表面外法矢量與視矢量垂直,立方體表面多邊形退化為一條直線,繪出該直線;當(dāng)90°<θ≤180°時,

立方體表面不可見,不繪制該多邊形。立方體消隱前的透視變換圖如圖9-13所示,消隱后的透視變換圖如圖9-14所示。圖9-13消隱前的立方體圖9-14消隱后的立方體

隱面算法物體的表面模型一般在像空間中進行消隱像空間消隱算法屬于像素級算法,以屏幕像素為采樣單位,確定投影于每一像素的可見表面顏色區(qū)域,并將可見表面顏色作為該像素的顯示顏色隱面算法主要包括:Z-Buffer算法、畫家算法、區(qū)域采樣算法等Z-Buffer算法Catmull在1974年提出了Z-Buffer算法在像空間中根據(jù)深度值確定最終繪制的立體各個表面的像素點顏色Z-Buffer算法也稱深度緩沖算法,通常x,y代表屏幕坐標,而z則用來表示立體上各個面的深度,故名Z-Buffer算法Z-Buffer算法建立三維坐標系如圖所示觀察者的視線方向沿著z軸負向,

指向xoy坐標面對于圖示立方體,z軸與立方體的前面交于(x,y,z1),與立方體的后面交于(x,y,z2)前面和后面在屏幕上的投影坐標(x,y)相同,但z1>z2,(x,y,z1)離觀察者近,(x,y,z2)離觀察者遠對于投影像素點(x,y),前面像素點(x,y,z1)的顏色將覆蓋后面像素點(x,y,z2)的顏色,顯示結(jié)果為前面像素點(x,y,z1)的RGB顏色Z-Buffer算法這樣Z-Buffer算法需要建立兩個緩沖器:深度緩沖器,用于記錄立體上每一個像素的深度值,初始化為立體的最小深度值(z坐標)幀緩沖器,用于記錄立體上每個像素點的顏色值,初始化為屏幕的背景色Z-Buffer算法Z-Buffer算法對立體的各個表面全部進行采樣,將采樣點變換到屏幕坐標系的像空間,并記錄其深度z坐標值。根據(jù)采樣點在屏幕上的投影位置,將其深度與已存儲在幀緩存器中相應(yīng)像素點處的深度值進行比較如果新采樣點的深度值大于原可見點的深度值,表明新采樣點更靠近觀察者,遮住了原采樣點,則用新采樣點處的顏色值更新幀緩存器中相應(yīng)采樣點處的顏色值,同時用新采樣點的深度值更新深度緩存器中的采樣點的深度值;否則,不作更改。41圖21深度緩沖器圖22幀緩沖器

圖20屏幕像素點Z-Buffer算法實現(xiàn)的難點是如何計算采樣點的深度值z(x,y)對圖19所示的靜止立方體,立方體前面和后面都平行于xoy坐標面,上面、下面、左面和右面四個表面皆與屏幕坐標系的xoy面垂直,立方體的投影為正方形,這時,前面和后面的深度值很容易計算,立方體的消隱結(jié)果為正方形。旋轉(zhuǎn)立方體的動態(tài)Z-Buffer消隱算法當(dāng)立方體處于圖-23所示的位置時,六個面都不與屏幕平行,需要根據(jù)每個面的平面方程計算其上各個像素點深度值,這里需要用到第四章已經(jīng)講解的有效邊表算法來訪問面上的每一個像素點進行消隱。視線方向?qū)τ趫D-24所示的立方體表面,其平面一般方程為:式中系數(shù)A,B,C是該平面的一個法矢量的坐標,即根據(jù)表面頂點的坐標值可以計算兩個邊矢量矢量矢量根據(jù)兩個邊矢量的叉積,可求系數(shù)A,B,C將A、B、C和點(x1,y1,z1)代入方程(9)從方程(9)可以得到當(dāng)前像素點(x,y)處的深度值:這里,如果C=0,說明表面的法矢量與z軸垂直,在xoy面內(nèi)的投影為一條直線,在算法中可以不予以考慮。如果已知掃描線yi與多邊形相交的像素點(xi,yi)處的深度值z(xi,yi),其相鄰點(xi+1,yi)處的深度值為z(xi+1,yi)計算出多邊形每個面上各個像素點的深度值后,就可以使用Z-Buffer算法進行消隱,旋轉(zhuǎn)立方體消隱效果如圖-25所示。使用Z-Buffer算法可以繪制帶有交叉面的立體圖形,如圖-26所示,這種圖形由于同一個面的深度值不一樣,只能使用Z-Buffer算法實現(xiàn)。圖-27所示為移動交叉面的一個組件的動態(tài)過程。49圖9-26交叉面的Z-Buffer算法圖9-27交叉面的組件可移動的Z-Buf

溫馨提示

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

評論

0/150

提交評論