btSphereShape 的计算成本是否比 btBoxShape 低?

Is btSphereShape cheaper for calculations than btBoxShape?

一直认为球体是最便宜的碰撞基元,但看起来 Bullet 为球体创建了一个凸体,不是吗?那么 btSphereShape 在碰撞计算方面实际上比 btBoxShape 更便宜还是更昂贵?

这不是一个完整的答案。 (一个完整的应该做一个配置文件测试。)

the official wiki相比,它们在性能上相差无几
(两种形状都分组到同一层 - Primitives):-

Using convex collision shapes such as convex hulls and primitives such as a sphere, box and cylinder makes the collision algorithms much more simple and efficient.

在同一页中,表示球体是最快的形状:-

btSphereShape : A very fast and simple shape.
btBoxShape : A cuboid shape, the length in each dimension can be chosen arbitrarily.

对每个小问题的回答

OP: btSphereShape actually cheaper .... , (because it is inherited) from btConvexInternalShape.

是的,但 class 等级制度不是原因。
sphere and box 都是继承自 btConvexInternalShape.
球体很容易计算。

OP: ... Bullet creates a convex body for the sphere ... (so) the btSphereShape actually cheaper

原始形状使用特殊的高度定制算法,因此比一般凸面便宜。有关证据,请参阅 btSphereSphereCollisionAlgorithm (cheap) vs btConvexConvexAlgorithm(昂贵)。

一般指南

在实践中,您应该 select 满足您需要的那个。 (除了你的应用程序真的是物理密集型)

  • 看论坛久了,mention/complain没有人说Box和[=42=性能有什么区别]球体。

  • 这两个我也都用了几年,实际用起来没啥区别

您可能也对 collision-shape algorithm(一个流行的碰撞检测网站)感兴趣。
我相信 Bullet 使用其中一种算法。