получить текущее преобразование btCollisionShape

Я сделал сложную форму compound = new btCompoundShape();

Затем мне добавили форму столкновения:

btCollisionShape* turretShape = new btBoxShape(btVector3(0.4f, 0.2f, 1.2f));
btTransform turretTrans;
turretTrans.setIdentity();
turretTrans.setOrigin(btVector3(0.0f, 2.2f, 0.0f));
compound->addChildShape(turretTrans, turretShape);

Затем составная форма преобразуется в твердое тело, а затем добавляется к автомобильному рейкастеру в качестве шасси:

m_carChassis = CreateRigidBody(2000, tr, compound);
m_vehicle = new btRaycastVehicle(m_tuning, m_carChassis, m_vehicleRayCaster);

Транспортное средство движется вместе со своими колесами, шасси и башней, но я не могу понять, как обновляется трансформация башни.
Всякий раз, когда я пытаюсь что-то вроде этого:

compound->getChildTransform(1).getOpenGLMatrix(mturret);

Я всегда получаю начальное положение башни, где она была впервые создана.

Теперь для колес я могу сделать это:

m_vehicle->getWheelInfo(i).m_worldTransform.getOpenGLMatrix(mwheel);

И для шасси я могу сделать это:

m_vehicle->getChassisWorldTransform().getOpenGLMatrix(mchassis);

Но я не знаю, как мне достать эту обновленную трансформацию формы столкновения башни?

Обратите внимание, что там, где мне нужна эта информация, у меня есть доступ как к составному, так и к turretShape (фактическому btCollisionShape).

2

Решение

Сейчас я точно не помню, но я думаю, что вам нужно умножить матрицы преобразования мира шасси и потомков (турелей), потому что getChildTransform () возвращается в родительской системе отсчета. Не могу найти его в документах, хотя.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]