我用的是Bullet物理引擎。我目前有一个可以移动和旋转的平台(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做了一些实验,但没有什么帮助。
你知道我该怎么做吗?
发布于 2015-06-30 19:57:39
我建议在立方体和平台之间使用某种形式的约束,根据您的需要,您可以将立方体固定在平台上(btfixedconstraint),或者可以围绕轴(bthingeconstraint)或其他轴移动它。
你可以在上面找到完整的列表:http://bulletphysics.org/mediawiki-1.5.8/index.php/Constraints
https://stackoverflow.com/questions/30921485
复制相似问题