我目前正在研究一种碰撞检测算法,该算法具有广泛的阶段来检测可能的碰撞,而精细的阶段则可以确定性地解决碰撞。广泛阶段基于分层哈希网格并且表现良好。
精细阶段基于自定义算法并使用n-body 碰撞。但是,为了准确解决多于 2 体的碰撞,我需要以某种方式注册所有碰撞和碰撞集中的相应元素。
在广泛阶段以某种方式保存碰撞以迭代精细阶段中的碰撞集的最佳方法是什么?我一直在思考某些数据结构的思路,但我还没有想出一个理想的解决方案。
我目前正在研究一种碰撞检测算法,该算法具有广泛的阶段来检测可能的碰撞,而精细的阶段则可以确定性地解决碰撞。广泛阶段基于分层哈希网格并且表现良好。
精细阶段基于自定义算法并使用n-body 碰撞。但是,为了准确解决多于 2 体的碰撞,我需要以某种方式注册所有碰撞和碰撞集中的相应元素。
在广泛阶段以某种方式保存碰撞以迭代精细阶段中的碰撞集的最佳方法是什么?我一直在思考某些数据结构的思路,但我还没有想出一个理想的解决方案。
看起来该论文的技术不适用于性能关键的情况。
似乎该技术试图解决一个对象可以“传送”到不同对象的另一侧而不会发生碰撞的情况,因为模拟中的移动对象通常只是在每次迭代中重新定位。
我建议改为将每个对象挤压到自上次更新以来它经过的任何空间。例如,一个向上移动的盒子会变成一个更高的盒子。
然后,您可以快速检测潜在的碰撞,而无需考虑运动甚至更新速率。然后可以根据需要仔细检查潜在的碰撞。
我目前的做法
在考虑了这个问题之后,我决定尝试以下方法。
如果现在在广泛阶段检测到碰撞:
在精细阶段,我现在可以简单地遍历碰撞列表中的所有碰撞集并进行精确的碰撞解决。
该解决方案相当快,但我有点担心内存占用。我将不得不做几个基准测试才能了解更多信息。