【发布时间】:2016-01-17 03:51:01
【问题描述】:
我想知道从 2D 获取 3D 位置的问题。在我的应用程序中,我设置了所有内容(mvp 矩阵、鼠标的屏幕位置)。
我们通过以下变换从 3D 转到 2D。
gl_Position = 投影* 视图 * 模型 * 顶点;
然后将这些剪辑坐标除以w到NDC,再转换为屏幕坐标。我想做相反的事情(鼠标点击到 3D)。对于 x 和 y,筛选到 NDC 很容易。但是 z 数据丢失了。
据我所知,恢复 3D 数据的唯一方法是使用基于树的空间数据结构的光线投射,也许还有 CUDA/OpenCL。但我不确定。还有其他方法吗?鉴于我们有 MVP 矩阵和屏幕坐标,有没有办法恢复 3D 位置?
【问题讨论】: