我一直在尝试使用机器人Opengl代表一些移动/旋转物体。现在我想让他们碰撞并做出现实回应。
研究这个问题,我可以找到许多资源,告诉我如何确定两个3d形状是否在当前帧中发生碰撞(或者它们是否会在下一帧中发生碰撞)。但是,我无法找到描述如何获取有关已发生冲突的信息的资源。
例如,使用凸形,我想知道哪个顶点首先与哪个平面相撞,在帧之间的哪个时间。这样我就可以知道每个形状应该如何响应它的位置和旋转。
我可以描述每个顶点与光线的运动,以及每个帧之间的平面运动。然而,我有点难过,因为我将如何使用它来找到他们未来的交叉点,以及这是否有可能时间效率明智。我已经阅读了一些减少复杂计算需求的方法,比如octtree和hit box。
我对这个话题相当新,所以任何有关如何处理这些问题的资源或建议都会受到赞赏。谢谢你的时间!
答案 0 :(得分:4)
对于碰撞检测,您正在寻找的解决方案称为连续碰撞检测,解释可以是found here。检测两个物体之间的接触是相对简单的,尤其是如果忽略角速度,但如果您使用两个以上的物体进行模拟,则需要全局求解TOI,因为碰撞的顺序很重要,无法通过检查孤立的碰撞来确定对(不那么简单)。
此外,您应该说明您要解决的具体问题 - 因为找到TOI(影响时间)不是一项微不足道的任务and approximation could be perfectly valid solution in a certain scenario(例如游戏模拟)。
blog I already gave links包含关于该主题的平易近人的文章,如果您想要进一步阅读,可以参考进一步阅读。
答案 1 :(得分:2)
有关于这个主题的书籍,如:
http://realtimecollisiondetection.net/
http://www.geometrictools.com/Books/Books.html
您还可以检查开源物理引擎的源代码,因为它们实现了非常详细的冲突:
答案 2 :(得分:1)
停止重新发明轮子并尝试已经测试过的解决方案。
子弹物理(谷歌搜索)
ode 在ville krumlinde的帖子中显示了
* PS: *碰撞检测是一个复杂的主题,涉及一些毛茸茸的数学运算。即使你正在使用别人的图书馆。 :)