もさぷい

ゲーム、3D関連技術ついて

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から落としたほうが良いです。

(しかし、SVNにある最新ソースは、コンパイルエラーが出たので、エラーが出ないように若干の修正する必要があります。)