《真實感圖形顯》教學課件_第1頁
《真實感圖形顯》教學課件_第2頁
《真實感圖形顯》教學課件_第3頁
《真實感圖形顯》教學課件_第4頁
《真實感圖形顯》教學課件_第5頁
已閱讀5頁,還剩167頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第五章真實感圖形顯示5.1線消隱5.2面消隱5.5外表圖案與紋理5.4光線跟蹤5.3光照模型5.6顏色空間第五章真實感圖形顯示5.1線消隱5.2面1一.為什么要消隱因為計算機圖形處理的過程中,不會自動消去隱藏局部,相反會將所有的線和面都顯示出來。所以:如果想有真實感地顯示三維物體,必須在視點確定之后,將對象外表上不可見的點、線、面消去。執(zhí)行這種功能的算法,稱為消隱算法。例如:基本概念一.為什么要消隱基本概念2消隱的分類

線消隱(Hidden-line)

對象:線框模型面消隱(Hidden-surface)

對象:填色圖5.1線消隱線框模型

填色圖消隱的分類5.1線消隱線框模型填色圖3線消隱是以場景中的物體為處理單元,將一個物體與其余的k-1個物體逐一比較,僅顯示它可見的外表以到達消隱的目的。此類算法通常用于消除隱藏線。

假定場景中有k個物體,平均每個物體的外表由h個多邊形構成,其計算復雜度為O((kh)2)。

5.1線消隱線消隱是以場景中的物體為處理單元,將一個物體與其余的k-4算法描述如下:for(場景中的每一個物體){將該物體與場景中的其它物體進展比較,確定其外表的可見局部;顯示該物體外表的可見局部;}〔例如如右圖〕線消隱例如5.1線消隱算法描述如下:線消隱例如5.1線消隱5面消隱是以窗口內的每個像素為處理單元,確定在每一個像素處,場景中的物體哪一個距離觀察點最近〔可見的),從而用它的顏色來顯示該像素。此類算法通常用于消除隱藏面。

假設顯示區(qū)域中有m×n個像素,那么其計算復雜度為O(mnkh)。5.1線消隱面消隱是以窗口內的每個像素為處理單元,確定在每一個像素處,6算法描述如下:for(窗口內的每一個像素){確定距觀察點最近的物體,以該物體外表的顏色來顯示像素;}面削隱例如5.1線消隱算法描述如下:面削隱例如5.1線消隱7凸多面體是由假設干個平面圍成的物體。假設這些平面方程為aix+biy+ciz+di=0,i=1,2,…,n(8.1)變換方程的系數(shù),使(ai,bi,ci)指向物體外部的。那么:假設式(8.1)所定義的凸多面體在以視點為頂點的視圖四棱錐內,視點與第i個面上一點連線的方向為(li,mi,ni)。那么自隱藏面的判斷方法是:(ai,bi,ci)(li,mi,ni)>0任意兩個自隱藏面的交線,為自隱藏線。〔自隱藏線應該用虛線輸出〕。

7.1線消隱7.1線消隱8凹多面體的隱藏線消除比較復雜。假設凹多面體用它的外表多邊形的集合表示,消除隱藏線的問題可歸結為:對于一條空間線段P1P2和一個多邊形,判斷線段是否被多邊形遮擋。如果被遮擋,求出隱藏局部

7.1線消隱7.1線消隱9線段和多邊形的關系有:線段與多邊形的任何邊均不相交。處理方法比較簡單。線段與多邊形相交。那么多邊形的邊把線段投影的參數(shù)區(qū)間[0,1]分割成假設干子區(qū)間,每個子區(qū)間對應一條子線段(如以下圖所示),進一步判斷各子線段的隱藏性。線段投影被分為假設干子線段7.1線消隱線段和多邊形的關系有:線段投影被分為假設干子線段7.110可見子線段確實定把各個子線段與所有需要比較的多邊形依次進展隱藏性判別,記下各條隱藏子線段的位置。最后,對這些區(qū)間進展求并集運算,即可確定總的隱藏子線段的位置,余下的那么是可見子線段〔右圖〕7.1線消隱可見子線段確實定把各個子線段與所有需要比較的多邊形依次進11根本思想:

在圖象空間中,將待顯示的所有多邊形按深度值從小到大排序,用前面可見多邊形去切割后面的多邊形,最終使得每個多邊形要么是完全可見,要么是完全不可見。用區(qū)域排序算法消隱,需要用到一個多邊形裁剪算法。7.2面消隱根本思想:7.2面消隱12當對兩個形體相應外表的多邊形進展裁剪時,我們稱用來裁剪的多邊形為裁剪多邊形,另一個多邊形為被裁剪多邊形。算法要求多邊形的邊都是有向的,不妨設多邊形的外環(huán)總是順時針方向的,并且沿著邊的走向,左側始終是多邊形的外部,右側是多邊形的內部。假設兩多邊形相交,新的多邊形可以用“遇到交點后向右拐〞的規(guī)那么來生成。于是被裁剪多邊形被分為兩個乃至多個多邊形;我們把其中落在裁剪多邊形外的多邊形叫作外部多邊形;把落在裁剪多邊形之內的多邊形叫作內部多邊形。區(qū)域排序算法〔2〕7.2面消隱當對兩個形體相應外表的多邊形進展裁剪時,我們稱用來裁剪的137.2面消隱算法的步驟:⑴進展初步深度排序,如可按各多邊形z向坐標最小值(或最大值、平均值)排序。⑵選擇當前深度最小(離視點最近)的多邊形為裁剪多邊形。⑶用裁剪多邊形對那些深度值更大的多邊形進展裁剪。⑷比較裁剪多邊形與各個內部多邊形的深度,檢查裁剪多邊形是否是離視點最近的多邊形。如果裁剪多邊形深度大于某個內部多邊形的深度,那么恢復被裁剪的各個多邊形的原形,選擇新的裁剪多邊形,回到步驟⑶再做,否那么做步驟⑸。⑸選擇下一個深度最小的多邊形作為裁剪多邊形,從步驟⑶開場做,直到所有多邊形都處理過為止。在得到的多邊形中,所有內部多邊形是不可見的,其余多邊形均為可見多邊形。7.2面消隱算法的步驟:147.2面消隱由來:幀緩沖器–保存各像素顏色值(CB)z緩沖器--保存各像素處物體深度值(ZB)z緩沖器中的單元與幀緩沖器中的單元一一對應思路:先將z緩沖器中個單元的初始值置為-1(標準視見體的最小n值〕。當要改變某個像素的顏色值時,首先檢查當前多邊形的深度值是否大于該像素原來的深度值〔保存在該像素所對應的Z緩沖器的單元中〕,如果大于,說明當前多邊形更靠近觀察點,用它的顏色替換像素原來的顏色;否那么說明在當前像素處,當前多邊形被前面所繪制的多邊形遮擋了,是不可見的,像素的顏色值不改變。

7.2面消隱157.2面消隱xyz視線方向視點位置屏幕像素F—BufferZ—Buffer投影面深度緩存算法(Z—Buffer算法)Z—Buffer----用于存放與屏幕上像素點對應的物體上點的深度值。7.2面消隱xz視線方向視點位置屏幕像素F—167.2面消隱Z-buffer算法的步驟如下:⑴初始化ZB和CB,使得ZB(i,j)=Zmax,CB(i,j)=背風光。其中,i=1,2,…,m,j=1,2,…,n。⑵對多邊形,計算它在點(i,j)處的深度值zi,j。⑶假設zijZB(i,j),那么ZB(i,j)=zij,CB(i,j)=多邊形的顏色。⑷對每個多邊形重復⑵、⑶兩步。最后,在CB中存放的就是消隱后的圖形。7.2面消隱Z-buffer算法的步驟如下:17這個算法的關鍵在第⑵步,要盡快判斷出哪些點落在一個多邊形內,并盡快求出一個點的深度值?!蚕马摗橙秉c: (1):ZB和CB兩個緩存數(shù)組占用的存儲單元太多,需要有一個較大容量的Z—Buffer。 (2):在每個多邊形占據(jù)的每個像素處都要計算深度值,計算量大7.2面消隱這個算法的關鍵在第⑵步,要盡快判斷出哪些點落在一個多邊形185.2面消隱Z-Buffer算法實現(xiàn)中的關鍵問題①判斷點(i,j)是否在多邊形Fk在投影面上的投影內解決方法:采用包含測試。②計算多邊形Fk在點(i,j)處的深度值Zi,j假設多邊形Fk的平面方程為:ax+by+cz+d=0假設c≠0,那么axi+byi+dc假設c=0,那么多邊形Fk的法線方向與Z軸垂直,F(xiàn)k在投影面上的投影為一條直線,可不予考慮。Zi,j=—5.2面消隱Z-Buffer算法實現(xiàn)中的關鍵問題195.2面消隱在多邊形填充算法中,活性邊表的使用取得了節(jié)省運行空間的效果。用同樣的思想改造Z-buffer算法:將整個繪圖區(qū)域分割成假設干個小區(qū)域,然后一個區(qū)域一個區(qū)域地顯示,這樣Z緩沖器的單元數(shù)只要等于一個區(qū)域內像素的個數(shù)就可以了。如果將小區(qū)域取成屏幕上的掃描線,就得到掃描線Z緩沖器算法。

5.2面消隱20for(各條掃描線){將幀緩沖器I(x)置為背風光;將Z緩沖器的Z(x)置為最大值;for(每個多邊形〕{求出多邊形在投影平面上的投影與當前掃描線的相交區(qū)間 for〔該區(qū)間內的每個像素〕 if(多邊形在此處的Z值小于Z(x)〕 {置幀緩沖器I(x)值為當前多邊形顏色; 置Z緩沖器Z(x)值為多邊形在此處的Z值;}}}掃描線算法描述for(各條掃描線)掃描線算法描述215.3光照模型Shading:顯示一個物體的色彩以及色彩在光照環(huán)境下的明暗變化的描繪方法。(相關因素:光源特性和物體外表特性。)一:光源特性包括1:光的色彩〔R、G、B〕2:光的強度 由R,G,B三種色光的強弱決定,總的光強為: Total_Value=0.30*Value_R+0.59*Value_G+0.11*Value_B 點光源3:光的方向分布式光源漫射光源5.3光照模型一:光源特性包括225.3光照模型三種光源

右邊是三種光源的示意圖。其中點光源和分布式光源合稱直射光源;5.3光照模型三種光源右邊是三種光源的示意圖23物體外表特性包括如下內容:⑴反射系數(shù) 由物體外表的材料和形狀決定,分為漫反射(DiffuseReflection)系數(shù)和鏡面反射(SpecularReflection)系數(shù)。⑵透射系數(shù)記為Tp,描述物體透射光線的能力,且有0≤Tp≤1。⑶外表方向5.3光照模型物體外表特性包括如下內容:⑴反射系數(shù)5.3光照模24光照模型及其實現(xiàn)

5.3光照模型光照模型(IlluminationModel)描述物體外表的色彩明暗同光源特性、物體外表特性之間的關系。光照模型分3個局部描述這種關系,即漫射光線的情況、直線光線的情況和透射光線的情況。光照模型及其實現(xiàn)5.3光照模型光照模型(Il255.3光照模型⒈漫射光線的情況 漫射光源是從四面八方均勻照來的,物體外表的色彩明暗與外表的形狀無關,僅與外表的反射系數(shù)有關。漫射光源照明的模型為EPd=RPId上式可以寫為EPd-r=RP-rId-r,EPd-g=RP-gId-g,EPd-b=RP-bId-b5.3光照模型⒈漫射光線的情況26⒉直射光線的情況

在這種情況下,物體外表的明暗隨外表法矢量和入射光線Is的夾角I的改變而變化。此時,物體外表會發(fā)生兩類反射,即漫反射和鏡面反射。5.3光照模型在直射照明下,物體外表P點的漫反射和鏡面反射的模型根據(jù)Lambert定律和Bui-TuongPhong的實驗提出(圖8.5)。EPs=RPcosiIPs+WP(i)cosnsIPs⒉直射光線的情況5.3光照模型在直射照明下,275.3光照模型光照模型中各參數(shù)的圖示

Eps:P點反射的直射光線IPs的光強RP:P點的漫反射系數(shù)I:P點的法矢量N與入射光方向L的夾角Ips:入射的直射光線的強度WP(i):P點的鏡面反射系數(shù)(入射角i的函數(shù))5.3光照模型光照模型中各參數(shù)的圖示Eps:P285.3光照模型W(i)與i的關系WP(i)是P點的鏡面反射系數(shù)(入射角i的函數(shù))。由于W(i)的計算比較復雜,實際中常用一個常數(shù)W代替。5.3光照模型W(i)與i的關系WP(i)29n控制高光的聚散,它和P點的材料有關。對于光滑發(fā)亮的金屬外表,n值取得大,從而產生會聚的高光點n與高光區(qū)域大小的關系

n控制高光的聚散,它和P點的材料有關。對于光滑發(fā)亮的305.3光照模型⒊透射光線的情況透射模型如下:EPt=TPIPb其中:Ept:物體外表P點處透射出的光強TP:P點的透射系數(shù)(取值范圍為0~1)Ipb:到達P點背后的光強。5.3光照模型⒊透射光線的情況31將上述3種情況綜合起來,便獲得物體外表P點處所發(fā)光強EP的計算公式:EP=EPd+EPs+EPt=RPId+(RPcosi+WPcosns)IPs+TPIpb上式中只有cosi和coss的值是未知的,需要推算。將上述3種情況綜合起來,便獲得物體外表P點處所發(fā)光強E325.3光照模型在計算機圖形學中,曲面體(例如球)通常是用多面體逼近表達的。這時,分別計算各個面的亮度,就會在多邊形與多邊形的交界處產生明暗的連續(xù)變化,影響曲面的顯示效果。解決方法:采用插補的方法,使得外表明暗光滑化。最常使用的外表明暗光滑化的方法有兩種,稱為Gourand方法和Phong方法。5.3光照模型33Gourand光滑方法如下:根本思想:在每個多邊形頂點處計算顏色,然后在各個多邊形內部進展線性插值,得到多邊形內部各點顏色。即它是一種顏色插值著色方法。根本步驟:⑴先計算出多面體頂點的法線方向⑵用光照模型求得V點的亮度。⑶由兩頂點的亮度,插值得出棱上各點的亮度。由棱上各點的亮度,插值得出面上各點的亮度。〔下面詳細介紹每步〕5.3光照模型Gourand光滑方法如下:5.3光照模型345.3光照模型Step1:計算多面體頂點的法線方向設與多面體頂點V相鄰的多邊形為P1,P2,…,Pn,它們的法線分別為N1(a1,b1,c1),N2(a2,b2,c2),…,Nn(an,bn,cn)。那么V的法線nV取做:nV=(a1+a2+…+an)i+(b1+b2+…+bn)j+(c1+c2+…+cn)k5.3光照模型Step1:計算多面體頂點的法35Step2:用光照模型求得V點的亮度。

5.3光照模型Step3:由兩頂點的亮度,插值得出棱上各點的亮度。由棱上各點的亮度,插值得出面上各點的亮度。Step2:用光照模型求得V點的亮度。5.3光照36保存abc折痕的情況如果希望在某處不處理成光滑而要保存折痕效果(例如abc)方法是在頂點b設置2條法線。分別用語A和B,C和D之間的插值保存abc折痕的情況如果希望在某處不處理成光滑而要保存折37Gourand光滑化方法

優(yōu)點:能有效的顯示漫反射曲面,計算量小缺點:1、高光有時會異常2、當對曲面采用不同的多邊形進展分割時會產生不同的效果。3、Gouraud明暗處理會造成外表上出現(xiàn)過亮或過暗的條紋,稱為馬赫帶〔Mach_band〕效應改進-Phong提出雙線性法向插值,以時間為代價,解決高光問題Gourand光滑化方法優(yōu)點:能有效的顯示漫反射曲面,計38

明暗變化失常

馬赫帶效應Gourand光滑化方法

明暗變化失常馬赫帶效應Gourand光滑化方法39根本思想:通過對多邊形頂點的法矢量進展插值,獲得其內部各點的法矢量,又稱為法向插值著色方法。步驟 1、計算多邊形單位法矢量 2、計算多邊形頂點單位法矢量3、對多邊形頂點法矢量進展雙線性插值, 獲得內部各點的法矢量4、利用光照明方程計算多邊形內部各點顏色Phong光滑方法根本思想:通過對多邊形頂點的法矢量進展插值,獲得其內部各405.3光照模型Phong著色方法NA由N1、N2線性插值得到:5.3光照模型Phong著色方法41兩種方法的比較1Phong著色方法繪制的圖形比Gouraud方法更真實,表達在兩個方面:高光區(qū)域的擴散,產生正確的高光區(qū)域1:Phong著色方法計算量遠大于Gouraud著色方法2:在處理某些多邊形分割的曲面時,Phong算法還不如Gouraud算法好。

兩種方法的比較1Phong著色方法繪制的圖形比Gourau42兩種方法的比較2Phone方法可以產生正確的高光區(qū)域GouraudPhone兩種方法的比較2Phone方法可以產生正確的高光區(qū)域Gou43兩種方法的比較3兩種方法的比較344陰影生成

目的:增加圖形的立體感和場景的層次感,真實感陰影生成目的:增加圖形的立體感和場景的層次感,真實感45陰影可分為兩種:本影:本影即景物外表上那些沒有被光源〔景物中所有特定光源的集合〕直接照射的局部半影:而半影指的是景物外表上那些被某些特定光源〔或特定光源的一局部〕直接照射但并非被所有特定光源直接照射的局部。一般來說,半影的計算比本影要復雜得多陰影可分為兩種:46方法一:影域多邊形方法

所謂影域,就是物體投射出的臺體。判斷點是否在臺體中即可確定是否在陰影中。方法一:影域多邊形方法所謂影域,就是物體投射出的臺體47S1S2S3S4S5IIIIII利用影域多邊形進展陰影判斷為了判別一可見多邊形的某局部是否位于影域內,可將影域多邊形置入景物多邊形表中(右圖〕S1S2S3S4S5IIIIII利用影域多邊形進展陰影判斷48方法2:曲面細節(jié)多邊形方法

首先取光源方向為視線方向對景物進展第一次消隱,產生相對光源可見的景物多邊形〔稱為曲面細節(jié)多邊形〕,并通過標識數(shù)將這些多邊形與它們覆蓋的原始景物多邊形聯(lián)系在一起。位于編號i的原始景物多邊形上的曲面細節(jié)多邊形也注以編號i。接著算法取視線方向對景物進展第二次消隱。方法2:曲面細節(jié)多邊形方法49方法3:z緩沖器方法

為了方便地在光滑曲面片上生成陰影,Williams提出一種z緩沖器方法

首先,利用z緩沖器消隱算法取光源為視點對景物進展消隱。所有景物均變換到光源坐標系第二步,仍采用z緩沖器消隱算法按視線方向計算畫面方法3:z緩沖器方法為了方便地在光滑曲面片上生成陰影,50方法3:光線跟蹤方法

1980年Whitted提出了整體光照明模型,并用光線跟蹤〔raytracing〕技術來解這個模型在光線跟蹤算法中,要確定某點是否位于某個光源的陰影內,只要從該點出發(fā)向光源發(fā)出一根測試光線即可方法3:光線跟蹤方法1980年Whitted提出了整體51線光源的軟陰影

線光源產生的陰影是漸變的,將這種漸變的陰影稱之為軟陰影,而點光源產生的陰影是沒有漸變的,稱為硬陰影。線光源同樣有采樣數(shù)目的問題,只有表示線光源的點光源數(shù)目非常多,才可能產生平滑的軟陰影。在WolfgangHeidrich的文章中,提出了使用陰影貼圖,為線光源生成軟陰影的方法

線光源的軟陰影線光源產生的陰影是漸變的,將這種漸變的陰52WolfgangHeidrich提出的方法如下:1.

將線光源抽象為兩個點光源A和B,分別是線光源的兩端。2.

從點B處沿觀察方向繪制物體,利用生成的深度緩存生成邊界多邊形,如PQ。3.

將邊界多邊形位于遮擋物上的點顏色設為(0,0,0),位于陰影所在外表上的點顏色設為(1,1,1)。背景顏色設為(0.5,0.5,0.5),兩個通道組合后,顏色將為(1,1,1),使得這些位置的物體將完全被光源照射。從點A處沿觀察方向繪制邊界多邊形,可得到a圖中下面局部的可見度值,稱為A點的可見度通道。4.

同樣的方法生成B點的可見度通道,如圖b。5.

將兩個通道組合,得到線光源可見度通道,表示了線光源產生的陰影變化,如圖c。WolfgangHeidrich提出的方法如下:1.

53生成可見度通道的二維示意圖

生成可見度通道的二維示意圖54整體光照模型

簡單光照模型〔亦稱局部光照模型〕不考慮周圍環(huán)境對當前景物外表的光照明影響,忽略了光在環(huán)境景物之間的傳遞,很難表現(xiàn)自然界復雜場景的高質量真實感圖形。為了增加圖形的真實感,必須考慮環(huán)境的漫射、鏡面反射和規(guī)那么投射對景物外表產生的整體照明效果。整體光照模型簡單光照模型〔亦稱局部光照模型〕不考慮周圍55表現(xiàn)場景整體照明效果的一個重要方面是透明現(xiàn)象的模擬。整體光照明模型還要模擬光在景物之間的多重反射。Whitted光照明模型是一種整體光照明模型,這一模型能很好地模擬光能在光滑物體外表之間的鏡面反射和通過理想透明體產生的規(guī)那么透射表現(xiàn)場景整體照明效果的一個重要方面是透明現(xiàn)象的模擬。56Witted光照模型Whitted光照模型基于如下假設:物體外表向視點方向V輻射的光亮度Il由三局部組成:〔1〕光源直接照射引起的反射光亮度Ill?!?〕來自V的鏡面反射方向R的其它物體反射或折射來的光的亮度Isl。〔3〕來自V的透射方向T的其它物體反射或折射來的光的亮度ItlWitted光照模型Whitted光照模型基于如下假設:57Witted光照模型Witted光照模型:或Is為鏡面反射方向的入射光強度;Ks為鏡面反射系數(shù),為0~1之間的一個常數(shù)It為折射方向光強,Kt為透射系數(shù),是0~1之間的常數(shù)Ic的計算可采用Phong模型因此,關鍵是Is和It的計算。如何計算呢?由于Is和It是來自V的鏡面反射方向r和規(guī)那么透射方向t的環(huán)境光亮度,因而首先必須確定r和tWitted光照模型Witted光照模型:58Witted光照模型-反射、折射方向計算視線方向V,求其反射方向R與折射方向T〔N是外表的法向方向〕視線V的反射方向r折射方向t其中:1

2

tItNVi1=sin(i2)=1/2sin()

Witted光照模型-反射、折射方向計算視線方向V,求其反射595.4光線跟蹤光線跟蹤方法沿著到達視點的光線的反方向跟蹤,經(jīng)過屏幕上每一像素,找出與視線所交的物體外表點P0,并繼續(xù)跟蹤,找出影響P0點光強的所有光源,從而算出P0點上光照強度。光線跟蹤示意圖

右圖顯示了一個例子。連接觀察點和屏幕上的一個像素,即形成一條視線。

5.4光線跟蹤光線跟蹤示意圖右圖顯示了一個例605.4光線跟蹤視線在P0處的反射和透射

視線V在P0處產生反射和透射,所產生的反射線和透射線作為新的視線與各平面求出新的交點P1、P2(圖8.13),并分別產生新的反射線和透射線……這樣不斷深入,直至所產生的射線射出場景。由此得到視線跟蹤軌跡上的一系列交點P0,P1,P2,…,Pn。這個過程可以表示為一棵光線跟蹤樹5.4光線跟蹤視線在P0處的反射和透射視線V61

右圖示出與上圖對應的一棵光線跟蹤樹,光強計算方法是以后序周游的算法遍歷這棵光線跟蹤樹。

光線跟蹤樹

5.4光線跟蹤右圖示出與上圖對應的一棵光線跟蹤樹,光強計算方法是以后序625.4光線跟蹤

對于樹上任意一結點Pi,Pi處沿視線方向V射去的光強I為 I=IG+WPIr+TPItPi點所受到的光照

光線跟蹤方法優(yōu)點:

各物體之間反射的影響,因此顯示效果十分逼真。有消隱功能有影子效果

該算法具有并行性質

5.4光線跟蹤對于樹上任意一結點Pi,P63光線跟蹤算法中75%以上的工作量用于求交計算進展求交運算之前,常用包圍球或包圍盒的方法對物體進展是否與光線相交的預測。5.4光線跟蹤包圍球

算法1:包圍球檢查算法5.4光線跟蹤包圍球算法1:包圍球檢查算法645.4光線跟蹤算法⒉包圍盒檢查算法(圖7.23〕包圍盒

包圍盒檢查算法不僅判斷光線是否與包圍盒相交,而且能判斷光線與物體各面的交點坐標。此外,包圍盒比包圍球更可靠。5.4光線跟蹤算法⒉包圍盒檢查算法(圖7.23〕655.4光線跟蹤⒊

包含性檢查算法

包含性檢查是檢查P(x,y,z)是否在多邊形V(V1,V2,…,Vn)之內。Vi是多邊形的頂點,坐標為(xi,yi,zi),1≤i≤n。包含性檢查的算法思想如下:⑴P與V在xOy內的投影為P與V,設Vi所含的一個頂點。那么P、Vi的坐標為P=(x,y),Vi=(xi,yi)5.4光線跟蹤⒊包含性檢查算法包含性檢查是檢查66水平線交點的奇偶記數(shù)

⑵由P向水平方向做一條射線與V各邊相交,如果交點為奇數(shù)個,說明P在多邊形之內;如果交點為偶數(shù)個,說明P在多邊形之外。如圖7.24水平線交點的奇偶記數(shù)⑵由P向水平方向做一條射線與V各675.4光線跟蹤光線跟蹤算法

光線跟蹤算法中的數(shù)據(jù)構造光線跟蹤算法中的每一條光線要與場景中的各個物體所含的各個面求交。有必要對數(shù)據(jù)進展管理對于多面體,常采取鏈表構成的樹形構造對數(shù)據(jù)進展分層表達與管理。5.4光線跟蹤光線跟蹤算法光線跟蹤算法中的數(shù)據(jù)構685.5外表圖案與紋理將一幅平面圖案描繪到物體外表上的過程如下:⑴將平面圖案上的各點(x,y)映射到物體外表的各點(x,y,z)。⑵求出點(x,y,z)處新的反射系數(shù)。⑶用光照模型計算物體外表點(x,y,z)的色彩明暗。5.5外表圖案與紋理將一幅平面圖案描繪到物體外表上69兩個凸多邊形中的點的映射

對于目的四邊形S內的任一點P,與在S內的對應點P的映射關系為:兩個凸多邊形中的點的映射對于目的四邊形S內的任一點P,與在70凸四邊形S和S之間的位置映射算法如下:⑴求S中的邊的交點F、E,以及S中的邊的交點F、E的位置。⑵對于目的多邊形S中的每一個元素P,尋找S中對應位置P。①求PF與AB的交點P1,由P1得f1/f2;求PE與BC的交點P2,由P2得e1/e2。②由f1/f2=f1/f2得P1的位置,由e1/e2=e1/e2得P2的位置。③求P1F

與P2E的交點,即為點P的位置。④

取P的色彩,求得P點新的反射系數(shù)。

凸四邊形S和S之間的位置映射算法如下:71凹多邊形劃分為多個凸四邊形分別進展映射對于邊數(shù)大于4的多邊形,可以用網(wǎng)格的方法將目的多邊形S和源多邊形S相互對應地劃分為凸四邊形網(wǎng)格。對于網(wǎng)格中的每個四邊形施行上述變換。凹多邊形劃分為多個凸四邊形分別進展映射對于邊數(shù)大于4725.5外表圖案與紋理Blinn在1978年提出,用擾動物體外表法線方向的方法來模擬外表凹凸紋理的真實感顯示效果。物體的新外表S(u,v)定義為S(u,v)=Q(u,v)+P(u,v)式(8.16)對u、v分別求偏導函數(shù),得

5.5外表圖案與紋理Blinn在1978年提735.5外表圖案與紋理上式中第三項皆可忽略,即得記NS為S(u,v)的法向量。法向量可以表示為兩個偏導向量Su和Sv的叉積,即

NS=SuSv=5.5外表圖案與紋理上式中第三項皆可忽略,即得記NS為S745.6顏色空間

大紅、血紅、鐵銹紅、淺黃、檸檬黃

格拉斯曼(GrassmannH.)定律,從視覺的角度看,顏色包含3個要素,即色調(hue)、飽和度(saturation)和亮度(brightness)。分別對應光學中的術語:主波長(dominantwavelength)、純度(purity)和輝度(luminance)。可以用光譜能量分布圖來表征光源特性圖7.28某種顏色光的光譜能量分布

5.6顏色空間大紅、血紅、鐵銹紅、淺黃、檸檬755.6顏色空間色度圖

原色。紅、綠、藍是3種原色。國際照明委員會(簡稱CIE)規(guī)定了3種標準原色X、Y、Z

c=xX+yY+zZ

權值規(guī)格化

:xyzx+y+zx+y+zx+y+zx=y=z=5.6顏色空間色度圖原色。紅、綠、藍是3種767.6顏色空間所有色度值落在錐形體與x+y+z=1平面的相交區(qū)域上。把這個區(qū)域投影到xOy平面上,所得的馬蹄形區(qū)域稱為CIE色度圖。如下圖CIE色度圖

7.6顏色空間所有色度值落在錐形體與x+y+775.6顏色空間CIE色度圖的一個重要用途是定義顏色域(colorgamut),或稱顏色區(qū)域(colorrange),以便顯示疊加顏色的效果。如下圖圖用CIE色度圖定義顏色域

5.6顏色空間CIE色度圖的一個重要用途是785.6顏色空間幾種常用的顏色模型

所謂顏色模型,指的是某個三維顏色空間中的一個可見光子集,它包含某個顏色域的所有顏色。

最常見的RGB

顏色模型,此外,還有CMY

和HSV

顏色模型5.6顏色空間幾種常用的顏色模型所謂顏色模型,指79

紅、綠、藍(RGB)顏色模型是加性原色。也就是說,各個原色的光能疊加在一起產生復合色

RGB三原色疊加效果示意圖

紅、綠、藍(RGB)顏色模型是加性原色。也就是說,各個805.6顏色空間RGB立方體

RGB顏色模型通常用以下圖所示的單位立方體來表示5.6顏色空間RGB立方體RGB顏色模型815.6顏色空間CMY顏色系統(tǒng)紅、綠、藍的補色青(Cyan)、品紅(Magenta)、黃(Yellow)為原色構成。常用于從白光中濾去某種顏色,故稱為減性原色系統(tǒng)。圖CMY三原色的減色效果示意圖

5.6顏色空間CMY顏色系統(tǒng)圖CMY三原色825.6顏色空間HSV顏色模型示意圖

HSV(Hue,Saturation,Value)顏色模型那么是面向用戶的。該模型對應于圓柱坐標系中的一個圓錐形子集,如下圖。5.6顏色空間HSV顏色模型示意圖HS835.6顏色空間HSV模型對應于畫家配色的方法。畫家用改變色濃和色深的方法從某種純色中獲得不同色調的顏色。

如下圖,是具有某個固定色彩的顏色的三角形表示。色濃、色深、色調之間的關系

5.6顏色空間HSV模型對應于畫家配色的方84EndofthechapterEndofthechapter85grain=Rmod60;If(grain<40)color=淡色;elsecolor=深色;grain=Rmod60;86第五章真實感圖形顯示5.1線消隱5.2面消隱5.5外表圖案與紋理5.4光線跟蹤5.3光照模型5.6顏色空間第五章真實感圖形顯示5.1線消隱5.2面87一.為什么要消隱因為計算機圖形處理的過程中,不會自動消去隱藏局部,相反會將所有的線和面都顯示出來。所以:如果想有真實感地顯示三維物體,必須在視點確定之后,將對象外表上不可見的點、線、面消去。執(zhí)行這種功能的算法,稱為消隱算法。例如:基本概念一.為什么要消隱基本概念88消隱的分類

線消隱(Hidden-line)

對象:線框模型面消隱(Hidden-surface)

對象:填色圖5.1線消隱線框模型

填色圖消隱的分類5.1線消隱線框模型填色圖89線消隱是以場景中的物體為處理單元,將一個物體與其余的k-1個物體逐一比較,僅顯示它可見的外表以到達消隱的目的。此類算法通常用于消除隱藏線。

假定場景中有k個物體,平均每個物體的外表由h個多邊形構成,其計算復雜度為O((kh)2)。

5.1線消隱線消隱是以場景中的物體為處理單元,將一個物體與其余的k-90算法描述如下:for(場景中的每一個物體){將該物體與場景中的其它物體進展比較,確定其外表的可見局部;顯示該物體外表的可見局部;}〔例如如右圖〕線消隱例如5.1線消隱算法描述如下:線消隱例如5.1線消隱91面消隱是以窗口內的每個像素為處理單元,確定在每一個像素處,場景中的物體哪一個距離觀察點最近〔可見的),從而用它的顏色來顯示該像素。此類算法通常用于消除隱藏面。

假設顯示區(qū)域中有m×n個像素,那么其計算復雜度為O(mnkh)。5.1線消隱面消隱是以窗口內的每個像素為處理單元,確定在每一個像素處,92算法描述如下:for(窗口內的每一個像素){確定距觀察點最近的物體,以該物體外表的顏色來顯示像素;}面削隱例如5.1線消隱算法描述如下:面削隱例如5.1線消隱93凸多面體是由假設干個平面圍成的物體。假設這些平面方程為aix+biy+ciz+di=0,i=1,2,…,n(8.1)變換方程的系數(shù),使(ai,bi,ci)指向物體外部的。那么:假設式(8.1)所定義的凸多面體在以視點為頂點的視圖四棱錐內,視點與第i個面上一點連線的方向為(li,mi,ni)。那么自隱藏面的判斷方法是:(ai,bi,ci)(li,mi,ni)>0任意兩個自隱藏面的交線,為自隱藏線。〔自隱藏線應該用虛線輸出〕。

7.1線消隱7.1線消隱94凹多面體的隱藏線消除比較復雜。假設凹多面體用它的外表多邊形的集合表示,消除隱藏線的問題可歸結為:對于一條空間線段P1P2和一個多邊形,判斷線段是否被多邊形遮擋。如果被遮擋,求出隱藏局部

7.1線消隱7.1線消隱95線段和多邊形的關系有:線段與多邊形的任何邊均不相交。處理方法比較簡單。線段與多邊形相交。那么多邊形的邊把線段投影的參數(shù)區(qū)間[0,1]分割成假設干子區(qū)間,每個子區(qū)間對應一條子線段(如以下圖所示),進一步判斷各子線段的隱藏性。線段投影被分為假設干子線段7.1線消隱線段和多邊形的關系有:線段投影被分為假設干子線段7.196可見子線段確實定把各個子線段與所有需要比較的多邊形依次進展隱藏性判別,記下各條隱藏子線段的位置。最后,對這些區(qū)間進展求并集運算,即可確定總的隱藏子線段的位置,余下的那么是可見子線段〔右圖〕7.1線消隱可見子線段確實定把各個子線段與所有需要比較的多邊形依次進97根本思想:

在圖象空間中,將待顯示的所有多邊形按深度值從小到大排序,用前面可見多邊形去切割后面的多邊形,最終使得每個多邊形要么是完全可見,要么是完全不可見。用區(qū)域排序算法消隱,需要用到一個多邊形裁剪算法。7.2面消隱根本思想:7.2面消隱98當對兩個形體相應外表的多邊形進展裁剪時,我們稱用來裁剪的多邊形為裁剪多邊形,另一個多邊形為被裁剪多邊形。算法要求多邊形的邊都是有向的,不妨設多邊形的外環(huán)總是順時針方向的,并且沿著邊的走向,左側始終是多邊形的外部,右側是多邊形的內部。假設兩多邊形相交,新的多邊形可以用“遇到交點后向右拐〞的規(guī)那么來生成。于是被裁剪多邊形被分為兩個乃至多個多邊形;我們把其中落在裁剪多邊形外的多邊形叫作外部多邊形;把落在裁剪多邊形之內的多邊形叫作內部多邊形。區(qū)域排序算法〔2〕7.2面消隱當對兩個形體相應外表的多邊形進展裁剪時,我們稱用來裁剪的997.2面消隱算法的步驟:⑴進展初步深度排序,如可按各多邊形z向坐標最小值(或最大值、平均值)排序。⑵選擇當前深度最小(離視點最近)的多邊形為裁剪多邊形。⑶用裁剪多邊形對那些深度值更大的多邊形進展裁剪。⑷比較裁剪多邊形與各個內部多邊形的深度,檢查裁剪多邊形是否是離視點最近的多邊形。如果裁剪多邊形深度大于某個內部多邊形的深度,那么恢復被裁剪的各個多邊形的原形,選擇新的裁剪多邊形,回到步驟⑶再做,否那么做步驟⑸。⑸選擇下一個深度最小的多邊形作為裁剪多邊形,從步驟⑶開場做,直到所有多邊形都處理過為止。在得到的多邊形中,所有內部多邊形是不可見的,其余多邊形均為可見多邊形。7.2面消隱算法的步驟:1007.2面消隱由來:幀緩沖器–保存各像素顏色值(CB)z緩沖器--保存各像素處物體深度值(ZB)z緩沖器中的單元與幀緩沖器中的單元一一對應思路:先將z緩沖器中個單元的初始值置為-1(標準視見體的最小n值〕。當要改變某個像素的顏色值時,首先檢查當前多邊形的深度值是否大于該像素原來的深度值〔保存在該像素所對應的Z緩沖器的單元中〕,如果大于,說明當前多邊形更靠近觀察點,用它的顏色替換像素原來的顏色;否那么說明在當前像素處,當前多邊形被前面所繪制的多邊形遮擋了,是不可見的,像素的顏色值不改變。

7.2面消隱1017.2面消隱xyz視線方向視點位置屏幕像素F—BufferZ—Buffer投影面深度緩存算法(Z—Buffer算法)Z—Buffer----用于存放與屏幕上像素點對應的物體上點的深度值。7.2面消隱xz視線方向視點位置屏幕像素F—1027.2面消隱Z-buffer算法的步驟如下:⑴初始化ZB和CB,使得ZB(i,j)=Zmax,CB(i,j)=背風光。其中,i=1,2,…,m,j=1,2,…,n。⑵對多邊形,計算它在點(i,j)處的深度值zi,j。⑶假設zijZB(i,j),那么ZB(i,j)=zij,CB(i,j)=多邊形的顏色。⑷對每個多邊形重復⑵、⑶兩步。最后,在CB中存放的就是消隱后的圖形。7.2面消隱Z-buffer算法的步驟如下:103這個算法的關鍵在第⑵步,要盡快判斷出哪些點落在一個多邊形內,并盡快求出一個點的深度值?!蚕马摗橙秉c: (1):ZB和CB兩個緩存數(shù)組占用的存儲單元太多,需要有一個較大容量的Z—Buffer。 (2):在每個多邊形占據(jù)的每個像素處都要計算深度值,計算量大7.2面消隱這個算法的關鍵在第⑵步,要盡快判斷出哪些點落在一個多邊形1045.2面消隱Z-Buffer算法實現(xiàn)中的關鍵問題①判斷點(i,j)是否在多邊形Fk在投影面上的投影內解決方法:采用包含測試。②計算多邊形Fk在點(i,j)處的深度值Zi,j假設多邊形Fk的平面方程為:ax+by+cz+d=0假設c≠0,那么axi+byi+dc假設c=0,那么多邊形Fk的法線方向與Z軸垂直,F(xiàn)k在投影面上的投影為一條直線,可不予考慮。Zi,j=—5.2面消隱Z-Buffer算法實現(xiàn)中的關鍵問題1055.2面消隱在多邊形填充算法中,活性邊表的使用取得了節(jié)省運行空間的效果。用同樣的思想改造Z-buffer算法:將整個繪圖區(qū)域分割成假設干個小區(qū)域,然后一個區(qū)域一個區(qū)域地顯示,這樣Z緩沖器的單元數(shù)只要等于一個區(qū)域內像素的個數(shù)就可以了。如果將小區(qū)域取成屏幕上的掃描線,就得到掃描線Z緩沖器算法。

5.2面消隱106for(各條掃描線){將幀緩沖器I(x)置為背風光;將Z緩沖器的Z(x)置為最大值;for(每個多邊形〕{求出多邊形在投影平面上的投影與當前掃描線的相交區(qū)間 for〔該區(qū)間內的每個像素〕 if(多邊形在此處的Z值小于Z(x)〕 {置幀緩沖器I(x)值為當前多邊形顏色; 置Z緩沖器Z(x)值為多邊形在此處的Z值;}}}掃描線算法描述for(各條掃描線)掃描線算法描述1075.3光照模型Shading:顯示一個物體的色彩以及色彩在光照環(huán)境下的明暗變化的描繪方法。(相關因素:光源特性和物體外表特性。)一:光源特性包括1:光的色彩〔R、G、B〕2:光的強度 由R,G,B三種色光的強弱決定,總的光強為: Total_Value=0.30*Value_R+0.59*Value_G+0.11*Value_B 點光源3:光的方向分布式光源漫射光源5.3光照模型一:光源特性包括1085.3光照模型三種光源

右邊是三種光源的示意圖。其中點光源和分布式光源合稱直射光源;5.3光照模型三種光源右邊是三種光源的示意圖109物體外表特性包括如下內容:⑴反射系數(shù) 由物體外表的材料和形狀決定,分為漫反射(DiffuseReflection)系數(shù)和鏡面反射(SpecularReflection)系數(shù)。⑵透射系數(shù)記為Tp,描述物體透射光線的能力,且有0≤Tp≤1。⑶外表方向5.3光照模型物體外表特性包括如下內容:⑴反射系數(shù)5.3光照模110光照模型及其實現(xiàn)

5.3光照模型光照模型(IlluminationModel)描述物體外表的色彩明暗同光源特性、物體外表特性之間的關系。光照模型分3個局部描述這種關系,即漫射光線的情況、直線光線的情況和透射光線的情況。光照模型及其實現(xiàn)5.3光照模型光照模型(Il1115.3光照模型⒈漫射光線的情況 漫射光源是從四面八方均勻照來的,物體外表的色彩明暗與外表的形狀無關,僅與外表的反射系數(shù)有關。漫射光源照明的模型為EPd=RPId上式可以寫為EPd-r=RP-rId-r,EPd-g=RP-gId-g,EPd-b=RP-bId-b5.3光照模型⒈漫射光線的情況112⒉直射光線的情況

在這種情況下,物體外表的明暗隨外表法矢量和入射光線Is的夾角I的改變而變化。此時,物體外表會發(fā)生兩類反射,即漫反射和鏡面反射。5.3光照模型在直射照明下,物體外表P點的漫反射和鏡面反射的模型根據(jù)Lambert定律和Bui-TuongPhong的實驗提出(圖8.5)。EPs=RPcosiIPs+WP(i)cosnsIPs⒉直射光線的情況5.3光照模型在直射照明下,1135.3光照模型光照模型中各參數(shù)的圖示

Eps:P點反射的直射光線IPs的光強RP:P點的漫反射系數(shù)I:P點的法矢量N與入射光方向L的夾角Ips:入射的直射光線的強度WP(i):P點的鏡面反射系數(shù)(入射角i的函數(shù))5.3光照模型光照模型中各參數(shù)的圖示Eps:P1145.3光照模型W(i)與i的關系WP(i)是P點的鏡面反射系數(shù)(入射角i的函數(shù))。由于W(i)的計算比較復雜,實際中常用一個常數(shù)W代替。5.3光照模型W(i)與i的關系WP(i)115n控制高光的聚散,它和P點的材料有關。對于光滑發(fā)亮的金屬外表,n值取得大,從而產生會聚的高光點n與高光區(qū)域大小的關系

n控制高光的聚散,它和P點的材料有關。對于光滑發(fā)亮的1165.3光照模型⒊透射光線的情況透射模型如下:EPt=TPIPb其中:Ept:物體外表P點處透射出的光強TP:P點的透射系數(shù)(取值范圍為0~1)Ipb:到達P點背后的光強。5.3光照模型⒊透射光線的情況117將上述3種情況綜合起來,便獲得物體外表P點處所發(fā)光強EP的計算公式:EP=EPd+EPs+EPt=RPId+(RPcosi+WPcosns)IPs+TPIpb上式中只有cosi和coss的值是未知的,需要推算。將上述3種情況綜合起來,便獲得物體外表P點處所發(fā)光強E1185.3光照模型在計算機圖形學中,曲面體(例如球)通常是用多面體逼近表達的。這時,分別計算各個面的亮度,就會在多邊形與多邊形的交界處產生明暗的連續(xù)變化,影響曲面的顯示效果。解決方法:采用插補的方法,使得外表明暗光滑化。最常使用的外表明暗光滑化的方法有兩種,稱為Gourand方法和Phong方法。5.3光照模型119Gourand光滑方法如下:根本思想:在每個多邊形頂點處計算顏色,然后在各個多邊形內部進展線性插值,得到多邊形內部各點顏色。即它是一種顏色插值著色方法。根本步驟:⑴先計算出多面體頂點的法線方向⑵用光照模型求得V點的亮度。⑶由兩頂點的亮度,插值得出棱上各點的亮度。由棱上各點的亮度,插值得出面上各點的亮度?!蚕旅嬖敿毥榻B每步〕5.3光照模型Gourand光滑方法如下:5.3光照模型1205.3光照模型Step1:計算多面體頂點的法線方向設與多面體頂點V相鄰的多邊形為P1,P2,…,Pn,它們的法線分別為N1(a1,b1,c1),N2(a2,b2,c2),…,Nn(an,bn,cn)。那么V的法線nV取做:nV=(a1+a2+…+an)i+(b1+b2+…+bn)j+(c1+c2+…+cn)k5.3光照模型Step1:計算多面體頂點的法121Step2:用光照模型求得V點的亮度。

5.3光照模型Step3:由兩頂點的亮度,插值得出棱上各點的亮度。由棱上各點的亮度,插值得出面上各點的亮度。Step2:用光照模型求得V點的亮度。5.3光照122保存abc折痕的情況如果希望在某處不處理成光滑而要保存折痕效果(例如abc)方法是在頂點b設置2條法線。分別用語A和B,C和D之間的插值保存abc折痕的情況如果希望在某處不處理成光滑而要保存折123Gourand光滑化方法

優(yōu)點:能有效的顯示漫反射曲面,計算量小缺點:1、高光有時會異常2、當對曲面采用不同的多邊形進展分割時會產生不同的效果。3、Gouraud明暗處理會造成外表上出現(xiàn)過亮或過暗的條紋,稱為馬赫帶〔Mach_band〕效應改進-Phong提出雙線性法向插值,以時間為代價,解決高光問題Gourand光滑化方法優(yōu)點:能有效的顯示漫反射曲面,計124

明暗變化失常

馬赫帶效應Gourand光滑化方法

明暗變化失常馬赫帶效應Gourand光滑化方法125根本思想:通過對多邊形頂點的法矢量進展插值,獲得其內部各點的法矢量,又稱為法向插值著色方法。步驟 1、計算多邊形單位法矢量 2、計算多邊形頂點單位法矢量3、對多邊形頂點法矢量進展雙線性插值, 獲得內部各點的法矢量4、利用光照明方程計算多邊形內部各點顏色Phong光滑方法根本思想:通過對多邊形頂點的法矢量進展插值,獲得其內部各1265.3光照模型Phong著色方法NA由N1、N2線性插值得到:5.3光照模型Phong著色方法127兩種方法的比較1Phong著色方法繪制的圖形比Gouraud方法更真實,表達在兩個方面:高光區(qū)域的擴散,產生正確的高光區(qū)域1:Phong著色方法計算量遠大于Gouraud著色方法2:在處理某些多邊形分割的曲面時,Phong算法還不如Gouraud算法好。

兩種方法的比較1Phong著色方法繪制的圖形比Gourau128兩種方法的比較2Phone方法可以產生正確的高光區(qū)域GouraudPhone兩種方法的比較2Phone方法可以產生正確的高光區(qū)域Gou129兩種方法的比較3兩種方法的比較3130陰影生成

目的:增加圖形的立體感和場景的層次感,真實感陰影生成目的:增加圖形的立體感和場景的層次感,真實感131陰影可分為兩種:本影:本影即景物外表上那些沒有被光源〔景物中所有特定光源的集合〕直接照射的局部半影:而半影指的是景物外表上那些被某些特定光源〔或特定光源的一局部〕直接照射但并非被所有特定光源直接照射的局部。一般來說,半影的計算比本影要復雜得多陰影可分為兩種:132方法一:影域多邊形方法

所謂影域,就是物體投射出的臺體。判斷點是否在臺體中即可確定是否在陰影中。方法一:影域多邊形方法所謂影域,就是物體投射出的臺體133S1S2S3S4S5IIIIII利用影域多邊形進展陰影判斷為了判別一可見多邊形的某局部是否位于影域內,可將影域多邊形置入景物多邊形表中(右圖〕S1S2S3S4S5IIIIII利用影域多邊形進展陰影判斷134方法2:曲面細節(jié)多邊形方法

首先取光源方向為視線方向對景物進展第一次消隱,產生相對光源可見的景物多邊形〔稱為曲面細節(jié)多邊形〕,并通過標識數(shù)將這些多邊形與它們覆蓋的原始景物多邊形聯(lián)系在一起。位于編號i的原始景物多邊形上的曲面細節(jié)多邊形也注以編號i。接著算法取視線方向對景物進展第二次消隱。方法2:曲面細節(jié)多邊形方法135方法3:z緩沖器方法

為了方便地在光滑曲面片上生成陰影,Williams提出一種z緩沖器方法

首先,利用z緩沖器消隱算法取光源為視點對景物進展消隱。所有景物均變換到光源坐標系第二步,仍采用z緩沖器消隱算法按視線方向計算畫面方法3:z緩沖器方法為了方便地在光滑曲面片上生成陰影,136方法3:光線跟蹤方法

1980年Whitted提出了整體光照明模型,并用光線跟蹤〔raytracing〕技術來解這個模型在光線跟蹤算法中,要確定某點是否位于某個光源的陰影內,只要從該點出發(fā)向光源發(fā)出一根測試光線即可方法3:光線跟蹤方法1980年Whitted提出了整體137線光源的軟陰影

線光源產生的陰影是漸變的,將這種漸變的陰影稱之為軟陰影,而點光源產生的陰影是沒有漸變的,稱為硬陰影。線光源同樣有采樣數(shù)目的問題,只有表示線光源的點光源數(shù)目非常多,才可能產生平滑的軟陰影。在WolfgangHeidrich的文章中,提出了使用陰影貼圖,為線光源生成軟陰影的方法

線光源的軟陰影線光源產生的陰影是漸變的,將這種漸變的陰138WolfgangHeidrich提出的方法如下:1.

將線光源抽象為兩個點光源A和B,分別是線光源的兩端。2.

從點B處沿觀察方向繪制物體,利用生成的深度緩存生成邊界多邊形,如PQ。3.

將邊界多邊形位于遮擋物上的點顏色設為(0,0,0),位于陰影所在外表上的點顏色設為(1,1,1)。背景顏色設為(0.5,0.5,0.5),兩個通道組合后,顏色將為(1,1,1),使得這些位置的物體將完全被光源照射。從點A處沿觀察方向繪制邊界多邊形,可得到a圖中下面局部的可見度值,稱為A點的可見度通道。4.

同樣的方法生成B點的可見度通道,如圖b。5.

將兩個通道組合,得到線光源可見度通道,表示了線光源產生的陰影變化,如圖c。WolfgangHeidrich提出的方法如下:1.

139生成可見度通道的二維示意圖

生成可見度通道的二維示意圖140整體光照模型

簡單光照模型〔亦稱局部光照模型〕不考慮周圍環(huán)境對當前景物外表的光照明影響,忽略了光在環(huán)境景物之間的傳遞,很難表現(xiàn)自然界復雜場景的高質量真實感圖形。為了增加圖形的真實感,必須考慮環(huán)境的漫射、鏡面反射和規(guī)那么投射對景物外表產生的整體照明效果。整體光照模型簡單光照模型〔亦稱局部光照模型〕不考慮周圍141表現(xiàn)場景整體照明效果的一個重要方面是透明現(xiàn)象的模擬。整體光照明模型還要模擬光在景物之間的多重反射。Whitted光照明模型是一種整體光照明模型,這一模型能很好地模擬光能在光滑物體外表之間的鏡面反射和通過理想透明體產生的規(guī)那么透射表現(xiàn)場景整體照明效果的一個重要方面是透明現(xiàn)象的模擬。142Witted光照模型Whitted光照模型基于如下假設:物體外表向視點方向V輻射的光亮度Il由三局部組成:〔1〕光源直接照射引起的反射光亮度Ill?!?〕來自V的鏡面反射方向R的其它物體反射或折射來的光的亮度Isl?!?〕來自V的透射方向T的其它物體反射或折射來的光的亮度ItlWitted光照模型Whitted光照模型基于如下假設:143Witted光照模型Witted光照模型:或Is為鏡面反射方向的入射光強度;Ks為鏡面反射系數(shù),為0~1之間的一個常數(shù)It為折射方向光強,Kt為透射系數(shù),是0~1之間的常數(shù)Ic的計算可采用Phong模型因此,關鍵是Is和It的計算。如何計算呢?由于Is和It是來自V的鏡面反射方向r和規(guī)那么透射方向t的環(huán)境光亮度,因而首先必須確定r和tWitted光照模型Witted光照模型:144Witted光照模型-反射、折射方向計算視線方向V,求其反射方向R與折射方向T〔N是外表的法向方向〕視線V的反射方向r折射方向t其中:1

2

tItNVi1=sin(i2)=1/2sin()

Witted光照模型-反射、折射方向計算視線方向V,求其反射1455.4光線跟蹤光線跟蹤方法沿著到達視點的光線的反方向跟蹤,經(jīng)過屏幕上每一像素,找出與視線所交的物體外表點P0,并繼續(xù)跟蹤,找出影響P0點光強的所有光源,從而算出P0點上光照強度。光線跟蹤示意圖

右圖顯示了一個例子。連接觀察點和屏幕上的一個像素,即形成一條視線。

5.4光線跟蹤光線跟蹤示意圖右圖顯示了一個例1465.4光線跟蹤視線在P0處的反射和透射

視線V在P0處產生反射和透射,所產生的反射線和透射線作為新的視線與各平面求出新的交點P1、P2(圖8.13),并分別產生新的反射線和透射線……這樣不斷深入,直至所產生的射線射出場景。由此得到視線跟蹤軌跡上的一系列交點P0,P1,P2,…,Pn。這個過程可以表示為一棵光線跟蹤樹5.4光線跟蹤視線在P0處的反射和透射視線V147

右圖示出與上圖對應的一棵光線跟蹤樹,光強計算方法是以后序周游的算法遍歷這棵光線跟蹤樹。

光線跟蹤樹

5.4光線跟蹤右圖示出與上圖對應的一棵光線跟蹤樹,光強計算方法是以后序1485.4光線跟蹤

對于樹上任意一結點Pi,Pi處沿視線方向V射去的光強I為 I=IG+WPIr+TPItPi點所受到的光照

光線跟蹤方法優(yōu)點:

各物體之間反射的影響,因此顯示效果十分逼真。有消隱功能有影子效果

該算法具有并行性質

5.4光線跟蹤對于樹上任意一結點Pi,P149光線跟蹤算法中75%以上的工作量用于求交計算進展求交運算之前,常用包圍球或包圍盒的方法對物體進展是否與光線相交的預測。5.4光線跟蹤包圍球

算法1:包圍球檢查算法5.4光線跟蹤包圍球算法1:包圍球檢查算法1505.4光線跟蹤算法⒉包圍盒檢查算法(圖7.23〕包圍盒

包圍盒檢查算法不僅判斷光線是否與包圍盒相交,而且能判斷光線與物體各面的交點坐標。此外,包圍盒比包圍球更可靠。5.4光線跟蹤算法⒉包圍盒檢查算法(圖7.23〕1515.4光線跟蹤⒊

包含性檢查算法

包含性檢查是檢查P(x,y,z)是否在多邊形V(V1,V2,…,Vn)之內。Vi是多邊形

溫馨提示

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

評論

0/150

提交評論