【发布时间】:2013-11-18 11:43:39
【问题描述】:
我已经创建了一个以复合体作为底盘的子弹车,复合体由两个车身组成,一个底盘和一个炮塔。
我可以像这样得到炮塔变换和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);
我正在尝试从此矩阵中获取炮塔前向/方向向量。我需要这个,以便将相机固定到炮塔的位置和方向。
我试过的是这样的:
btVector3 turretForwardVector = btVector3(turretMatrix[2], turretMatrix[6], turretMatrix[9]);
但这并没有给我正确的向量。
我必须在这个矩阵中的哪里寻找向量?
【问题讨论】:
-
我设法找到了这个link。它解释了我会在矩阵中找到方向向量的位置(第 3 列)。所以我得到了第 8、第 9 和第 10 个矩阵元素,并从中创建了 turretForwardMatrix:
btVector3 turretForwardVector = btVector3(turretMatrix[8], turretMatrix[9], turretMatrix[10]);
标签: c++ opengl vector matrix bullet