計算機圖形學第八章真實感圖形生成技術_第1頁
計算機圖形學第八章真實感圖形生成技術_第2頁
計算機圖形學第八章真實感圖形生成技術_第3頁
計算機圖形學第八章真實感圖形生成技術_第4頁
計算機圖形學第八章真實感圖形生成技術_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、計算機圖形學第八章真實感圖形生成技術計算機圖形學第八章-真實感圖形生成技術2022-3-53 8.1 8.1 隱藏線面的消除隱藏線面的消除 在用計算機生成三維圖形時,形體的所有部分都將被表示,不管是可見的還是不可見的,這樣的圖形顯示出來形狀是不清楚的,甚至是不確定的。圖1(a)所示是一個通過棱邊表示的立方體的圖形,如果不消隱不易辨別。通過適當刪除不可見的隱藏部分,可以得到表示明確的圖形。圖1(b)是觀察點在立方體的前上方的消隱圖,圖1(c)是觀察點位于立方體的前下方消隱圖,消隱圖表示了明確的立體感形體。圖12022-3-54 觀察點確定后,找出并消除圖形中不可見的部分,稱為消隱。經過消隱得到的

2、圖形稱為消隱圖。 消除隱藏線和隱藏面是計算機圖形學中一個較為困難的問題,消隱算法是決定相對于空間給定位置的觀察者,哪些棱邊、表面或物體是可見的,哪些是不可見的。消隱不僅與消隱對象有關,還與觀察點、觀察方向、投影面等的設置方位有關。改變這些設置,物體上某些可見的部分將會變成不可見,某些不可見的部分又會變成可見。 雖然各種消隱算法的基本思想有所不同,但它們大多采用了排序和相關性以提高效率。排序的主要目的是區(qū)分體、面、邊、點與觀察點間幾何距離的遠近。因為一個物體離觀察點愈遠,它愈有可能被另一距觀察點較近的物體部分地或全部遮擋。消隱算法的效率在很大程度上取決于排序的效率。通常利用畫面在局部區(qū)域內的相關

3、性來提高排序過程的效率。2022-3-55 消隱算法一般可以分為兩類。如果算法是在物體所定義的空間實現(xiàn),那么這種算法稱為對象空間算法;如果算法是在物體投影后的屏幕坐標空間實現(xiàn),那么這種算法就稱為圖象空間算法。一般說來,對象空間算法有比較高的精度,而圖象空間算法在精度上受屏幕分辨率的限制,但可以方便地利用圖象空間中各種相關性獲得較高的計算效率。8.1.1 8.1.1 凸多面體的消隱算法凸多面體的消隱算法 在消隱問題中,凸多面體是最簡單情形。凸多面體是由多個凸多邊形平面包圍而成的立體,連接形體上不屬于同一表面的任意兩點的線段完全位于形體的內部。對于單個凸多面體,背向觀察點的面是不可見面,如圖2所示

4、。因此,只要判斷出這些“朝后面”,即可達到隱藏面消除的目的。2022-3-56圖2 構成多面體的每個平面都有其法線。通常規(guī)定法線的方向是由多面體的內部指向多面體的外部,稱為“外法線”。2022-3-57假定在右手坐標系中,觀察點位于原點,投影面平行于XY坐標平面,以Z軸作為深度坐標軸,視線平行于Z軸,如圖3所示,則平面外法線同Z軸方向的夾角,就是外法線同視線的夾角。很顯然,對于單個凸多面體,當外法線同視線的夾角小于90時,其平面背向觀察點為不可見面。圖32022-3-58設平面外法線同Z軸方向的夾角為,則cos為單位平面外法線矢量在Z軸上的分量。角同可見性的關系為: (1)當 090 時,co

5、s0,此面背向觀察者為不可見面。 (2)當 90 時,cos0,此面平行于Z軸,可以認為是不可見面。 (3)當 90180 時,cos0,此面朝向觀察者的,為可見面。 設平面方程為 Ax+By+Cz+D=0法向矢量為 N NAi iBj jCk k則cosC/|N N|。作為判斷依據(jù),只需要知道cos的正負號就夠了。因為|N N|恒大于 0,所以cos的符號由C決定,因此,當C0 時,為可見面。當C0時,為不可見面。2022-3-59 由于三點可以構成一個平面,和三點可以構成兩個矢量,由兩矢量的叉積可以求出平面的法線。對于凸多面體,任取構成平面多邊形的三個相鄰點P0(x0,y0,z0),P1(

6、x1,y1,z1),P2(x2,y2,z2),按右手規(guī)則確定點的順序,此時有:)()(0112120112120101yyxxyyxxyyxxyyxxC 為了決定一個凸多面體的不可見面,對于每一個面按上述公式進行計算,當C0時為不可見面。 對于單個凸多面體,該方法可判別出所有隱藏面,因為每個面或是完全可見,或是完全不可見。對于其它形體,如凹多面體或由多個物體組成的復雜形體,則還需進行更多的測試來檢查是否存在被其它面或其它物體完全或部分遮擋的表面。通常,凸多面體消隱處理可消除一半左右的隱藏面。2022-3-510凸多面體消隱演示示例:2022-3-5118.1.2 8.1.2 畫家算法畫家算法

7、畫家創(chuàng)作一幅畫的過程是先畫背景,然后畫中間景物,最后才畫近景。這樣,每一層總是在前一層的景物上覆蓋,從而解決了隱藏面或可見性問題。采用同樣的技術,首先將形體的所有面根據(jù)它們與觀察點的距離排序,然后按距離遞減順序逐個將各面顯示出來,由于當重迭時,后顯示的畫面會覆蓋先顯示的畫面,這樣就可以實現(xiàn)消除隱藏面的目的。這種隱藏面消除算法通常稱為畫家算法。 畫家算法也稱表優(yōu)先級算法或深度優(yōu)先排序算法。這種算法排序操作同時在對象空間和圖象空間完成,而在圖象空間產生消隱圖。實現(xiàn)時首先以深度優(yōu)先級進行排序,距觀察點遠的面優(yōu)先級低,近的面優(yōu)先級高,以此建立一張深度優(yōu)先級表。然后按優(yōu)先級表順序將各面送入幀緩沖器進行顯

8、示。2022-3-512 深度優(yōu)先級表的建立是動態(tài)進行的。假定觀察方向同Z軸同向,則最初可按各面的最小z值排序。但這一初步排序可能出現(xiàn)差錯,如圖4所示的情況。圖中盡管面S1的最小z值小于面S2的最小z值,但正確的順序是面S2位于面S1前。因此在實際將z值最大的面S寫入幀緩沖器之前,需與其它面比較以確定是否在Z方向存在重疊。若無重疊,則對S進行寫入,若存在重疊,則需作一些比較以決定是否有必要重新排序。如果存在兩面相交和循環(huán)遮擋,如圖5中所示的情況,這時簡單的排序是無法解決問題的,必須求交分割后再進行排序。圖4圖52022-3-513 下面給出這種算法過程的簡單描述 (1)計算各面最小z值zmin

9、,并以此值的優(yōu)先級進行排序,建立初步的深度優(yōu)先表; (2)表空結束。否則取表中深度最大的面Sn,檢查表中其它各面Sk(k=0,1,.,n-1)與Sn是否在Z方向存在重疊的關系。存在,記重疊面為Sj轉(3)。否則,將Sn寫入幀緩沖器,n=n-1轉(2); (3)檢查Sn是否遮擋Sj,不遮擋則將Sn寫入幀緩存器,n=n-1轉(2)。否則,交換Sn和Sj在表中位置,轉(2)。如果Sn和Sj已經交換過位置,則兩面交叉遮擋,轉(4); (4)用Sn和Sj的交線分割Sn為兩部分,轉(1)。 畫家算法的優(yōu)點是簡單,容易實現(xiàn),缺點是算法中的深度排序計算量大。2022-3-5148.1.3 8.1.3 深度深度

10、緩沖器算法緩沖器算法 深度緩沖器算法是一種圖象空間消隱算法。由于一般采用Z軸方向為觀察方向,沿Z軸計算深度,所以此方法也稱為z緩沖器算法。它需要兩個緩沖器,一個是深度緩沖器,用于保存表面上各象素點(x,y)所對應的深度值z,一個是刷新緩沖器,用于保存各點的屬性值。兩個緩沖器的大小與屏幕上象素點的個數(shù)相同,也與顯示器幀緩沖器的單元個數(shù)相同。 深度緩沖器算法的原理是,對一坐標(x,y),查找最小的z(x,y)值。對每一象素計算z(x,y)值并與已經存在z緩沖器中該象素的原深度值z比較。如果z(x,y)小于原z值則替換原值,同時用當前點的屬性更新原屬性。算法的最大優(yōu)點在于簡單,它可輕而易舉地處理任意

11、復雜的畫面。因為圖象空間的大小是固定的,計算量最多隨畫面復雜度線性增長。2022-3-515 深度緩沖器算法可描述如下: (1) 刷新緩沖器置成背景光強或顏色; (2) 深度緩沖器置成最大z值; (3) 以任意順序掃描各多邊形: 對于多邊形中的每一象素(x,y,z),將z(x,y)與深度緩沖器中存儲值Zbuffer(x,y) 進行比較,若z(x,y)Zbuffer(x,y),則將此點屬性寫入刷新緩沖器,且用z(x,y)重置Zbuffer(x,y); (4) 所有多邊形都處理完后,顯示消隱圖。 深度緩沖器算法便于硬件實現(xiàn)。實際上,在當今生產的大多數(shù)高檔圖形工作站,除了幀緩存外,還帶有用于消隱的深

12、度緩存,從而克服了深度緩存算法占用大量存儲單元的缺點。2022-3-5168.1.4 8.1.4 區(qū)域細分算法區(qū)域細分算法 區(qū)域細分算法也稱為Warnock算法。這種算法在圖像空間中實現(xiàn)。該算法充分利用圖形的區(qū)域連貫性,在連續(xù)的區(qū)域上確定可見線面及其屬性。它既可以用于消除隱藏線,也可以用于消除隱面,適用于解決多邊形所表示的畫面消隱問題。 區(qū)域細分算法的基本思想是,把形體投影到全屏幕窗口上,然后遞歸地分割窗口,直到窗口內僅包含單個可見面或不包含任何面。算法先檢測初始窗口是否包含圖形,如果不包含,則按背景色顯示,若窗口內只有單個面,則把該面顯示出來。否則,當窗口內含有兩個以上的面時,則把窗口等分成

13、四個小窗口,對每個小窗口再作上述同樣的處理。這樣反復地進行下去,如果窗口細分到象素大小,而窗口內仍有兩個以上的面,這時不必再繼續(xù)分割,只要取窗口內最近的可見面的顏色或所有可見面的平均色作為該象素的值。2022-3-517 細分過程如圖6所示,算法每次將區(qū)域分割為四等分,類似于組織一棵四叉樹。這樣,即使是一個1024l024分辨率的窗口被細分10次以后,也僅能使每個單元覆蓋一個象素。圖62022-3-518 窗口與多邊形面的相互關系可分為四種:內含、相交、包圍和分離。內含指的是多邊形全部落在窗口內;相交指的是多邊形一部分在窗口內,另一部分在窗口外;包圍是指窗口包含在多邊形內;分離指的是多邊形完全

14、在窗口外。四種關系如圖7所示。圖72022-3-519 我們可根據(jù)這四種關系來確定一個窗口是否需要繼續(xù)細分。若以下條件之一為真,則無須再對窗口進行細分: 所有多邊形均為窗口的分離多邊形,此時窗口內為空; 在窗口內只有一個內含多邊形; 窗口只與一個多邊形相交; 窗口只被一個多邊形所包圍或包圍多邊形遮擋了其它所有多邊形。 通過檢查所有多邊形的包圍盒與窗口邊界的關系可以實現(xiàn)條件的檢測。利用XY平面上的包圍盒可以判別內含多邊形。窗口和多邊形相交關系可以借助于裁剪算法來解決。利用平面方程計算可以測定所有包圍多邊形、重疊多邊形和內含多邊形在窗口邊界四頂點處的深度值,若某多邊形的深度值小于其它所有多邊形,則

15、條件結果為真。 2022-3-520區(qū)域細分算法可以借助于堆棧結構實現(xiàn),算法描述如下:(1)將初始窗口入棧;(2) ??战Y束。否則,取出棧頂窗口轉步驟(3);(3) 檢測確定當前窗口與多邊形關系,若 A條件為真,以背景顏色顯示當前窗口,轉步驟(2); B條件為真,多邊形內區(qū)域,以該多邊形顏色顯示,其它區(qū)域以背景顏色顯示,轉步驟(2); C條件為真,相交多邊形位于窗口內的區(qū)域以該多邊形顏色顯示,其它區(qū)域以背景顏色顯示,轉步驟(2); D條件為真,以包圍多邊形顏色顯示當前窗口,轉步驟(2); E條件均不滿足,轉步驟(4)。(4) 對當前窗口進行再細分,細分后的子窗口存入堆棧,轉(2)。2022-3

16、-521 8.2 8.2 簡單光照模型簡單光照模型 當光照射到一個不透明的物體表面時,部分被反射,部分被吸收并轉化為熱。對一個透明的表面,部分入射光被反射,而另一部分被透射。其中,反射或透射部分的光使物體可見。如果入射光全部被吸收,物體將不可見,該物體稱為黑體。一物體表面呈現(xiàn)的顏色是由物體表面向視線方向輻射的光能中各種波長的分布所決定的。光能中被吸收、反射或透射的數(shù)量決定于光的波長和物體的表面特性。由于光照射到物體表面產生的現(xiàn)象是很復雜的,它與光源的性質、形狀、數(shù)量、位置有關,還與物體的幾何形狀、光學性質、表面紋理等許多因素有關,甚至與人眼對光的生理與心理視覺因素有關,我們不可能把這一切都準確

17、計算出來。我們將討論計算光強度的一些較為簡單的方法,這些經驗模型為計算物體表面某點處的光強度提供了簡單有效的途徑,并能在許多應用場合獲得較好的效果。2022-3-5228.2.1 8.2.1 環(huán)境光環(huán)境光 在實際場景中,一個物體即使不直接暴露于光源之下,還會接收到從周圍物體散射出來的光,這種光是由于周圍各物體被照明后多次反射所產生的。例如從墻壁、地板及天花板等反射回來的光。這種光是一種分布光源,稱為環(huán)境光。環(huán)境光的特點是照射在物體上的光來自周圍各個方向,又均勻地向各個方向反射。由于處理分布光源所需計算量甚大,通常將這種光所產生的效應簡化為在各個方向都有均勻的光強度。這樣,每個物體表面都得到同樣

18、大小的光照,且反射光相對于該物體表面亦為常數(shù),即反射光與觀察方向和物體表面的朝向無關。但不同物體的反射光強度取決于物體的表面特性,如果用Ia表示環(huán)境光的大小,則表面上一點對環(huán)境光的反射強度Ie可表示為 IekaIa 0ka1式中ka為由物體表面材料屬性決定的環(huán)境光反射系數(shù)。2022-3-5238.2.2 8.2.2 漫反射光漫反射光 我們可以用光源來表示所有發(fā)出輻射能量的物體,如燈泡或太陽。點光源是光源的最簡單模型。這種光源模型是對場景中比物體小得多的光源的合適的逼近。離場景足夠遠的光源,如太陽,也可用點光源模型來較好的模擬。我們在下面反射光的討論中假定使用點光源模型。 從物體表面反射出來的光

19、決定于光源中光的成分、光線的方向、光源的幾何性質以及物體表面的朝向和表面的材料屬性等。物體表面的反射光又可分為漫反射光和鏡面反射光。漫反射光可以認為是光穿過物體表面并被吸收,然后重新發(fā)射出來的光,漫反射光均勻地散布在各個方向,因此同觀察者的位置無關。2022-3-524 朗伯(lambert)余弦定律總結了點光源所發(fā)出的光照射在一個完全漫反射體上時光的反射法則。根據(jù)朗伯定律,一個完全漫射體上反射出來的光強度同入射光與物體表面法線之間夾角的余弦成正比。即 IdkdIlcos 01式中Id為漫反射光強度;Il為從一點光源所發(fā)出的入射光的光強度;kd為決定于物體表面材料屬性的漫反射系數(shù),0kd1;為

20、入射光與表面法向量之間的夾角,如下圖所示。2022-3-525 反射光的光強度是光波長的函數(shù),然而在簡單的光照模型中,通常假定光波長為常數(shù)。若N為物體表面的單位法向量,L為從表面上一點指向點光源的單位矢量,則cos= NL,則(8-3)可以寫成: IdkdIl(NL)2022-3-5268.2.3 8.2.3 鏡面反射光鏡面反射光 除了漫反射,光源照射物體表面還會產生高光或強光,這種現(xiàn)象稱為鏡面反射。這種高光效果在光滑的物體表面上很明顯,如磨光的金屬表面,而對于陰暗物體表面則效果較差。 鏡面反射光是具有一定方向的反射光。鏡面反射角等于入射角,它們位于表面的單位法向量N的兩側,如圖9所示。用R表

21、示鏡面反射方向的單位矢量,L表示指向點光源的單位矢量,V為指向視點的單位矢量,是V 與R之間的夾角。對于一個理想的鏡面反射,入射光僅在鏡面反射方向有反射現(xiàn)象,即僅當V與R重合時才能觀察到反射光,而在其它方向都看不到反射光。對于這種光滑的反射面,鏡面的反射光強比漫反射的光強和環(huán)境光的光強高出很多倍。2022-3-527圖92022-3-528對于一般光滑表面,由于表面具有一定粗糙度,其表面實際上是由許多朝向不同的微小表面組成,鏡面反射方向分布在R R周圍有限范圍內。較光滑表面的鏡面反射范圍較小,而粗糙的物體表面則有較大的鏡面反射范圍。Phong提出一個計算鏡面反射的經驗公式,稱為Phong模型。

22、公式用余弦函數(shù)的冪次來模擬鏡面反射光的空間分布,可表示為: IsksIlcosn 式中Is為鏡面反射光強度;Il為入射光的光強度;ks為決定于物體表面材料屬性的鏡面反射系數(shù),它是入射角和入射光波長的函數(shù),很難精確得到,實際應用中常以美學觀點或實驗方法取一常數(shù),0ks1;鏡面反射光強度與cosn成正比,090,因而0cosn1。2022-3-529 n為鏡面反射光的會聚系數(shù),其值同被觀察物體表面的光滑度有關,會聚性好的光滑表面,如金屬表面,n值較大,而粗糙表面如紙張表面的n值則較小。n值一般取1202X,圖10表示了n對鏡面反射角度范圍的影響。圖102022-3-530 當視點取在鏡面反射方向附

23、近時,觀察者接受到鏡面反射光較強,而偏離這一方向觀察時,接受到鏡面反射光就會減弱,故高光隨著觀察者的位置變化而變化。另外,由于鏡面反射光是經物體外表面直接反射而產生的,與漫反射光不同,高光具有與入射光同樣性質,而與物體表面顏色無關。 若R R與V V已規(guī)格化為單位向量,則式(8-5)可改寫為: IsksIl(R RV V)n 綜上所述,從視點觀察到物體表面上任一點處的顏色和亮度I應為反射光強度Ie、漫反射光強度Id及鏡面反射光強度Is的總和,即 IIeIdIs將各入上式,則得 IkaIakdIl(N NL L)ksIl(R RV V)n 2022-3-531 另外,反射光強度還和物體與點光源的

24、距離d的平方成反比,即物體離光源愈遠,顯的愈暗。因此,若要得到真實感的光照效果,在光照明模型中必須考慮這一因素。然而,若采用因子1/d2來進行光強度衰減,簡單的點光源照明并不總能產生真實感的圖形。當d很小時,1/d2會產生過大的強度變化,而d很大時反射光強度項將無意義。另外,人對物體的視覺也同視點與物體的距離有關,因此綜合考慮,可以用以下修正公式,它是根據(jù)經驗,取同距離的關系為線性衰減。 IkaIaIl(kd(N NL L)ks(R RV V)n)/(d+K)常數(shù)項K為一調整常數(shù),它的存在可以防止當d很小時1/d值太大。2022-3-532 上式就是計算機圖形學中通常使用的簡單光照模型,也稱為

25、明暗函數(shù),用它可以計算出物體表面上每一象素處的光強或明暗色調。上式的計算量是很大的,尤其是鏡面反射方向矢量R R的計算。使用矢量L L與V V間的半角矢量H H來計算鏡面反射范圍可得到簡化的Phong模型。只須以N NH H替代Phong模型中的點積V VR R。這等于用cos計算來替代cos,如圖11所示。半角矢量可從下式計算得到: H H(L LV V)/2替換后(8-8)可以寫為: IkaIaIl(kd(N NL L)ks(N NH H)n)/(d+K)若觀察點與光源離物體表面足夠遠,則V V與L L可以看作為常量,則H H亦為常量。就是說只要計算一次H H的值就可以,但R R是隨N N

26、變化而改變的,這就是用N NH H近似V VR R的好處。2022-3-533圖112022-3-5348.2.4 8.2.4 多點光源和顏色多點光源和顏色 若存在多個點光源,則物體表面上的反射光強度是各個點光源照射效果的線性相加,這時光照模型為: IkaIa (kd(N NL Li)ks(N NH Hi)n) 其中,m為點光源的數(shù)目。大多數(shù)真實感圖形均為彩色圖形,要生成一幅彩色圖形,需要用RGB三基色分量來標識光源強度和物體表面顏色,并根據(jù)光照模型來計算反射光中的RGB分量。但由于鏡面反射光的顏色通常取決于入射光的顏色,因此計算RGB分量時ks取相同的常數(shù)值。將式(8-10)改寫成RGB三個

27、分量的形式為: IRkaRIaRIlR(kdR(N NL L)ks(N NH H)n)/(d+K) IGkaGIaGIlG(kdG(N NL L)ks(N NH H)n/(d+K) IBkaBIaBIlB(kdB(N NL L)ks(N NH H)n/(d+K)miiiliKdI12022-3-535計算出RGB三個基色分量的強度,用來控制RGB彩色顯示器中相應的電子槍,就可以獲得彩色圖形。8.3 8.3 透明處理透明處理 前面介紹的光照模型假定所考慮的物體表面是不透明的。但有些物體是透明的,如水、玻璃等。一個透明物體的表面會同時產生反射光和折射光。當光線從一種傳播介質進入另一種傳播介質時,例

28、如從空氣進入水中時,光線會由于折射而產生彎曲。光線彎曲的程度由Snell定律決定,該定律指出折射光線與入射光線位于同一平面內,而且入射角與折射角之間存在下列關系: 1sin=2sin式中,1和2分別為光線在第一種介質和第二種介質中的折射率,為光線入射角,為折射角,圖12為示意圖。實際中,沒有那種材料能夠透過全部入射光,總有一部分被反射出去。2022-3-536圖12 入射與折射的關系2022-3-537 光有規(guī)則透射和漫透射。透明材料如玻璃等會產生規(guī)則透射,透過透明材料觀察物體仍然是清晰的。如果透射光線是發(fā)散的,那么就會形成漫透射,發(fā)生漫透射的材料呈現(xiàn)朦朧的半透明狀態(tài)。漫透射計算復雜,大多數(shù)光

29、照模型僅考慮規(guī)則透射。 當要表示一個透明表面時,光強度計算公式必須進行修改,一方面要考慮由于透射的原因,表面反射光強度的減弱,另一方面還要考慮表面背后物體的反射光穿過透明表面,對表面總光強度的增加,如圖13所示。 為了加速光強度的計算,簡單的透明算法不考慮折射導致的路徑變化,這樣折射角總是與入射角相同,也不考慮光線在媒體中所經路線長度對光強的影響。對透明的可見面,取它與同它相距最近的另一表面光強的線性組合,則總的光強度可表示為: I=ktIt+(1-kt)Ic 0kt1其中,Ic為透明可見面的反射光強度,It為透明可見面后第一個可見表面上的光強度。kt為透明可見面的透明度。kt=0對應不透明面

30、,光線無透射。kt=1對應不可見面,光線全部透射。Ic和It可用前面介紹的光照模型計算。2022-3-538 若It所對應表面也是透明面,則上述算法可以遞歸地使用,直到遇到一個不透明面或背景時為止。 透明處理還可以用于顯示復雜物體或空間的內部結構。為每一多邊形表面均設一透明度,透明度的初始值均取為1,繪制出物體的外形消隱圖。通過有選擇地將某些表面的透明度改為0,即將它們當做看不見的面處理,這樣再次繪制畫面時,就會顯示出物體的內部結構。圖132022-3-5398.4.1 8.4.1 表面法線的計算表面法線的計算 但為了提高計算速度,一般用多邊形平面逼近曲面。對于多邊形平面,可根據(jù)其平面方程的系

31、數(shù),決定平面的法向量,平面內所有點的法向量是相同的。而多邊形平面在頂點處的法向量可取包圍該頂點的各多邊形平面法向量的平均值。如圖14中,頂點V處的近似法向量為: N NV(N N1N N2.N Nn)/n其中,n為包圍頂點的平面?zhèn)€數(shù),圖中示例n=4。如圖142022-3-540 但多邊形一般是由頂點和棱邊存儲的,在各多邊形平面方程未知的情況下,頂點處的法向量可取交于此頂點的各棱邊叉積的平均值。如圖15中,頂點V處的法向量可由下式計算: N NVVV1VV2VV2VV3VV3VV4VV4VV1上式近似法向量的模依賴于圍繞頂點的各多邊形棱邊數(shù)和長度。多邊形愈大,棱邊愈長,模愈大,實際使用中應該單位

32、化。圖152022-3-541 當觀察畫面上具有相同光強度的區(qū)域時,在其邊界處眼睛所感受到的明亮度常常會不同于實際值。眼睛的這一視覺特性使得光強度為常數(shù)的區(qū)域看上去似乎是光強度發(fā)生了變化,這一現(xiàn)象稱之為馬赫(Mach)帶效應。在光強度發(fā)生急劇變化的地方會出現(xiàn)馬赫帶效應,這時常顯得更亮或更暗。對于多邊形平面,每一點的光強度由相應多邊形的法向量決定,則在兩多邊形平面的交界處,光強度會發(fā)生急劇改變,產生馬赫帶效應。馬赫帶效應影響圖形的真實感,利用下面介紹的兩種明暗處理方法都可不同程度的改善這一現(xiàn)象。2022-3-5428.4.2 Gouraud8.4.2 Gouraud光強度插值方法光強度插值方法

33、這種由Gouraud提出的光強度插值方法通常被稱為Gouraud明暗處理。該方法先計算出各多邊形頂點處的光強度值,然后再采用雙線性插值方法確定多邊形平面上每一點處的光強度值。由于兩相交多邊形平面邊界上的光強度值被同時用于兩平面內點的光強度插值計算,這樣就消除了在多邊形平面繪制中存在的光強度不連續(xù)現(xiàn)象。 多邊形頂點處的法向量可以計算得到,然后可以根據(jù)光照模型來確定頂點處的光強度值,再使用二次線性插值求出其它點的光強度。具體計算辦法如圖16所示,假設多邊形三個頂點的光強度值已經計算出,分別記為I1,I2,I3。如要計算掃描線上點P的光強度值,先用I1,I2,I3第一次線性插值計算掃描線與三角形交點

34、R和Q點的光強度值:2022-3-543圖1622111212IyyyyIyyyyIRRR32322233IyyyyIyyyyIQQQQQRPRRQRQPPIxxxxIxxxxI2022-3-544 式中x,y為各點投影到屏幕后的坐標。上面各次線性插值還可以改成增量的形式,例如改為:tIItIIIIRQRRP)(0t1 采用Gouraud明暗處理解決了兩多邊形平面之間光強度的不連續(xù)過渡以及多邊形平面域內光強度單一的問題,而且計算速度較之簡單光照模型有明顯的提高。但此方法對漫射效果好,對鏡面反射效果差。主要表現(xiàn)在高光域的形狀不規(guī)整,高光域只能在頂點周圍形成,不能在多邊形域內形成。2022-3-5

35、458.4.3 Phong 8.4.3 Phong 法向量插值方法法向量插值方法 Phong提出了對法向量而不是光強度進行插值的方法。在多邊形平面上各點處按照線性插值計算法向量,然后根據(jù)光照模型計算光強度。該方法通常被稱為Phong明暗處理。它能夠更真實地表現(xiàn)物體表面鏡面反射效果并大大降低馬赫帶效應。 這種方法與Gouraud方法一樣,首先計算多邊形每個頂點的法向量,然后應用與Gouraud光強度插值計算類似方法求得每個點處的法矢量。如圖17,假設三個頂點處的法向量已經計算出,分別記為N N1,N N2,N N3。如果要計算點P處的法向量N NP,先用N N1,N N2,N N3線性插值計算R

36、和Q這兩點處的法向量N NR和N NQ,然后再利用N NR和N NQ線性插值計算N NP。2022-3-546圖1722111212NyyyyNyyyyNRRR32322233NyyyyNyyyyNQQQQQRPRRQRQPpNxxxxNxxxxN2022-3-547 Phong明暗處理對法向量插值的方法,比Gouraud明暗處理中對光強度插值法所得到的結果精確得多。法向量插值可以生成高光,真實感更強。然而,法向量插值計算量較大,既要計算各項點的法向量,插值計算多邊形平面上各點的法向量,還要用光照模型計算各點的光強度值。2022-3-5488.5 8.5 陰影處理陰影處理 當觀察方向與光源方向

37、重合時,觀察者是看不到陰影的。只有當兩者方向不一致時,才會看到陰影。陰影使人感到畫面上景物的遠近深淺,從而極大地增強畫面的真實感。 陰影一般分為兩類:自身陰影和投射陰影。物體本身遮擋而使光線照不到某些面稱自身陰影。投射陰影有本影和半影之分。我們觀察一個物體影子時,可以看到位于中間全黑的輪廓分明部分就是本影。本影周圍半明半暗的區(qū)域為半影。本影是所有光源的光線照不到的區(qū)域,而半影則為可接收到分布光源部分光線的區(qū)域。如果只有一個點光源或平行光,將只產生本影。如果在有限距離內有分布光源,將同時形成本影和半影。為避免大量計算,通常只考慮由點光源形成的本影。2022-3-549圖18 自身陰影和投射陰影2

38、022-3-550 由于陰影是光線照射不到而觀察者卻可見到的區(qū)域,所以在畫面中生成陰影的過程基本上相當于二次消隱,一次是對光源消隱,另一次是對視點消隱。生成自身陰影的過程如下: (1)首先將視點置于光源位置,用相同于消除隱藏面的方法找出光線照不到的面; (2)然后按實際的視點位置和觀察方向,對物體進行消隱。 投射陰影是由于物體遮擋光線,使場景中位于它后面的物體或區(qū)域受不到光線照射而形成的。投射陰影可從光源投射光線將所有非自隱藏面投影到場景中而得到。投影面與場景中其它平面的交線組成陰影多邊形,這只需先找到物體的輪廓線并將它對場景作投影,而不必將所有非自隱藏面都投影到場景中。 在得到陰影信息后,就

39、可利用光照模型計算得到有陰影效果的圖形。若選用簡單光照模型,并只有點光源,則陰影由于不能得到光源的直接照射,只有環(huán)境光對其亮度有貢獻。 另外,陰影決定于光源的位置而與觀察者位置無關。一旦對所有光源確定出陰影區(qū)域。只要光源位置不變,則對于任意選定的觀察位置,由隱藏面算法所生成的陰影均是正確的。2022-3-551 8.6 8.6 紋理處理紋理處理 現(xiàn)實世界中的物體往往有各種表面細節(jié), 例如木制品表面的木紋,墻面上的裝飾圖案等,在計算機圖形學中,物體的表面細節(jié)稱為紋理。若將計算機生成的形體表面加上紋理,可以大大增強圖形的真實感。用計算機生成紋理通??紤]兩種方式,一種是通過在光滑表面上附加花紋或圖案

40、生成表面紋理這一過程可用紋理映射函數(shù)描述實現(xiàn)。另一種是通過在光照模型計算中擾動表面法向量,使表面呈現(xiàn)出凸凹不平的紋理效果,這一過程可用擾動函數(shù)描述實現(xiàn)。2022-3-5528.6.1 8.6.1 紋理映射紋理映射 在光滑表面上附加花紋或圖案生成表面紋理的一般方法,是在一平面區(qū)域上,也即紋理空間中,預先定義紋理圖案,然后建立物體表面的點與紋理空間的點之間的對應關系。當物體表面的可見點確定之后,以紋理空間對應點的值修改物體表面的值,就可以把紋理圖案附加到物體表面上。假定紋理圖案定義在紋理空間正交坐標系(s,t)中,而物體表面定義在另一個正交坐標系(u,v)中,則在物體表面上描繪紋理圖案需要在兩個空

41、間中定義一個映射函數(shù),即:),(),(tsgvtsfu2022-3-553 為了簡化計算,一般假定映射函數(shù)為一個線性函數(shù),即:vvvuuuctbsavctbsau式中各系數(shù)可由兩個坐標系中已知點之間的對應關系而求得。 紋理圖案定義有連續(xù)法和離算法兩種。連續(xù)法把紋理函數(shù)定義為一個二元函數(shù),函數(shù)的定義域就是紋理空間。離散方法把紋理定義在二維數(shù)組中,這個數(shù)組可以代表一個用于光柵圖形顯示的字符位圖。位圖可以是用程序生成的各種圖形,也可以是用交互式繪圖系統(tǒng)繪制的各種圖案,還可以是用掃描儀輸入的數(shù)字化圖象等。2022-3-5548.6.2 8.6.2 擾動映射擾動映射 雖然紋理映射可獲得精致的表面細節(jié),但

42、它不合適于模擬象桔子皮皺紋那樣的粗糙物體表面,即凹凸紋理。將凹凸紋理映射到物體表面上,看起來仍象是在表面上畫的凹凸花紋,這是因為紋理圖案的光照細節(jié)通常與場景中的光照方向不完全一致。生成物體表面凹凸紋理的較好方法是在光照模型計算中通過引入一個擾動函數(shù)來修改表面法向量,稱這個方法為擾動映射。 擾動映射在表面每一點沿其表面法向量方向附加一個新的向量,這一向量比較小,不影響原表面的大致形狀,但對其表面該點處的法向量產生較大擾動作用,結果使曲面變得凹凸不平。通過恰當選擇擾動函數(shù),可使生成圖形具有不同的凹凸紋理效果。2022-3-555 若P(u,v)表示一個參數(shù)曲面上的點,該點處的表面法向量為: N NP PuP Pv其中,P Pu與P Pv為P(u,v)關于參數(shù)u和v的偏導數(shù)。為了將擾動因子加入到曲面的法向量中去,

溫馨提示

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

評論

0/150

提交評論