将2d窗口点转换为3d点

时间:2011-07-13 16:24:20

标签: java opengl 3d

我正在为我正在制作的游戏编写类似于Blender的3D建模器。由于像blender这样的程序导出非常复杂的文件类型,并且有很多不需要的数据,我想为我的游戏编写一个简单的编辑器。我无法弄清楚的是如何将一个点从窗口上的二维投影映射到我在旋转世界的情况下点击三维世界的位置。

如果有人知道如何做这个或方法的任何好的教程任何帮助将不胜感激。我知道我可以使用光线追踪,但我想这会很复杂。

3 个答案:

答案 0 :(得分:2)

鼠标挑选的两种主要方法是:

  1. 交叉口测试
  2. 颜色选择
  3. 交叉测试在这两者中更受欢迎,在最简单的层面上涉及“射出”射线并检查它是否与任何点交叉。如果想要获得更灵敏的拾取(对于选择顶点上的点很有用),也可以用多面体替换光线。

    颜色选择包括禁用AA,混合,阴影等,并使用实体颜色为对象重新绘制场景。然后使用glReadPixels查找鼠标点的颜色,此颜色用于确定它是否单击了适用的对象。

    Ray Picking:

    拣货:

答案 1 :(得分:0)

您正在寻找的术语是mouse picking

答案 2 :(得分:0)

您需要的方法是gluUnProject。你需要窗口x,y和深度。

我认为,在您的情况下,为Blender编写一个简单的导出器可能要容易得多。