1
我想要做的具體名稱是「unproject」=將屏幕點映射到3D世界。將屏幕點映射到3D真實位置
所以我發現這個網站它有簡單的公式用於映射三維座標轉換爲2D畫面:
http://www.petesqbsite.com/sections/tutorials/tuts/perspective.html
我已經廣泛使用這些公式,但現在我希望能夠與互動通過懸停在屏幕上的3D世界。
我不想讓2D座標與3D對象相關聯,而是想找到一個將屏幕指向真實的方程。我試着對以下2個方程進行逆向工程,試圖找到答案:
screenPoint.x = (int) ((eye.z * (realPoint.x-eye.x))/(eye.z + realPoint.z) + eye.x);
screenPoint.y = 480 - (int) ((eye.z * (realPoint.y-eye.y))/(eye.z + realPoint.z) + eye.y);
但是我沒有成功(在數學上不可能)。
任何幫助將不勝感激!
謝謝!
這是不可能的在一般情況下(投影是不可逆的)。但在簡單情況下,您可以使用光線追蹤來確定將哪些對象投影到給定像素上。或者,您可以在生成2D圖像時預先生成信息。 – 2012-03-31 19:09:18
所以你說的光線追蹤我可以,給出: -camera座標 - 屏幕平面的等效 - 在3D世界中的某些平面(xz)平面的等效 從屏幕到平面的映射點3D世界? 我只是想在我懸停在xz平面上時點亮。 – user1170679 2012-03-31 19:45:06
我找到了我的問題的答案:http://stackoverflow.com/questions/9971701/unprojecting-2d-screen-coordinates-to-3d-coordinates – user1170679 2012-04-02 09:57:21