3Dアプリケーションの回転は、通常、クォータニオンか オイラー角の2つの方法のどちらかで表現されています。ほとんどの部分では、Unity は回転の内部表現としてクォータニオンを使用しています。内部で使われているクォータニオンですが、Unity で回転と方向 の基本的な理解をすることは重要です。
外部ソースからアニメーションをインポートする場合、一般的にはオイラー形式でキーフレームアニメーションを保存します。ですが Unity のデフォルトでは、これらのアニメーションをクォータニオンの値でサンプリングしなおし、アニメーションのフレームごとに新たなクォータニオンのキーフレームを生成します。またこのときに、ソース元のアニメーションとUnity上での見え方で、差異が最小限になるよう試みます。
インポートしたアニメーションをクォータニオンで表現する場合、リサンプリングしても、オリジナルと完全には一致できない事があります。このため、Unity 5.3以降には、アニメーションのリサンプリングをオフにするオプションがあり、クォータニオンの代わりに、元々のオイラーアニメーションのキーフレームを使用することも可能になっています。
アニメーションファイルのオリジナルの Euler Curve の設定値を使用するためのサポートを有効にするには、Animations Import Inspector の “カーブのリサンプリング” オプションを オフ に設定する必要があります。
このオプションを有効にすることで、回転はクォータニオンに対してリサンプリングされます。これは、デフォルトの振る舞いです。 無効にした場合、回転のカーブはリサンプリングされず、オイラーかクォータニオンの、どちらか適切な方が選択された上で、元々のキーフレームがインポートされます。注意: 前後に回転するタイプのジョイントのローテーションは、FBX SDK によって自動的にリサンプリングされ、クォータニオンカーブとしてインポートされます。
インポートされたファイルの最大の多様性と忠実性をサポートするために、Unity は、すべて通常の(リピートなし)オイラー回転順番をサポートします。また、カーブはオリジナルの回転順番でインポートされます。
回転のリサンプリングを無効にして、オリジナルのオイラーカーブを使う主な理由は、デフォルトのクォータニオン補完では誤った結果になり、問題が発生するからです。
リサンプリングしない回転アニメーションを使用すると、アニメーションの再生時にちょっとだけ視覚的差異が生じるはずです。しかし内部では、オイラー角でインポートされた回転カーブは、実行時でさえ、常に保持されるようになっています。
クォータニオンに関するエンジンの仕様により、回転値は、ある時点でクォータニオンに変換されなければなりません。Unity 5.3以前のバージョンでは、この変換は常にインポート時に起こりました。Unity 5.3では、 Animation Import のインスペクターでカーブのリサンプリングを無効にした場合、回転の値はゲームオブジェクトに適用されるまでオイラー値として保持されるようになります。これによる最終結果は、以前より良くなることはあっても、悪くなることはないはずです。
メモリを賢く使い、オーサリングソフトでベイクされていない回転カーブに関して、恩恵を受けられるでしょう。
Unity のトランスフォームインスペクターで使用されるオイラー角は、デフォルトで Z,X,Y の順番で適用されます。
Unity のデフォルトと異なる回転順によるオイラー曲線がインポートされたアニメーションを再生や編集する場合、現在の回転順の指示が回転フィールドの横に表示されます。
異なる回転順による複数のトランスフォームを編集する場合、適用された同じオイラー回転が異なる回転順によるカーブで異なる結果を与えることを警告するため、ユーザーに対して警告が表示されます。