D3D透視投影矩陣推導_第1頁
D3D透視投影矩陣推導_第2頁
D3D透視投影矩陣推導_第3頁
D3D透視投影矩陣推導_第4頁
D3D透視投影矩陣推導_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 Dnect3D9透視投影矩陣的推導D3DXMATRIX*D3DXMatiixPerspectiveFovLH(D3DXMATRIX*pOut.FLOATfovy.FLOATAspect.FLOATzn.FLOATzf/計算出的透視矩陣Y軸方向的視域角度(弧度)/縱橫比(高/寬)/近裁剪面/遠裁剪面1Aspectydvycot(?。?0zf-zn二f_zn二f_m0010所謂做透視投影變換就是為了讓畫面呈現(xiàn)出有近大遠小的效果,讓畫面更真實。D3D的透視變換為:將在視空間(相機空間)中的視椎變換到一個新的坐標系空間中一投影空間。在投影空間中,原來的視椎被變?yōu)橐粋€長方體,左裁剪面為X二1,右裁剪面

2、為x=l,上裁剪面為y=l,下裁剪面為y二1,近裁剪面為Z二0,遠裁剪面為Z二1,這樣便于硬件對圖形進行裁剪。如圖1:圖1 現(xiàn)在開始分別解釋三個軸所對應的變換。我們知道,D3D是將近裁剪面做為視平面的,而視平面的長和寬成一定比例,所以我們只要求出其中X或Y軸其中Z-就可以用例比縮放得到另外一個。我們以Y軸方向開始解釋,因為參數(shù)fovy為Y軸方向的視域角度。如圖2:圖2fovy為0現(xiàn)在我們以平行YZ平面的方向來觀察來解釋Y軸方向的變換。如圖3:圖3P與FP為有相同x,y坐標,而z坐標不同的兩個點:P嚴FP、(雖然圖3沒有繪制出x軸的情況,但你可以將y軸當做x軸來看),Py=FPy,巳FP:,而在

3、近裁面上的投景卻是弓、FP很明顯這樣就形成了近大遠小的效果。再看圖3,設P幺y.z)為相機空間中任意一點,Pz(xz.yzzn)為點P在視平面(近PrPP裁剪面)上的投影,根據(jù)相似三角形得丄=二,所以PJ=丄丁?,F(xiàn)在我們要將P映片在視平面的投影為同樣,可以很簡單的得出在視平面上的投影為:(公式1)(公式2)射到1.1之間。設視平面的高為H,映射的變換就是牛如圖3由于PJ=Jcot(-)一-一H2AspectAspect為視平面的高比上寬現(xiàn)在就剩下這個更簡單可以直接用一個線性換來表示:P:=昱二(公式3)一fit-zn這樣就被映射到0.1之間了?,F(xiàn)在我們要以矩陣的形式來表示這三個變換,要想使用矩

4、陣,就要將這三個變換寫成一個齊次形式的矩陣。用這個矩陣變換后的P點為(”片”.Pw),歸一化Z后才是最終的結果。(P/.Pv.R.1)=(.聖.)(公式4)WWWW觀察一下(公式1),(公式2)我們看可以發(fā)現(xiàn)它們的共同點就是都除以了所以我們試著把變換的結果定為(&”耳”.PJ.),也就是來推導與很簡單1Aspect我們就能得出與丁,只是去掉除以E而以:(公式5)(公式6)關鍵就在于推導EJ我們可以這樣看P兒讓P=Pw9這樣的話當Pm時Hn=0,當Pz=-f時丁,我們也可以這樣表示:P.-二A二n=0fri-znv二f=了fii_zn(公式7)可以看到當巳=時,無論乘以什么數(shù)這個式子都是成立的,所以我們就用P.=旦二1-f來表示這個變換。我們可以驗證空二1孑值的范圍。當P.位于0.fii一fti_二nfii_二nP二時空二丄的范圍為0.丄,所以空二1才的范圍為0.I完全滿足我們的條件。fii-二nP:fiifii_二nP:將改寫一下:fii_二nE-邑也一丁二(公式8)將(公式5),(公式6),(公式8)寫成齊次變換矩陣的形式為:00(公式9)10fti-znfilm注意:至于何時何地對(”P;1PJ)進行歸一化是由Direct3D自已來實現(xiàn)的也就是說

溫馨提示

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

評論

0/150

提交評論