【发布时间】:2012-03-31 19:07:03
【问题描述】:
我正在尝试做的具体名称是“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 图像时预先生成信息。
-
所以你是说使用光线追踪我可以,给定: - 相机坐标 - 屏幕平面的方程 - 3D 世界地图中某个平面 (xz) 平面的方程从屏幕指向3D世界中的飞机?当我将鼠标悬停在 xz 平面上时,我只是想让它们亮起来。
-
我找到了我的问题的答案:stackoverflow.com/questions/9971701/…
标签: 3d mapping 2d projection perspective