1

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

我的碰撞检测功能应该与我的初始模型顶点一起工作还是我需要以某种方式获取当前坐标?

4

2 回答 2

1

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

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

于 2013-01-14T19:24:32.383 回答
0

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

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

  • 物理学不必如此完美,通常只需要一些网格近似。因此,对于房屋对象,我们将仅使用边界框或边界球来测试碰撞。
  • 另一件事是碰撞层次:从低分辨率到高分辨率。首先只测试边界球(便宜的测试),然后逐渐转向三角形到三角形的碰撞测试(相当昂贵)
于 2013-01-15T10:38:36.297 回答