《線上線下混合式計算機圖形學基礎實驗教程》課件-第11章_第1頁
《線上線下混合式計算機圖形學基礎實驗教程》課件-第11章_第2頁
《線上線下混合式計算機圖形學基礎實驗教程》課件-第11章_第3頁
《線上線下混合式計算機圖形學基礎實驗教程》課件-第11章_第4頁
《線上線下混合式計算機圖形學基礎實驗教程》課件-第11章_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第11章紋理映射11.1實驗內(nèi)容簡述和實驗目標11.2紋理映射11.3

ShadowMapping陰影生成11.4課外拓展性實驗

11.1實驗內(nèi)容簡述和實驗目標

基本實驗內(nèi)容包括:紋理映射(創(chuàng)建紋理、設置紋理參數(shù)、設定映射方式、映射紋理坐標與幾何坐標、設置紋理的重復度)和ShadowMapping陰影生成。同時,配備了一個課外拓展性實驗。

完成本實驗后,讀者能夠:

(1)熟記和描述全局光照的基本原理和光線跟蹤算法(布魯姆知識模型:記憶、理解);

(2)熟記和描述陰影的產(chǎn)生原理(布魯姆知識模型:記憶、理解);

(3)結(jié)合OpenGL能在靜態(tài)場景下基于光線跟蹤進行繪制(布魯姆知識模型:應用)。

11.2紋理映射

紋理映射是真實感圖形制作中非常重要的一個環(huán)節(jié),其過程較復雜,包括:①創(chuàng)建紋理;②設置紋理參數(shù);③設定映射方式;④映射紋理坐標和幾何坐標;⑤設置紋理的重復度。

11.2.1創(chuàng)建紋理

其中:參數(shù)hinst用于指示圖像資源的來源,若屬于當前程序以外的資源,則其值取NULL,否則其值取Windows標準函數(shù)AfxGetInstanceHandle的返回值;參數(shù)lpszName是圖像在本地存放的完整路徑,包括文件名;參數(shù)uType用于指定圖像類型,如IMAGE_BITMAP;參數(shù)cxDesired、cyDesired分別指定圖像實際的長和寬;參數(shù)fuLoad表示額外的屬性配置,一般為LR_DEFAULTCOLOR,表示缺省屬性。更多其他格式圖像的加載,讀者可參考相關(guān)文獻。

加載本地圖像后,需要將其創(chuàng)建成在OpenGL中能夠進行映射的紋理,即將圖像設置為當前OpenGL渲染管線中的紋理。針對二維紋理,這里使用glTexImage2D函數(shù),其原型為

其中:參數(shù)target用于指定紋理類別,它可以是GL_TEXTURE_1D、GL_TEXTURE_2D和GL_TEXTURE_3D,分別對應一維、二維和三維紋理,此處設置為GL_TEXTURE_2D;參數(shù)level表示多級分辨率的紋理圖像的級數(shù),若只有一種分辨率,則level設置為0;參數(shù)components表示用圖像中的哪些分量進行調(diào)整和混合,取值為1到4的整數(shù),1表示選擇了R分量,2表示選擇了R和A兩個分量,3表示選擇了R、G、B三個分量,4表示選擇了R、G、B、A四個分量;參數(shù)width和height分別給出了圖像的長度和寬度單位為像素;參數(shù)border指紋理邊界的長度,一般取兩個像素;參數(shù)format和type分別描述了紋理映射的格式和數(shù)據(jù)類型;參數(shù)pixels為通過LoadImage加載進來的圖像數(shù)據(jù)。

11.2.2設置紋理參數(shù)

紋理映射時,由于圖像和待映射多邊形區(qū)域在尺寸和形狀上存在差異,因此會造成映射到多邊形的圖像走樣。為改善上述效果,可用glTexParmeter{if}函數(shù)來調(diào)整映射模式,該函數(shù)原型為

11.2.3設定映射方式

OpenGL提供了多種紋理映射模式,既可以將圖像顏色直接映射到多邊形上,又可以用紋理中的值來調(diào)整多邊形表面的原有顏色,即將圖像中的顏色與多邊形原來的顏色進行混合。用于設置上述映射模式的函數(shù)如下:

11.2.4映射紋理坐標與幾何坐標

在繪制帶紋理的三維圖形時,需要給三維圖形(以網(wǎng)格面為單位)的每個頂點確定紋理坐標。頂點坐標決定了頂點在屏幕上的像素坐標,紋理坐標決定了紋理(圖像)中的哪一個紋素(顏色)對應到該像素坐標上。同時,三維圖形每個網(wǎng)格面內(nèi)部點(最后也對應到屏幕上的像素)的紋理坐標可采用第10章光照明暗過渡中的插值方法來確定。

為了便于開展插值和紋理映射,無論加載的原始圖像長寬如何,在進入紋理映射前,通常都被轉(zhuǎn)化為一張在s方向(橫向,對應x軸)和t方向(縱向,對應y軸)上都被歸一化的紋理(圖像)。特別地,有些參考資料中的紋理坐標系用u和v表示,u對應s,v對應t。在OpenGL中指定幾何點對應紋理坐標的常用函數(shù)如下:

1.案例關(guān)鍵代碼實現(xiàn)

2.案例效果

如圖11-1所示為未貼紋理的矩形網(wǎng)格面繪制效果圖,圖11-2所示為對上述網(wǎng)格面實施紋理映射后所得到的網(wǎng)格面繪制效果圖。

圖11-1直接網(wǎng)格面繪制效果圖

圖11-2紋理映射繪制效果圖

11.2.5設置紋理的重復度

對于給定的網(wǎng)格面,其紋理的重復度,除了通過glTexParameter*函數(shù)進行調(diào)整之外,在進行紋理坐標和模型幾何坐標對應時也可以改變。例如,在紋理坐標的s和t方向上都從標準的[0,1]擴大到[0,2](即glTexCoord*中的參數(shù)值),并保持待映射網(wǎng)格面的尺寸不變(即glVertex3f中的坐標值)。此時,在s和t方向上,紋理的密度均提升了兩倍,如圖11-3和圖11-4所示。

圖11-3初始紋理映射效果圖

圖11-4改變紋理映射重復度的效果圖

1.關(guān)鍵比較代碼

2.案例效果

在紋理坐標綁定過程中,將s和t方向均設為標準的[0,1],此時紋理映射效果如圖11-3所示。當將s和t方向的坐標提升到[0,2]時,紋理映射效果如圖11-4所示。

11.3ShadowMapping陰影生成

ShadowMapping陰影生成的算法步驟如下:

(1)根據(jù)圖形顯示窗口中像素點在橫向和縱向的分布數(shù)量,對投影面進行均勻點采樣。

(2)將視點坐標系進行旋轉(zhuǎn),使得視點與點光源重合,再從光源沿著投影面(已隨視點坐標系同步旋轉(zhuǎn))的每個采樣點向場景發(fā)射射線,與場景求交,并取得距離光源最近的點存儲到深度緩存矩陣中(矩陣中的每個單元存放一個三維點坐標和相應的陰影值),同時在該投影面設置一個與其位置重合的虛擬的深度緩存面。

(3)將視點坐標系反向旋轉(zhuǎn)到初始位置,利用光線跟蹤算法(僅跟蹤一次)對場景進行陰影計算。具體的步驟如下:

①從視點沿著投影面(已隨視點坐標系同步旋轉(zhuǎn)回歸原位)的每個采樣點向場景發(fā)射射線(入射光線)。

②計算上述每條光線與場景中所有物體的相交情況,找出離采樣點最近的交點。

③將該交點與光源相連,計算其與深度緩存面的交點。

④在深度緩存矩陣中尋找與該交點最近的矩陣單元,將其陰影值或其周圍若干矩陣單元中的陰影平均值作為該交點的陰影值。

1.關(guān)鍵數(shù)據(jù)結(jié)構(gòu)

(1)對原有的三維點數(shù)據(jù)結(jié)構(gòu)進行擴展(代碼如下所示),并將其用于本節(jié)的陰影生成實驗。

(2)對原有的三維向量數(shù)據(jù)結(jié)構(gòu)進行擴展(代碼如下所示),并將其用于本節(jié)的陰影生成實驗。

(3)深度緩存矩陣單元定義如下:

(4)三維空間中射線的數(shù)據(jù)結(jié)構(gòu)定義如下:

(5)三維模型每個三角形網(wǎng)格面的數(shù)據(jù)結(jié)構(gòu)定義如下:

2.關(guān)鍵函數(shù)代碼實現(xiàn)

3.案例效果

如圖11-5所示為僅有立方體和平面的簡單場景,圖11-6所示為對簡單場景進行ShadowMapping后產(chǎn)生的陰影效果圖。

圖11-5無陰影的簡單場景

圖11-6用ShadowMapping產(chǎn)生的陰影效果

11.4課外拓展性實驗

溫馨提示

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

評論

0/150

提交評論