【Unity】FBXで取り込んだアニメーションの回転値がおかしいときの対応(Resample Curvesの設定)

FBXで取り込んだアニメーションの回転値がおかしいときの対応と、Resample Curvesに関しての記事です。

経緯と解決方法

以前、FBXで取り込んだアニメーションの回転が明らかにおかしい現象に遭遇しました。

キーフレーム自体は正常な値が入っていそうなので悩んでいたところ、
FBX ImporterのResample Curvesの設定を変えたら正常になりました。

f:id:halya_11:20180921125733p:plain

Resample Curves?

このオプションは、FBXにオイラー値として設定されている回転の値を、
インポート時にQuaternionに変換するかどうかを決めるものみたいです。

Unityは回転をQuaternionとして扱っているのに対してFBXではEuler値として
キーフレームが打たれているため、どこかで変換を掛けなければいけません。

この変換をインポート時にするのがResample Curvesオプションです。
通常はこちらをONにするべきですが、この方法だと正確に回転が変換できない場合があるようで、
そういうときのためにResample CurvesをOFFにできるようになっています。

Resample CurvesをOFFにした場合、回転はランタイムでEulerの値を使って計算されます。
ランタイムでの処理が増えるので、オフにするのは最終手段とするべきとのことです。

参考サイト

Unity - Manual: Euler curve resampling