0

コンパウンドをシャシーとした弾丸車両を作成しましたが、コンパウンドはシャシーと砲塔の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);

この行列から砲塔の前方/方向ベクトルを取得しようとしています。これは、カメラを砲塔の位置と方向に固定するために必要です。

私が試したのはこれです:

btVector3 turretForwardVector = btVector3(turretMatrix[2], turretMatrix[6], turretMatrix[9]);

しかし、これでは正しいベクトルが得られません。

この行列のベクトルを正確にどこで探す必要がありますか?

4

1 に答える 1

1

あなたの考えは正しいです。行ベクトルまたは列ベクトルのみを抽出するだけで十分です。現在、OpenGL マトリックス表記では、Z 行を抽出しています。列を試すことをお勧めします。turretMatrix[0x8 … 0xb]

于 2013-11-18T12:21:30.123 に答える