2014年3月29日土曜日

アニメーションのベイク

こんばんは、ナカハラです。
先日仕事していてこういう事がおきました。

「オブジェクトを直接動かしてアニメーションをつけていたが、それを3dsmax上で
再現したい」、と。


今回はその問題を解決した方法を書いてみようかと思います。
方法はいくつか考えられますが、今回は事情あってロケーターとアニメーションのベイク機能を使って行いました。




まず、右画像のような階層のオブジェクトがあったとします。
そのオブジェクトにはGIF動画のようなアニメーションがついています。


オブジェクトにキーをつけずに他のツールで動きをそのまま再現したいので、手順としてはこのオブジェクトの動きをロケーターに置き換え、そのロケーターの下にオブジェクトぶら下げてやるといった流れになります。







まずはアニメーションさせてるオブジェクトの数だけロケーターを用意します。


次にオブジェクトと同じようにロケーターも階層構造を作ります。この時、各階層ごとに分かりやすい名前をつけておくといいかもしれません。



作成したロケーターを階層ごと対応したオブジェクトにコンストレイントをかけていきます。
かけるコンストレイントは位置と回転です。
今回のオブジェクトはピボットをいじってアニメーションをつけているのでロケーターはいくつか
そのままではピボットの位置まで移動してくれません。
そこで、コンストレイントプロパティを開くと画像のようにピボットというチェックボックスがあります。
これにチェックをいれると、ロケーターが各オブジェクトのピボットの位置に移動しました。



各ロケーターを選択してウィンドウ上のメニューから『アニメーション』→『ベイク』を選ぶ。
これはコンストレイントによって制御された動きをキーフレームに置き換える機能で、画像
にあるコンストレイントの削除という項目にチェックをいれると、ベイクするときにコンストレイント
を削除してくれる。ただ、どういうわけか、最後に選択したロケーターのコンストレイントしか
削除されず他のコンストレイントは残ったままになるので、残りのコンストレイントは手動で削除するか、1つずつベイクしていくしかないみたいです。たぶん。





あとはこのロケーターをFBXで、オブジェクトはアニメーションキーを削除してOBJなどの任意の形式で書き出し、最終的に持っていきたいツールに読み込みます。
そして、オブジェクトを対応したロケーターの子にしてやれば同じ動きが再現できると思います。







それではまた。