2013-03-11 82 views
0

如何將(x,y,z)座標從視角金字塔內部轉換爲(x',y',z')視角立方體內部的座標? (在右手座標系中)如何管理角度轉換?

我試圖將此透視矩陣與(x,y,z)向量相乘,但結果並非我所期望的。

projection matrix

我嘗試了:FOV = 70°,方面= 4/3,近= 100,遠= 100; x = 100,y = 100,z = -300;

將結果(158.28, 211.05, -344.44)

所有我想是這樣的:

plan

由於提前,

+0

如果你的近,遠都設置爲相同的值,你會得到一個除以零。這是一個錯字嗎? – 2013-03-11 16:21:24

回答

2

雖然立體矩陣通常變換空間,使得期望的視錐映射到一個規範的體積(可能是一個單位立方體,但不是所有的圖形管道是相同的 - 例如,D3D與OpenGL不同),這個體積描述在同質(項目ive)座標。這是因爲實際的投影是非線性變換,但是使用投影座標系允許對大部分流水線使用線性變換。

因此,如果您想在3D(或2D)空間中獲得點,則仍然需要執行投影。

這只是一個鴻溝。當你用一個透視矩陣乘一個點(x,y,z,1)時,你得到一個向量-4(x',y',z',w')。然後需要用x',y'和z'除以w'來進行投影。