2011-11-19 25 views
3

我有旋转值(滚动,俯仰,偏航)。我想将该轮换应用到一个机构,但我不知道如何做到这一点。如何将旋转应用于子弹物理引擎中的物体?

+0

@felipemaia - 我使用的子弹物理引擎为3D刚体碰撞检测,我不会试图操纵的弹道,所有我需要的是旋转身体让我们说一个盒子提供的旋转值 –

+2

是的。同意。愚蠢无疑是无价的。 – felipemaia

回答

4

最直接的方法是直接设置刚体的世界变换,无论是通过运动状态还是通过直接设置。为了充分利用滚动,俯仰和偏航变换,你可以使用:

btRigidBody * rigidBody = //... 
btTransform tr; 
tr.setIdentity(); 
btQuaternion quat; 
quat.setEuler(yaw,pitch,roll); //or quat.setEulerZYX depending on the ordering you want 
tr.setRotation(quat); 

rigidBody->setCenterOfMassTransform(tr); 
+0

当通过使用btDefaultSerializer将世界保存到.bullet文件时,是否保存了此转换? – rraallvv

+0

@rraallvv我一定会期望刚体的变换会被序列化,所以除非我错过了一些东西(这可能,因为我使用子弹已经有一段时间了),是的。 – nonVirtualThunk

+0

你是对的,谢谢 – rraallvv