5

slerpを使用して、回転を表す2つのクォータニオン間を補間します。結果として生じる回転は、グラフィックスライブラリに供給されるオイラー角として抽出されます。この種の作品ですが、私には次の問題があります。左のフレームに示すように、緑色の矢印の方向に2つの軸(1つは問題なく動作します)を中心に回転する場合

ここ

右フレームの赤い矢印で示されているように、回転はすぐにジャンプして反対側のサイトから反対側の視覚方向に回転します。

これは数学的な観点からは論理的かもしれませんが(私にとってはそうではありませんが)、望ましくありません。複数の軸を中心に回転し、補間が完了するまで常に緑色の矢印をたどるときに、視覚的に反転したり方向を変えたりすることなく、補間を実現するにはどうすればよいですか?

前もって感謝します。

4

2 に答える 2

17

問題の説明は、率直に言って、理解するのが少し難しいです。しかし、四元数の 1 つを否定する必要があるようです。

各回転は、実際には 2 つの四元数 q と -q で表すことができることに注意してください。しかし、q から w への Slerp パスは、(-q) から w へのパスとは異なります。一方は遠回りし、もう一方は短距離になります。近道を望むときは、遠回りをしているように聞こえます。

2 つの四元数の内積 (つまり、4 次元内積) をとってみてください。内積が負の場合は、Slerp を実行する前に、四元数 q1 と q2 を -q1 と q2 に置き換えてください。

于 2010-05-22T06:04:44.087 に答える
-2

総回転距離は?角度が離れすぎている 2 つの方向の補間を求めている可能性があります。クォータニオンであろうとなかろうと、数学はある意味でどちらに進むべきかを決めるのに苦労します。アニメーションに十分なキーフレームがないのと同じです。

途中で適切な中間方向を決定し、最初の方向からその中間方向へ、および中間から最終方向へ別々に補間を行います。

于 2010-05-23T04:06:18.273 に答える