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