如何在子弹物理引擎中对身体应用旋转?
Posted
技术标签:
【中文标题】如何在子弹物理引擎中对身体应用旋转?【英文标题】:How to apply rotation to a body in Bullet Physics Engine? 【发布时间】:2012-01-02 01:20:41 【问题描述】:我有旋转值(滚动、俯仰、偏航)。我想将该旋转应用到一个身体,但我不知道该怎么做。
【问题讨论】:
@felipemaia - 我正在使用 Bullet Physics Engine 进行 3D 刚体碰撞检测,我不是在尝试操纵弹道轨迹,我所需要的只是旋转一个身体让我们说一个带有提供旋转值 是的。同意。愚蠢确实是无价的。 【参考方案1】:最直接的方法是直接设置刚体的世界变换,通过运动状态或直接设置。要获得滚动、俯仰和偏航的变换,您可以使用:
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);
【讨论】:
使用 btDefaultSerializer 将世界保存到 .bullet 文件时是否保存了此转换? @rraallvv 我肯定希望刚体的变换会被序列化,所以除非我遗漏了什么(这是可能的,我已经有一段时间没有使用子弹了),是的。以上是关于如何在子弹物理引擎中对身体应用旋转?的主要内容,如果未能解决你的问题,请参考以下文章
如何在子弹物理中获得刚体在 0 到 360 之间的欧拉旋转?