|
1
5
当前许多AAA游戏中最常用的方法是静态网格的“k-DOP”简化碰撞,以及骨骼网格的简化物理实体表示。 如果你搜索“kDOP碰撞”或“离散方向多面体”,你应该找到足够的参考资料。这基本上是由几个平面定义的边界体积,这些平面从外部向网格移动,直到发生三角形碰撞。kDOP中的“k”定义了这些平面的使用数量,并且根据您的几何体和“k”,您可以得到非常好的近似值。 对于骨骼网格,最常用的技术是定义附着到特定骨骼的简单几何体。此几何体可能是长方体或球体。此碰撞模型可用于相当精确的动画网格碰撞检测。 如果你需要每次三角形碰撞,“分离轴定理”是你选择的谷歌搜索词。这在特定情况下非常有用,但上述方法应涵盖75%的碰撞检测需求。 请记住,您很可能需要比边界体积更高级别的早期碰撞拒绝。一旦世界上有很多对象,就需要使用“空间分区”尽早拒绝进一步测试的对象组。 |
|
|
2
6
在执行复杂碰撞检测之前,您应该执行基本检测。 使用球体或矩形作为边界体积是最好的选择。然后,如果检测到冲突,请转到更复杂的方法。
与游戏编程一样,有多种碰撞检测方法。我的建议是从简单开始。拿一个立方体,在上面完善你的程序,然后理论上你应该能够使用任何其他模型。至于例子,我要查一查 gamedev.net 因为他们有一些好文章。很多或者我自制的碰撞检测是许多方法的组合,所以我不能真正推荐确定的资源。 |
|
3
3
答案归结为 显然,球体边界框是最简单的。在比例的另一侧,有一个完整的三角形网格碰撞检测, 游戏开发物理引擎依赖于近似的艺术(几年前我潜伏在GameDev.net的数学和物理论坛中)。 我的意见是,您需要与每个对象关联的某种边界椭球体。对象可以是常规多重网格对象、网格或子网格。这应该提供一个“适当”的近似值。 |
|
|
4
2
Christer Ericson's 书, Real-Time Collision Detection 在阅读文章时,请记住,在现实世界的游戏应用程序中,您将在严格的内存和时间限制下工作-每帧16.6ms,仅此而已!因此,对于任何没有认真讨论其算法的内存和CPU占用的文章或论文,都要小心。 |