何时在OpenGL中执行3D碰撞检测?

时间:2013-01-14 19:20:46

标签: c++ opengl graphics collision-detection

我正在制作一个使用各种高级图形方法的程序。目前,两个Wavefront obj模型已导入并在屏幕上呈现。我试图在这两个对象之间实现强力三角形 - 三角形碰撞检测,但我担心何时执行这些操作。我不会在这个程序中有动画和动作,我想要做的就是当我翻译(glTranslate)一个对象以便它与另一个对象碰撞时,为碰撞的三角形着色。

我的碰撞检测功能是否适用于我的初始模型顶点或者我需要以某种方式获得当前坐标?

2 个答案:

答案 0 :(得分:1)

最好将绘图中的移动(物理,如果你愿意)分开。您可以使用空闲功能或计时器功能移动波前并检查碰撞并简单地将三角形标记为碰撞(或任何您想要指示它们碰撞的内容),然后强制重绘屏幕,您的绘图代码应该只需要小心清除屏幕并重新绘制所有顶点并根据它们是否标记为碰撞而适当地着色它们。

碰撞检测很可能适用于您的模型顶点,但您需要跟踪对象在“空间”中的位置,以便进行适当的数学运算。

答案 1 :(得分:0)

最好将这两个模块分开:渲染和物理/碰撞。

因此,一个对象有两个表示:一个用于渲染(纹理,模型几何,材质等),一个用于物理(边界框,字空间位置等)

  • 物理学不必如此完美,通常只需要一些网格近似。因此对于房屋对象,我们只使用边界框 或测试碰撞的边界球。
  • 另一件事是碰撞层次结构:从低分辨率到高分辨率。首先只测试边界球(廉价测试),然后逐渐移动到三角形到三角形碰撞测试(相当昂贵)