2011-01-07 19 views
1

3D空間でのカメラの平行移動と回転に問題があります。 Direct3D9では、カメラは位置、視線、上方向(3Dベクトル)として定義されています。そこで私はカメラの回転と位置を保存しました。新しいフレームのためにカメラを定義するとき、私は回転を見ることによってベクトルと上の軸を回転させ、位置を設定しました。カメラを翻訳するとき、私は翻訳を取り、それを回転させて回転させ、それによってカメラの位置と見た目のベクトルを変換しました。しかし、しばらくすると、見え方ベクトルと新しい平行移動が整列しません。つまり、平行移動ベクトルが前方を定義する元の視線ベクトルの真の倍数である場合、カメラはもはや前方に移動しません。なぜこのようなことが起こったのか理解できません。3D空間でのカメラの回転と平行移動

答えて

1

Gimbal Lockを体験していただけますか?これは前に私に起こったので、私はベクトルを投げ捨ててQuaternionsに移動しました。

+0

私はそうは思わない。ビューマトリックスを作成するD3DX関数は、D3DXVECTOR3sのみを使用します。私はクォータニオンとは仕事ができません。 – Puppy

+0

@DeadMGの場合、D3DXVECTOR3にD3DXQUATORNIONを掛けることができます。それは間違いなく同様に聞こえる。 –

+0

@ Moo-Juice:なぜLookAtベクトルが翻訳ベクトルと同じジンバルロックを持っていないのですか?また、D3DXVECTOR3をD3DXQUATERNIONで乗算する関数も見つからず、演算子のオーバーロードもチェックしました。 – Puppy

関連する問題