2012-06-10 62 views
0

我寫一個鉤子一個很老的遊戲,用DX 6.1,並且不爲L & T.如何從屏幕空間頂點座標給出FOV和屏幕分辨率來計算視空間頂點座標?

我攔截來電與float x, y, z, rhw頂點位置DX和我要重建鑑於空間座標XYZ 。我知道FOV和屏幕分辨率,但是我找到用於後向變換的公式的問題。有人可以給我這樣的公式,或者將我指向相關的互聯網來源嗎?

還有一兩件事 - 有時候,我收到了非常奇怪的座標,比如我管理的調試器來捕捉:

float x = 105.96786.0f; 
float y = 1963.8353.0f; 
float z = -2343.6121.0f; 
float rhw = 0.0f; 

我應該如何處理這種情況下,在恢復公式?

+0

所以,你想從世界COORDS計算屏幕COORDS?然後,您將使用'screenCoord = Transform(worldCoord,View * Proj)'進行操作'您必須將其縮放到視口。如果你想要另一個方向,使用逆矩陣。 –

+0

我想要另一個方向。當我將x/y/z/rhw傳遞給逆矩陣時,我會得到原始的worldCoord? – PiotrK

+0

是的。假設x/y縮放到視口(範圍[-1,1])。 –

回答

0

@Nico Schertler在上面的評論中指出,我應該使用逆矩陣 - 這個工程