我正在使用Bullet Physics引擎。我目前有一个可以移动和旋转的平台(btRigidBody
)。在这个平台上,我想放置4个立方体(每个角落都有。现在,当平台平移或旋转时,我希望立方体留在这些角落。基本上,我希望它们相对于平台的位置/方向保持不变
这是我尝试过的:
btTransform transform;
m_platform->getMotionState()->getWorldTransform(transform);
btQuaternion platformRotation = transform.getRotation();
btVector3 platformOrigin = transform.getOrigin();
btMatrix3x3 platformBasis = transform.getBasis();
for (int i = 0; i < CubeEnvironment::OBJECT_COUNT; ++i)
{
btTransform objTransform;
m_bodies[i]->getMotionState()->getWorldTransform(objTransform);
objTransform.setRotation(platformRotation);
m_bodies[i]->getMotionState()->setWorldTransform(objTransform);
}
此处,m_platform
是平台,m_bodies
由4个多维数据集组成。使用此代码,立方体会与平台一起旋转,但仅在其本地框架中旋转,这意味着它们的原点保持在同一位置。
我还对get/setOrigin
和get/setBasis
进行了一些实验,但没有帮助。
我应该做些什么?
答案 0 :(得分:0)
我建议在立方体和平台之间使用某种形式的约束,根据您的需要,您可以修复平台上的立方体(btfixedconstraint),或者您可以围绕轴移动它(bthingeconstraint)或其他人。
您可以在http://bulletphysics.org/mediawiki-1.5.8/index.php/Constraints
上找到完整列表