Version: 2020.1
言語: 日本語
Animation タブ
アニメーションクリップの抽出

オイラーカーブのリサンプリング

3D アプリケーションでの回転は通常、クォータ二オンかオイラー角で表されています。たいていの場合、Unity は内部ではクォータ二オンで回転を表します。ただし、Unity の回転と向き を基本的に理解することが大切です。

外部ソースからのアニメーションを含むファイルをインポートすると、インポートされたファイルには通常、オイラー形式のキーフレームアニメーションが含まれます。Unity のデフォルトの動作は、これらのアニメーションをクォータ二オン値でリサンプリングし、アニメーションのすべてのフレームに対し新しいクォータ二オンのキーフレームを生成します。これにより、ソースアニメーションと Unity での表示の違いが最小限に抑えられます。

インポートされたアニメーションのクォータニオン表示が、リサンプリングしても、オリジナルのものと十分に一致しない場合があります。このため、Unity にはアニメーションのリサンプリングを無効にするオプションがあります。つまり、リサンプリングせずに、実行時に元のオイラーアニメーションキーフレームを使用できます。

ノート: フレーム間のデフォルトのクォータニオン補間が上手くいかず問題が発生する場合は、最後の手段としてオイラーカーブのみを維持します。

インポートしたアニメーションでオリジナルのオイラーカーブを維持

アニメーションファイルで元のオイラーカーブの値を使用するには、AnimationResample Curves オプションのチェックを外します。

Animations の Resample Curves オプション
Animations の Resample Curves オプション

このオプションを無効にすると、カーブのタイプに応じて (オイラーかクォータニオンモードのいずれかで) 元のキーフレームで回転カーブが維持されます。

ノート: FBX SDK は、回転前または回転後のジョイントの回転カーブを自動的にリサンプリングします。つまり、Unity はそれらを自動的にクォータニオンカーブでインポートします。

Unity はさまざまなインポートファイルをサポートしており、インポートしたカーブをできる限りオリジナルに近い状態に維持しようとします。これを実現するために Unity はすべての通常 (繰り返しなし) のオイラー回転順序をサポートしており、元の回転順序でカーブをインポートします。

オイラー値と Unity エンジン

オリジナルの (リサンプリングされていない) オイラー回転を使用すると、アニメーションの再生時に視覚的な違いはほとんど見られません。内部では、これらのカーブはランタイムのときでさえオイラーで保存されます。ただし、エンジンはクォータニオンでしか動かないため、Unity は最終的に回転値をクォータニオンに変換する必要があります。

Resample Curves オプションを無効にすると、ゲームオブジェクトに適用されるまで回転の値はオイラー値として維持されます。これは、結果は元のものと同じように見えますが、メモリの面では向上していることを意味します。なぜなら、オーサリングソフトウェアでベイクされていない回転カーブはメモリの消費量が少ないからです。

Transform インスペクターのデフォルト以外のオイラー順序

デフォルトでは、Transform インスペクターに表示されるオイラー角は Z、X、Y の順序で適用されます。

Unity のデフォルトと異なる回転順序のオイラーカーブを持つインポートアニメーションを再生または編集する場合、Unity は Rotation フィールドの横にその順序の違いを表示します。

インスペクターは、オブジェクトの回転アニメーションにデフォルトと異なる回転順序 (YZX) が使われていることを表示
インスペクターは、オブジェクトの回転アニメーションにデフォルトと異なる回転順序 (YZX) が使われていることを表示

異なる回転順序をもつ複数の Transform を編集するとき、Unity は、同じオイラー回転を適用しても、回転順序が異なるカーブでは異なる結果になるという警告メッセージを表示します。

インスペクターは、選択した複数のオブジェクトの回転アニメーションにさまざまな回転順序 (Mixed) が使われていることを表示
インスペクターは、選択した複数のオブジェクトの回転アニメーションにさまざまな回転順序 (Mixed) が使われていることを表示
Animation タブ
アニメーションクリップの抽出