2012-01-04 10 views
2

私のOpenGLアプリケーションでは、マウスを使ってオブジェクトを回転させるために、ArcBall回転を使用する必要があります。補間を使用したOpenGL ArcBallの回転とアニメーション?

私は私がこの記事を読んだ後四元で行かなければならないことをrelized - http://www.gamedev.net/page/resources/_/technical/math-and-physics/quaternion-powers-r1095

そして、私はここでの実装を使用して簡単に見つける - http://www.codeproject.com/KB/openGL/virtualtrackball.aspx

しかし、私の問題は、私はまた私のオブジェクトをアニメーション化する必要があります保存された2つの状態の間。 これは -

(1)=(ポストションX1、位置Y1、位置Z1、回転1)です。

状態(2)=(後退X2、位置Y2、位置Z2、回転2);

*これらの「回転は」回転行列

され、アニメーションは、n個のステップで行われます。このビデオに示すような

何か - http://www.youtube.com/watch?v=rrUCBOlJdt4

I三の車軸(ロール、ピッチ、ヨー)3つの別々の角度を使用していた場合、私は簡単に角度を補間することができました。 しかし、ArcBallは回転行列を使用するので、どのようにして状態1と状態2の間の回転を補間できますか?

提案がありますか?

答えて

2

内部的に回転表現にMatrixまたはQuaternionを使用してください。ロール/ピッチ/ヨーで理論的に角度を補間することができますが、これは毎回動作しません。Gimbal lockを読んでください。

クォータニオンでは、回転補間が簡単です。(r/p/y角度と同様に)個々の座標を補間し、必要に応じて正規化します。クォータニオンで動作するようにレンダリング関数を調整する必要があります(ただし、クォータニオン自身を記述しているので、すでに行っていると仮定します)。

マトリックスでは、補間はそれほどうれしくはありません。私は数年前に苦労してきましたが、私は最終的に四元数を使うことに決めました。だから私はこれについて助言することはできません、申し訳ありません。

+0

の理由は、デカルト座標系の回転を補間することは線形独立でないこと、です。これをある座標系に移動する必要があります。円筒座標と同様に、円筒軸は回転軸です(球座標でも同じですが、円筒は計算コストがかかりません)。 – datenwolf

関連する問題