我已经创建了一个带有复合体作为底盘的子弹车,复合体由两个车身组成,一个底盘和一个炮塔。
我可以像这样获得炮塔变换和opengl矩阵:
// get chassis and turret transforms
btTransform chassisTransform = m_vehicle->getChassisWorldTransform();
btTransform turretTransform = compound->getChildTransform(1);
// multiply transforms to get updated turret transform
turretTransform *= chassisTransform;
// get turret matrix
btScalar turretMatrix[16];
turretTransform.getOpenGLMatrix(turretMatrix);
turretTransform 是 btCollisionShape 对象 (turretShape) 的变换。
我现在正试图围绕它的 Y 轴旋转这个炮塔。
我试过这个:
turretTransform.setRotation(btQuaternion(btVector3(0, 1, 0), angle));
其中角度是一个浮点数,但没有任何反应。
我肯定遗漏了一些东西,但不完全理解这些轮换是如何工作的。