Я создал бронетранспортер с компаундом в качестве шасси, а компаунд состоит из 2-х корпусов, шасси и башни.
Я могу получить преобразование башни и матрицу 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));
Где angle - это число с плавающей запятой, но ничего не происходит.
Я определенно что-то упускаю, но не до конца понимаю, как работают эти вращения.