0

スプラインを使って動くカメラを作ろうとしています。カメラの位置はうまく機能しますが、移動中にカメラの目をターン自体に合わせたいです。

たとえば、カメラは x0 y0 z0 から x1 y1 z1 に移動します。これで、私の目のベクトルは通常 (x1-x0、y1-y0、z1-z0) になりました。他の 2 つのベクトル (横方向と上方向のベクトル) を回転させて、目のベクトルに一致させ、それらの間の 90 度の角度を破壊しないようにするにはどうすればよいですか?

ヨー/ピッチ形式の方が簡単であれば、それも問題ありません。2 つの間で変換できます。または、私が達成したいことに対する別のアプローチですか?

たとえば、スプラインの法線 (3 ポイントのバイザー曲線) を計算することでそれを実行できると思います。各ステップでは、その法線を中心にカメラがどれだけ回転するかを計算できます。しかし、もしあれば、より簡単でより一般的な方法を好むでしょう。

ここで私が何をしているかを見ることができます。(惑星をクリック) この例では、古い眼球ベクトルと新しい眼球ベクトルをピッチ/ヨーに変換し、違いを見つけて、これを使用して他のベクトルを回転させますが、場合によっては他のベクトルがまったく変化しない可能性があるため、これは明らかに間違っています (目は一方に対して垂直に回転しています)

4

1 に答える 1

0

これは、キー フレームアニメーションと呼ばれます。これを行う最善の方法は、関心のある位置でオイラー角を取得し、それらをクォータニオン形式にすることです。その後、スプラインを使用してキー フレームの四元数を補間し、補間フレームを取得できます。

なぜこれを行うのですか?主な理由は、補間フレームの変換行列の正規直交性を維持する問題がなく、オイラー角を選択するためのヒューリスティックを考え出す必要がないことです。詳細については、ウィキペディア、特に「他の回転表現との比較」セクションを参照してください。

クォータニオン形式に怯える必要はありません。実際には非常に簡単です。必要なのは、オイラー角 (または変換行列) からクォータニオン、およびその逆へのレシピだけです。スプラインで適切に補間できることを除けば、クォータニオン自体について多くを知る必要はありません。

于 2013-08-30T13:46:02.440 に答える