Bullet 物理引擎的参考文档比较少,主要是通过学习Bullet自带的例子来学习。以下是我在学习中遇到的一些困惑和自己的理解:
1. collisionshape和rigidbody的区别:
碰撞形状顾名思义只需要指定碰撞体的形状,常用的碰撞体形状有:btBoxShape等。
刚体要指定的信息比较多,包括质量,运动状态,碰撞体形状,惯性。多个刚体可能共用相同的碰撞形状。
2. 在dynamicworld中设置刚体的位置
先将物体位置通过setIdentity()初始化为0,然后通过setOrigin(btVector3 pos)来设置物体质心的位置。特别需要注意的,btBoxShape( const btVector3& boxHalfExtents),这个函数形参是半个box的大小。
3. 通过导入obj等三维模型在bullet中创建刚体时bullet会计算自动该刚体的质心,非常强大!
4.The world transform of a rigid body is in Bullet always equal to its center of mass, and its basis also defines its local frame for inertia.
World transform of the center of mass for rigid bodies, transformed vertices for soft bodies
ATTRIBUTE_ALIGNED16(type) variablename creates a 16-byte aligned variable
5.Bullet uses a small collision margin for collision shapes, to improve perform