总是认为球体是最便宜的碰撞原型,但它看起来像子弹为球体创造了一个凸体,不是吗?那么btSphereShape实际上比btBoxShape更便宜进行碰撞计算还是更昂贵?
答案 0 :(得分:1)
这不是一个完整的答案。 (一个完整的应该进行轮廓测试。)
来自the official wiki,他们的表现并没有太大差异 (两个形状都分组到同一层 - 基元): -
使用凸形碰撞形状,例如凸包和基元等 作为一个球体,盒子和圆柱体使碰撞算法更加复杂 简单而有效。
在同一页面中,它暗示Sphere是最快的形状: -
btSphereShape:非常快速简单的形状 btBoxShape: 长方体形状,每个尺寸的长度可以任意选择。
OP: btSphereShape实际上更便宜......,(因为它是继承的)来自btConvexInternalShape。
是的,但班级不是原因
sphere和box都继承自btConvexInternalShape
球体很容易计算。
OP: ...子弹为球体创建一个凸体...(所以)btSphereShape实际上更便宜
原始形状使用特殊的高度自定义算法,因此它比一般凸起便宜。有关证据,请参阅btSphereSphereCollisionAlgorithm(便宜)与btConvexConvexAlgorithm(昂贵)。
在实践中,您应该选择符合您需要的那个。 (除了你的申请实际上是物理密集型的)
当我浏览论坛很长时间时,没有人提及/抱怨 Box 与 Sphere 的性能差异。
我也使用了它们两年,并且在实践中没有看到任何区别。
您可能也对collision-shape algorithm(一个受欢迎的碰撞检测网站)感兴趣 我相信Bullet使用其中一种算法。