在Bullet3D中创建后,可以更改刚体的形状吗?

我开始Bullet3D。 创建刚体后可以改变碰撞形状吗? 刚体在创建时接受碰撞形状,但很难find选项更改实例的碰撞形状。

btRigidBody类中有setCollisionShape()setMassProps()方法。

据我所知,你不能。 我想可以换掉整个刚体物体。

以下是我已经能够做到这一点:

  1. 从世界上取下刚体。
  2. 摧毁旧的形状(不知道这是否需要,但我为了安全的措施)。
  3. 创建newShape。
  4. 使用rigidbody.setCollisionShape(newShape)。 它在btRigidbody上,但不在API中,因为它是从btCollisionObjectinheritance而来的。
  5. newShape.calculateLocalInertia(质量,惯性)。
  6. rigidbody.setMassProps(质量,惯性)。
  7. rigidbody.updateInertiaTensor()。
  8. 重新添加刚体到世界。

根据您的对象是运动型还是质量型0,您可能不需要执行上述所有步骤,但为了以防万一,我将它们包括在内。