Здесь у меня есть проблема с вращением объекта в Bullet. То, что я хочу реализовать, - это вращать объект вокруг глобальной оси x, y, z в одно и то же время. (здесь глобальные средства оси х, у, г, не будет изменен во время вращения) У меня есть код нижеКак повернуть объект в Bullet Physics
btQuaternion m_lastRot;
btTransform tranf = _obj[idx]->mp_btRidObj->getCenterOfMassTransform();
tranf.getBasis().getRotation(m_lastRot);
btQuaternion qx(btVector3(1,0,0),angX);
btQuaternion qy(btVector3(0,1,0),angY);
btQuaternion qz(btVector3(0,0,1),angZ);
tranf.setRotation(qz * qy * qx * m_lastRot);
_obj[idx]->mp_btRidObj->setCenterOfMassTransform(tranf);
Но это не работает, как я ожидал. Кстати, код, ниже которого вращается объект вокруг одной оси x, y, z, каждый раз работает хорошо.
btQuaternion m_lastRot;
btTransform tranf = _obj[idx]->mp_btRidObj->getCenterOfMassTransform();
tranf.getBasis().getRotation(_obj[idx]->m_lastRot);
btQuaternion qx(btVector3(1,0,0),angX);
btQuaternion qy(btVector3(0,1,0),angY);
btQuaternion qz(btVector3(0,0,1),angZ);
if(x)
tranf.setRotation(qx * m_lastRot);
else if(y)
tranf.setRotation(qy * m_lastRot);
else if(z)
tranf.setRotation(qz * m_lastRot);
_obj[idx]->mp_btRidObj->setCenterOfMassTransform(tranf);
Есть ли кто-нибудь, кто может мне сказать, как решить эту проблему?
http://www.stackoverflow.com/questions/8196634/how-to-apply-rotation-to-a-body-in-bullet-physics-engine –