Mayaでコンストレイントを使用したアニメーションの作成と、Unityへの出力について解説します。昨日の記事の続編みたいな形ですね。ゲーム開発だとキャラクターに武器を持たせるときなどにコンストレイントはよく使用されています。
ただこのコンストレイントですが、ときどき外すこともあります。武器を置いたりとか投げたりするシーンがあれば、そこでコンストレイントも外す必要があるのです。
- キャラクターとボールの用意
- ボール(子)と手のひら(親)をコンストレイント
- Mayaでコンストレイントを切り替える
- Unityにコンストレイントを出力
- まとめ ー コンストレイントの説明とUnityへの出力
キャラクターとボールの用意
まずはコンテンツブラウザーから適当なモーションのサンプルを配置します。いやー、コンテンツブラウザー便利だなー。
なめらかなモーションなのでモーションキャプチャーのデータでしょうね。このモーションに何かをコンストレイントさせて実験して行きたいと思います。
ボールを作成してみました。作成してみたというかただのポリゴンのプリミティブです(^^;。サイズがキャラクターに比べて小さかったので、テキトーに拡大してあります。
このボールを手の位置に移動します。ただし移動しただけだと・・・
キャラクターが動き出すとボールから手が離れてしまいます。
ボール(子)と手のひら(親)をコンストレイント
そこでボールを手のひらにコンストレイント(拘束。親子関係付けること)します。コンストレイント自体は簡単で、オブジェクトを選択した状態で、メニューからペアレントコンストレイントを選択するだけです。
出来上がったムービーがこちら。
これでUnityへの出力を検証しようかと思ったのですが、このモーションを見ていると、冒頭に書いたようにコンストレイントを外したくなりました。手を地面についたときにボールを置くようにしてみることにします。
このタイミングまではボールは手にコンストレイントしておきたいので、コンストレイントにキーを打って制御します。
コンストレイントされている状態は1なので、まずはその状態で1をキー設定します。
フレームを一つ進めて、コンストレイントを0にします。コンストレイントを外すという意味ですね。
ところがコンストレイントを外すとボールがスタート時の手の位置に移動してしまいました。拘束が外れたので元の位置に戻ったという感じですね。ボールはキャラクターの手にコンストレイントされていて動いていただけなので、コンストレイントを外すと元の位置に戻ってしまいます。
これだと想像していた結果とちょっと異なるので、少し工夫してやります。
Mayaでコンストレイントを切り替える
ボールが元の位置に戻らないように、オブジェクトを追加してコンストレイントの対象が移動するように設定します。
ボールの近くにカーブでサークルを作成します。作成するオブジェクトはサークルでもロケーターでも何でも良かったのですが、今回はわかりやすいようにサークルにしました。
そしてボールとサークルとをペアレントコンストレイントします。その状態でボールをチェックすると、コンストレイントの対象が増えています。
今回のアニメーションの場合、21Fで切り替えるので、
- 21F 手のひらオン、サークルはオフ
- 22F 手のひらオフ、サークルはオン
というようにコンストレイントを設定します。
グラフエディターで見るとこんな感じです。コンストレイントの対象が切り替わっています。
うまくアニメーションができました^^
Unityにコンストレイントを出力
あとはUnityに持っていくだけです。設定を下記に記載します。
Animationにチェックを入れたあとに、歯車アイコンをクリックして詳細設定します。
まずはAdvanced Settiongsをチェックします。
AnimationとBake Animationにもチェックを入れます。
コンストレイントのチェックを外します。
これでうまくUnityにも持っていくことができました。
ちゃんとコンストレイントの切り替えが反映されています。
まとめ ー コンストレイントの説明とUnityへの出力
コンストレイントの簡単な説明とUnityへの出力方法でした。
コンストレイントは覚えてしまえば、利用範囲が大きく広がるので非常に便利です。
Unityへの出力でBake Animationした場合はConstraintsのチェックを外す、というのが分かりづらいですね。おそらくBake Animationした時点でコンストレイントではなくなっているのかもしれません。
いや、でもUnityに持っていったときはコンストレイントになっているし・・・ちょっと原因は分からないのですが、夜も遅いので(^^;ひとまず今日はこの辺で。
コメント