OpenGL視點(diǎn)變換

OpenGL視點(diǎn)變換

ID:37712032

大小:150.82 KB

頁數(shù):11頁

時(shí)間:2019-05-29

OpenGL視點(diǎn)變換_第1頁
OpenGL視點(diǎn)變換_第2頁
OpenGL視點(diǎn)變換_第3頁
OpenGL視點(diǎn)變換_第4頁
OpenGL視點(diǎn)變換_第5頁
資源描述:

《OpenGL視點(diǎn)變換》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、OpenGL視點(diǎn)變換,模型變換,投影變換,視口變換詳解作者:luck_net

2、出處:博客園

3、?2012/2/2214:46:49

4、閱讀112次OpenGL通過相機(jī)模擬、可以實(shí)現(xiàn)計(jì)算機(jī)圖形學(xué)中最基本的三維變換,即幾何變換、投影變換、裁剪變換、視口變換等,同時(shí),OpenGL還實(shí)現(xiàn)了矩陣堆棧等。理解掌握了有關(guān)坐標(biāo)變換的內(nèi)容,就算真正走進(jìn)了精彩地三維世界。一、OpenGL中的三維物體的顯示(一)坐標(biāo)系統(tǒng)在現(xiàn)實(shí)世界中,所有的物體都具有三維特征,但計(jì)算機(jī)本身只能處理數(shù)字,顯示二維的圖形,將三維物體及二維數(shù)據(jù)聯(lián)系在一起的唯一紐帶就是坐標(biāo)。為了使

5、被顯示的三維物體數(shù)字化,要在被顯示的物體所在的空間中定義一個(gè)坐標(biāo)系。這個(gè)坐標(biāo)系的長度單位和坐標(biāo)軸的方向要適合對(duì)被顯示物體的描述,這個(gè)坐標(biāo)系稱為世界坐標(biāo)系。世界坐標(biāo)系是始終固定不變的。OpenGL還定義了局部坐標(biāo)系的概念,所謂局部坐標(biāo)系,也就是坐標(biāo)系以物體的中心為坐標(biāo)原點(diǎn),物體的旋轉(zhuǎn)或平移等操作都是圍繞局部坐標(biāo)系進(jìn)行的,這時(shí),當(dāng)物體模型進(jìn)行旋轉(zhuǎn)或平移等操作時(shí),局部坐標(biāo)系也執(zhí)行相應(yīng)的旋轉(zhuǎn)或平移操作。需要注意的是,如果對(duì)物體模型進(jìn)行縮放操作,則局部坐標(biāo)系也要進(jìn)行相應(yīng)的縮放,如果縮放比例在案各坐標(biāo)軸上不同,那么再經(jīng)過旋轉(zhuǎn)操作后,局部坐標(biāo)軸

6、之間可能不再相互垂直。無論是在世界坐標(biāo)系中進(jìn)行轉(zhuǎn)換還是在局部坐標(biāo)系中進(jìn)行轉(zhuǎn)換,程序代碼是相同的,只是不同的坐標(biāo)系考慮的轉(zhuǎn)換方式不同罷了。計(jì)算機(jī)對(duì)數(shù)字化的顯示物體作了加工處理后,要在圖形顯示器上顯示,這就要在圖形顯示器屏幕上定義一個(gè)二維直角坐標(biāo)系,這個(gè)坐標(biāo)系稱為屏幕坐標(biāo)系。這個(gè)坐標(biāo)系坐標(biāo)軸的方向通常取成平行于屏幕的邊緣,坐標(biāo)原點(diǎn)取在左下角,長度單位常取成一個(gè)象素。(二)三維物體的相機(jī)模擬為了說明在三維物體到二維圖象之間,需要經(jīng)過什么樣的變換,我們引入了相機(jī)(Camera)模擬的方式,假定用相機(jī)來拍攝這個(gè)世界,那么在相機(jī)的取景器中,就

7、存在人眼和現(xiàn)實(shí)世界之間的一個(gè)變換過程。圖一、相機(jī)模擬OpenGL中的各種坐標(biāo)變換從三維物體到二維圖象,就如同用相機(jī)拍照一樣,通常都要經(jīng)歷以下幾個(gè)步驟:1、將相機(jī)置于三角架上,讓它對(duì)準(zhǔn)三維景物,它相當(dāng)于OpenGL中調(diào)整視點(diǎn)的位置,即視點(diǎn)變換(ViewingTransformation)。2、將三維物體放在場(chǎng)景中的適當(dāng)位置,它相當(dāng)于OpenGL中的模型變換(ModelingTransformation),即對(duì)模型進(jìn)行旋轉(zhuǎn)、平移和縮放。3、選擇相機(jī)鏡頭并調(diào)焦,使三維物體投影在二維膠片上,它相當(dāng)于OpenGL中把三維模型投影到二維屏幕上

8、的過程,即OpenGL的投影變換(ProjectionTransformation),OpenGL中投影的方法有兩種,即正射投影和透視投影。為了使顯示的物體能以合適的位置、大小和方向顯示出來,必須要通過投影。有時(shí)為了突出圖形的一部分,只把圖形的某一部分顯示出來,這時(shí)可以定義一個(gè)三維視景體(ViewingVolume)。正射投影時(shí)一般是一個(gè)長方體的視景體,透視投影時(shí)一般是一個(gè)棱臺(tái)似的視景體。只有視景體內(nèi)的物體能被投影在顯示平面上,其他部分則不能。4、沖洗底片,決定二維相片的大小,它相當(dāng)與OpenGL中的視口變換(ViewportTr

9、ansformation)(在屏幕窗口內(nèi)可以定義一個(gè)矩形,稱為視口(Viewport),視景體投影后的圖形就在視口內(nèi)顯示)規(guī)定屏幕上顯示場(chǎng)景的范圍和尺寸。二、OpenGL中的幾種變換OpenGL中的各種轉(zhuǎn)換是通過矩陣運(yùn)算實(shí)現(xiàn)的,具體的說,就是當(dāng)發(fā)出一個(gè)轉(zhuǎn)換命令時(shí),該命令會(huì)生成一個(gè)4X4階的轉(zhuǎn)換矩陣(OpenGL中的物體坐標(biāo)一律采用齊次坐標(biāo),即(x,y,z,w),故所有變換矩陣都采用4X4矩陣),當(dāng)前矩陣與這個(gè)轉(zhuǎn)換矩陣相乘,從而生成新的當(dāng)前矩陣。例如,對(duì)于頂點(diǎn)坐標(biāo)v,轉(zhuǎn)換命令通常在頂點(diǎn)坐標(biāo)命令之前發(fā)出,若當(dāng)前矩陣為C,轉(zhuǎn)換命令構(gòu)成的

10、矩陣為M,則發(fā)出轉(zhuǎn)換命令后,生成的新的當(dāng)前矩陣為CM,這個(gè)矩陣再乘以頂點(diǎn)坐標(biāo)v,從而構(gòu)成新的頂點(diǎn)坐標(biāo)CMv。上述過程說明,程序中繪制頂點(diǎn)前的最后一個(gè)變換命令最先作用于頂點(diǎn)之上。這同時(shí)也說明,OpenGL編程中,實(shí)際的變換順序與指定的順序是相反的。(一)視點(diǎn)變換視點(diǎn)變換確定了場(chǎng)景中物體的視點(diǎn)位置和方向,就向上邊提到的,它象是在場(chǎng)景中放置了一架照相機(jī),讓相機(jī)對(duì)準(zhǔn)要拍攝的物體。確省時(shí),相機(jī)(即視點(diǎn))定位在坐標(biāo)系的原點(diǎn)(相機(jī)初始方向都指向Z負(fù)軸),它同物體模型的缺省位置是一致的,顯然,如果不進(jìn)行視點(diǎn)變換,相機(jī)和物體是重疊在一起的。執(zhí)行視點(diǎn)

11、變換的命令和執(zhí)行模型轉(zhuǎn)換的命令是相同的,想一想,在用相機(jī)拍攝物體時(shí),我們可以保持物體的位置不動(dòng),而將相機(jī)移離物體,這就相當(dāng)于視點(diǎn)變換;另外,我們也可以保持相機(jī)的固定位置,將物體移離相機(jī),這就相當(dāng)于模型轉(zhuǎn)換。這樣,在OpenGL中,以逆時(shí)針旋轉(zhuǎn)物體就

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。