2012-05-11 22 views
1

私は、2つのクォータニオンを使って自分の違いに基づいてカメラの向きを調整しようとしています。したがって、回転を最小限に抑えるために、アニメーションには時間がかからず、回転を大きくすると時間がかかります。私はある速度でカメラを回転させたいと思う。クォータニオンの違いに基づくアニメーション時間

は、単一のラジアンを取得するには、ヨー、ロールとピッチを結合する方法はありますので、私は、私は、各フレームを適用する四元数の何パーセントを計算するためにそれを使用することができますか?あなたは2つのクォータニオンをdifferenciateするvant場合

答えて

2

はちょうどデルタ四元のToAngleAxisを使用しています。 2つのクォータニオンの間の回転の軸と(あなたが必要とする)角度を返します。

クォータニオンと計算された速度を使用して、spherical interpolation(略してslerp)を計算することができます。これにより、カメラの向きの中間状態を計算できます。

+0

ありがとうございます!これはほとんどの角度で機能するようですが、時にはNaNを取得することがあります(これは、方向が軸に沿って並んだときに起こると思います)。何か案は? –

+0

これはOgreのバグによって引き起こされたようです:http://www.ogre3d.org/forums/viewtopic.php?p=426695 –

+0

これを試してみてください。バグの場合、私は助けません。 – Matzi

関連する問題