私のglutアプリケーションでは、私はカメラで飛行機をシミュレートしています。飛行機の速度が低いとき、私はカメラが落ちるときに鼻が地面に向かうようにするつもりです。私の最初の本能は、のピッチを-90degreesで下方に指すまで変更することでした。しかし、私はちょうどそのピッチを変えることはできません。なぜなら、飛行機がその側に傾いているか逆さまになっていると、地面に向かって方向が変わることに気づくでしょう。Glut glLoadMatrixfカメラ相当
今私は 'lookAt.y'を下にシフトすることでこれの大まかなシミュレーションをしようとしています。これを行うには、私はカメラを設定するために使用する現在のカメラの座標をすべて取得しようとしています (eye.x、eye.y、eye.z、look.x、look.y、look.z、up.x、 up.y、up.z)。次に、新しい変更値でセットを呼び出します。
カメラ機能を制御するためにCamera.cppとCamera.hを使用しています。すべての値を取得するためのメソッドを追加した後、here
を検索した後、実際にさまざまなカメラの動きが行われたときに目の値のみが実際に更新されます。私は私の質問は、これらの値を取得する方法ですね。
glLoadMaxtrixコールは、この機能
void Camera :: setModelViewMatrix(void)
{ // load model view matrix with existing camera values
float m[16];
Vector3 eVec(eye.x, eye.y, eye.z);
m[0] = u.x; m[4] = u.y; m[8] = u.z; m[12] = -eVec.dot(u);
m[1] = v.x; m[5] = v.y; m[9] = v.z; m[13] = -eVec.dot(v);
m[2] = n.x; m[6] = n.y; m[10] = n.z; m[14] = -eVec.dot(n);
m[3] = 0; m[7] = 0; m[11] = 0; m[15] = 1.0;
look.x = u.y; look.y = v.y; look.z = n.y;
glMatrixMode(GL_MODELVIEW);
glLoadMatrixf(m);
}
「目」、「ルックアット」を取得する方法があり、ここで行列からの値「アップ」にありますか?あるいは、私はこれらの価値を得るために他の何かをするべきですか?事前に
-Thanksあなたの助けを
ちょうど記録のために、飛行機の鼻は、速度が低いとき(指し示すのではなく)、はるかに上を向いています。飛行機は速度を制御するためにピッチを使用し、高度を制御するためにスロットルを使用します(それは直感に反します)。 –