我正在制作一个使用各种高级图形方法的程序。目前,两个 Wavefront obj 模型被导入并呈现在屏幕上。我正在尝试在这两个对象之间实现蛮力三角-三角碰撞检测,但我担心何时执行这些操作。在这个程序中我不会有动画和运动,我想做的就是当我翻译(glTranslate)一个对象时,它会与另一个对象发生碰撞,从而为碰撞的三角形着色。
我的碰撞检测功能应该与我的初始模型顶点一起工作还是我需要以某种方式获取当前坐标?
我正在制作一个使用各种高级图形方法的程序。目前,两个 Wavefront obj 模型被导入并呈现在屏幕上。我正在尝试在这两个对象之间实现蛮力三角-三角碰撞检测,但我担心何时执行这些操作。在这个程序中我不会有动画和运动,我想做的就是当我翻译(glTranslate)一个对象时,它会与另一个对象发生碰撞,从而为碰撞的三角形着色。
我的碰撞检测功能应该与我的初始模型顶点一起工作还是我需要以某种方式获取当前坐标?
最好将运动(如果你愿意的话,物理)与绘图分开。您可以使用空闲功能或计时器功能来移动波前并检查碰撞,只需将三角形标记为碰撞(或任何您想要指示它们碰撞的东西),然后强制重绘屏幕,您的绘图代码应该只是小心清除屏幕并重新绘制所有顶点并根据它们是否被标记为碰撞来适当地着色它们。
碰撞检测很可能适用于您的模型顶点,但您需要跟踪对象在“空间”中的位置以适当地进行数学运算。
最好将这两个模块分开:渲染和物理/碰撞。
因此一个对象有两种表示:一种用于渲染(纹理、模型几何、材料等),另一种用于物理(边界框、字空间位置等)