这是我的问题。我正在创建一个游戏,想知道如何进行碰撞检测。我有几种情况需要分析并找到最佳解决方案。
事先声明,我没有使用任何第三方物理库,而是要在内部实现(因为这是教育项目,我没有时间表,我想学习)。
我有两种类型的网格需要进行碰撞检测:
1)静态网格(在屏幕上移动,但没有任何动画)
2)皮肤/骨骼网格(有动画)
目前我有这个解决方案(很粗略):
首先,我对一些包围整个网格的边界体(在我的情况下是胶囊体)进行测试,之后:
1)对于静态网格,我手动将它们分成块(在建模程序中),对于每个块,我使用球体/AABB测试。(效果不错,但是切割每个网格有点乱:P)(我尝试了一种自动通过平面划分网格的系统,但结果不好:()
2)对于动画网格,我目前在运行时将网格分成x块(其中x是骨骼数量)。每个块包含受该骨骼主要影响的顶点。(有时效果不错,有时效果非常糟糕:|)
请注意,网格的分割是在加载时完成的而不是每次运行时(否则它会像幻灯片一样运行)。
问题是:
对于这两种情况,什么是最合理的想法?有没有材料可以供我学习这些方法?(带有一些源代码和解释更好(语言不重要,当我理解算法时,实现很容易))你能为什么该解决方案优于其他解决方案提供论据吗?我听说了很多关于kd树、八叉树等的讨论,虽然我理解它们的结构,但我不知道它们在碰撞检测场景中的效用。
感谢您的回答!
编辑:试图在网上找到一个具有一些解释的K-Dop示例。仍然没有找到任何线索?我对如何使用其他类型的边界体有效地测试K-Dop感兴趣,但网络上的文档似乎非常缺乏。 :(
事先声明,我没有使用任何第三方物理库,而是要在内部实现(因为这是教育项目,我没有时间表,我想学习)。
我有两种类型的网格需要进行碰撞检测:
1)静态网格(在屏幕上移动,但没有任何动画)
2)皮肤/骨骼网格(有动画)
目前我有这个解决方案(很粗略):
首先,我对一些包围整个网格的边界体(在我的情况下是胶囊体)进行测试,之后:
1)对于静态网格,我手动将它们分成块(在建模程序中),对于每个块,我使用球体/AABB测试。(效果不错,但是切割每个网格有点乱:P)(我尝试了一种自动通过平面划分网格的系统,但结果不好:()
2)对于动画网格,我目前在运行时将网格分成x块(其中x是骨骼数量)。每个块包含受该骨骼主要影响的顶点。(有时效果不错,有时效果非常糟糕:|)
请注意,网格的分割是在加载时完成的而不是每次运行时(否则它会像幻灯片一样运行)。
问题是:
对于这两种情况,什么是最合理的想法?有没有材料可以供我学习这些方法?(带有一些源代码和解释更好(语言不重要,当我理解算法时,实现很容易))你能为什么该解决方案优于其他解决方案提供论据吗?我听说了很多关于kd树、八叉树等的讨论,虽然我理解它们的结构,但我不知道它们在碰撞检测场景中的效用。
感谢您的回答!
编辑:试图在网上找到一个具有一些解释的K-Dop示例。仍然没有找到任何线索?我对如何使用其他类型的边界体有效地测试K-Dop感兴趣,但网络上的文档似乎非常缺乏。 :(