我正在开发3D游戏引擎作为项目。我想对场景中的每个三角形/多边形使用空间分区算法来有效地检测碰撞。我只是想知道(在我开始编程细节之前)现代计算机游戏中典型的空间分区算法有多快?我有动态物体,所以我想我可能不得不每帧重新分配我的场景。这可能并且仍然可以达到合理的帧速率吗?如果答案可以包括数据(例如FPS,多边形的数量等),将非常感激。如果这太麻烦了,那就告诉我每一帧重新分配是否合理。
任何帮助都将不胜感激。
答案 0 :(得分:3)
我首先建议阅读有关Broad-Phase Collision Detection with CUDA的章节。它将比较不同的宽相位碰撞算法。您的表现取决于几个关键变量。第一个变量是您的算法是否使用GPU加速实现。前面引用的文章包含一些关于帧率与对象数量的基准。至少它应该让你很好地了解可实现的目标。
如果您不计划GPU加速,sweep and prune是最容易实现的方法之一。我不知道确切的数字,但是当物体很少而且你的物体在各帧之间没有太大的变化时,它表现得很好。在这种情况下,您有O(n)性能。这是一个很好的开始作为基线,因为它实现起来很简单。
如果你真的变得严肃,我推荐书Real-Time Collision Detection。我在研究碰撞检测方法时使用了这个。这是一个很好的资源。