UnityアニメーションキーフレームのPosition項目について
「MikuMikuDance for Unity」を使用してみて、Unityのアニメーションキーについて、気がついたことがあるので、メモしておく。
使用したUnityのバージョン:Version 4.0.0f7
■気がついたこと
あるボーンオブジェクトの各軸(x,y,z)のキーフレームに対して、1つもキーが打たれていない場合は、そのボーンオブジェクトのTransformプロパティの座標値(親空間から見た位置座標==子供のローカル空間から親空間へ写すための座標)が0キーフレームに適応される。
1つでもキーが打たれている場合、そのボーンオブジェクトのTransformプロパティの座標値は適応されない。
■上記のことより、わかること
ボーンアニメーションの一般的なプログラムでは、自分のローカル空間における変換(キーフレームで設定する変換)⇒親空間へ写す⇒親空間の変換……と行列処理を行うが、Unityでは親空間へ写す行列処理を行わないみたいなので、Unityのキーフレームを設定する段階で、親空間へ写す行列を加味したキーフレームを設定する必要がある。
■MikuMikuDance for Unity について
ダウンロードファイルとして提供されている、2013/01/20現在最新の
「mmd-for-unity-v1.1a-r114.zip (日付: 2012-08-27, サイズ: 126.1 KB) 」は、上記の内容が考慮されていないため、アニメーションさせると、中心がずれます。
SVN管理されている最新ソースでは、修正(MMDLoader\Private\MMDConverter.cs のCreateKeysForLocationメソッド)されているので、SVNから落としたほうが良いです。