2011-07-13 129 views
1

我正在为我制作的游戏编写一个类似于Blender的3d建模器。由于像搅拌机这样的程序会输出非常复杂的文件类型和大量不需要的数据,因此我想为我的游戏编写一个简单的编辑器。我无法弄清楚的是,如何将窗口上的2D投影映射到3D世界中被点击的位置,以及旋转的世界。将2D窗口点转换为3D点

如果有人知道如何做到这一点或方法的任何好教程,将不胜感激。我知道我可以使用光线追踪,但这会让我觉得很复杂。

+0

Blender自己的文件格式当然是相当复杂的。但是对于Blender来说,编写习惯文件导入器/导出器非常容易。我只是这样做,而不是重新创造一个相当复杂的车轮。 – datenwolf

回答

2

鼠标采摘的两个主要方法是:

  1. 相交测试
  2. 颜色采摘

相交测试是比较受欢迎的,在最简单的层次包括“拍摄'射出光线并检查它是否与任何点相交。如果想要实现更灵敏的拾取(对于选择顶点上的点很有用),该射线也可以被多面体替换。

颜色采集涉及禁用AA,混合,阴影等,并使用物体的纯色重新绘制场景。然后使用glReadPixels在鼠标的位置查找颜色,并使用该颜色确定是否点击了适用的对象。

雷采摘:

颜色采摘:

0

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

我认为,就你而言,为Blender编写一个简单的导出器可能会容易得多。