誰も見ていない時間

ゲーム、読書、マンガ、ライフハックなどの雑記

Mayaのアニメーションでコンストレイントの切り替えとUnityへの出力方法

スポンサーリンク

Mayaでコンストレイントを使用したアニメーションの作成と、Unityへの出力について解説します。昨日の記事の続編みたいな形ですね。ゲーム開発だとキャラクターに武器を持たせるときなどにコンストレイントはよく使用されています。

 

 

ただこのコンストレイントですが、ときどき外すこともあります。武器を置いたりとか投げたりするシーンがあれば、そこでコンストレイントも外す必要があるのです。

 

キャラクターとボールの用意

まずはコンテンツブラウザーから適当なモーションのサンプルを配置します。いやー、コンテンツブラウザー便利だなー。

 

f:id:kitahana_tarosuke:20180822021335g:plain

なめらかなモーションなのでモーションキャプチャーのデータでしょうね。このモーションに何かをコンストレイントさせて実験して行きたいと思います。

 

f:id:kitahana_tarosuke:20180822021617j:plain

ボールを作成してみました。作成してみたというかただのポリゴンのプリミティブです(^^;。サイズがキャラクターに比べて小さかったので、テキトーに拡大してあります。

 

f:id:kitahana_tarosuke:20180822021828j:plain

このボールを手の位置に移動します。ただし移動しただけだと・・・

 

f:id:kitahana_tarosuke:20180822022001j:plain

キャラクターが動き出すとボールから手が離れてしまいます。

 

ボール(子)と手のひら(親)をコンストレイント

そこでボールを手のひらにコンストレイント(拘束。親子関係付けること)します。コンストレイント自体は簡単で、オブジェクトを選択した状態で、メニューからペアレントコンストレイントを選択するだけです。

 

f:id:kitahana_tarosuke:20180822022613g:plain

出来上がったムービーがこちら。

これでUnityへの出力を検証しようかと思ったのですが、このモーションを見ていると、冒頭に書いたようにコンストレイントを外したくなりました。手を地面についたときにボールを置くようにしてみることにします。

 

f:id:kitahana_tarosuke:20180822022911j:plain

このタイミングまではボールは手にコンストレイントしておきたいので、コンストレイントにキーを打って制御します。

 

f:id:kitahana_tarosuke:20180822023415j:plain

コンストレイントされている状態は1なので、まずはその状態で1をキー設定します。

 

f:id:kitahana_tarosuke:20180822023651j:plain

フレームを一つ進めて、コンストレイントを0にします。コンストレイントを外すという意味ですね。

 

f:id:kitahana_tarosuke:20180822024406j:plain

ところがコンストレイントを外すとボールがスタート時の手の位置に移動してしまいました。拘束が外れたので元の位置に戻ったという感じですね。ボールはキャラクターの手にコンストレイントされていて動いていただけなので、コンストレイントを外すと元の位置に戻ってしまいます。

 

これだと想像していた結果とちょっと異なるので、少し工夫してやります。

スポンサーリンク

 

 

Mayaでコンストレイントを切り替える

ボールが元の位置に戻らないように、オブジェクトを追加してコンストレイントの対象が移動するように設定します。

 

f:id:kitahana_tarosuke:20180822024840j:plain

ボールの近くにカーブでサークルを作成します。作成するオブジェクトはサークルでもロケーターでも何でも良かったのですが、今回はわかりやすいようにサークルにしました。

 

f:id:kitahana_tarosuke:20180822025919j:plain

そしてボールとサークルとをペアレントコンストレイントします。その状態でボールをチェックすると、コンストレイントの対象が増えています。

 

今回のアニメーションの場合、21Fで切り替えるので、

  • 21F 手のひらオン、サークルはオフ
  • 22F 手のひらオフ、サークルはオン

というようにコンストレイントを設定します。

 

f:id:kitahana_tarosuke:20180822030255j:plain

グラフエディターで見るとこんな感じです。コンストレイントの対象が切り替わっています。

 

f:id:kitahana_tarosuke:20180822030342g:plain

うまくアニメーションができました^^

 

Unityにコンストレイントを出力

あとはUnityに持っていくだけです。設定を下記に記載します。

 

f:id:kitahana_tarosuke:20180822030820j:plain

Animationにチェックを入れたあとに、歯車アイコンをクリックして詳細設定します。

 

f:id:kitahana_tarosuke:20180821040306j:plain

まずはAdvanced Settiongsをチェックします。

 

f:id:kitahana_tarosuke:20180822031226j:plain

AnimationとBake Animationにもチェックを入れます。

 

f:id:kitahana_tarosuke:20180822031620j:plain

コンストレイントのチェックを外します。

 

f:id:kitahana_tarosuke:20180822032042j:plain

これでうまくUnityにも持っていくことができました。

 

f:id:kitahana_tarosuke:20180822032124j:plain

ちゃんとコンストレイントの切り替えが反映されています。

 

まとめ ー コンストレイントの説明とUnityへの出力

コンストレイントの簡単な説明とUnityへの出力方法でした。

コンストレイントは覚えてしまえば、利用範囲が大きく広がるので非常に便利です。

 

Unityへの出力でBake Animationした場合はConstraintsのチェックを外す、というのが分かりづらいですね。おそらくBake Animationした時点でコンストレイントではなくなっているのかもしれません。

 

いや、でもUnityに持っていったときはコンストレイントになっているし・・・ちょっと原因は分からないのですが、夜も遅いので(^^;ひとまず今日はこの辺で。