PointCloudConsortium > PCCブログ

PCL、3D関連の情報をブログ形式で発信します。

《Unity備忘録》3DCGで設定したアニメーションをUnityで制御する方法

3dsMax等の3DCGソフトで作成したアニメーション設定された3DデータをUnityに読み込みUnity上でアニメーション制御を行う方法を紹介します。

■Unityでアニメーション設定

<1>3dsMaxでアニメーション設定を行い書き出し
まずは3DCGソフトにてアニメーション設定を行っていきます。 今回は3dsMaxを使用してアニメーション設定を行います。以下のように3Dオブジェクトに動きを付けたアニメーションを作成します。

アニメーションは後でフレーム数ごとに分割ができますので複数の動きがある場合でも1つのファイル内に複数のアニメーション設定してOKです。
例えば
・手の動き … 0-90フレーム
・足の動き … 100-190フレーム
・頭の動き … 200-290フレーム
っといった感じで。
アニメーションの設定が完了できましたらFBX形式で書き出しを行います。

<2>UnityでFBXを読み込みアニメーションの初期設定
上記で書き出されたアニメーション付きのFBXデータをAssetsに読み込みます。
Assets内の読み込んだデータを選択してInspector/Animationsタブを選択するとアニメーションの詳細情報が表示されます。読み込んだアニメーションは
・四角柱が左へ曲がりもとに戻る … 0-15フレーム
・四角柱が右へ曲がりもとに戻る … 15-30フレーム
というアニメーションを設定しているためフレームごとにアニメーションを分割します。

①Clipsの「+」ボタンを押して分割する数だけClipを増やします。
ここではすべてのフレームを再生、左曲がり、右曲がりの3つのClipを作成しました。


それぞれのClipを編集するには「Clamp Range」ボタンを押してスライドバーもしくは数値入力で各Clipのフレーム数を設定することができます。
各設定が完了するとInspectorの一番下にある「Apply」ボタンを押して設定完了となります。画面サイズによってはスクロールしないと見えないので忘れがちですが別操作をしようとするとアラートが出ますのでそこで「Apply」してもOKです。


アニメーションの設定が完了したオブジェクトをHerarchyにセット(ドラックドロップ)します。
AnimetorControllerでアニメーションの設定したものをHerarchy内のオブジェクトにセットするのですがAnimetorControllerがないためAssetsで右クリックしてCreate/AnimatorControllerで作成します。
AnimetorControllerを設定していく前にHerarchyのオブジェクトに作成したAnimetorControllerをセットします。
オブジェクトにセットすると上図のようにInspector/Animator/Controllerに作成したAnimetorControllerがセットされていることを確認できます。

<3>AnimetorControllerの設定
作成したAssets内のAnimetorControllerをダブルクリックすると以下のようにAnimatorタブが表示された画面になります。 ヘッダメニューのWindow/Animatorでもタブは表示されます。

初期設定で作成したClipをAnimatorタブ内にドラックドロップで追加することができます。 再生されると「Entry」からアニメーションが始まるため最初にドラックドロップしたClipに自動的に矢印が生成されます。 再生時にアニメーションを止めた状態にした場合は空のClipを作成して「Entry」からまず待機状態の空のClipに飛ばすようにします。 (右クリックCreateState/Emptyで空のClipを作成できます)


次に配置したClipにそれぞれ紐づけをしていきます。
Clipを選択して右クリックでMakeTransitionで矢印が出てきますので次に移動するClipをクリックすると矢印がつながります。
各Clipを矢印でつなぐことでアニメーションを次に動作するアニメーションを設定できます。


次にトリガーを設定していきます。画面左上の「+」ボタンを押すと以下のトリガーを設定していくことができます。アニメーションを制御する際に使用しやすいパラメーターを設定します。
・Int … 整数
・Float … 小数部分を持つ数値
・Bool … true、false の値 (チェックボックスで表現されています)
・Trigger … トリガー名がパラメーターとして使用できる

トリガーの設定が完了後にAnimetorのClipに設定した矢印を選択してInspectorのConditionsにトリガーを設定することでアニメーションの再生を制御することができます。
Boolで設定したトリガーはなぜか「true」の場合が止まり、「false」の場合が進むとなるので少し混乱します。
後はこのトリガーの制御をスクリプトで制御することでアニメーションをどのタイミングで再生して、止める、繰り返すなどを制御することができます。
スクリプトの記述方法は以下の通りです。
・SetTrigger(“パラメーター名”);
・SetFloat(“パラメーター名”,value);
・SetBool(“パラメーター名”,value);
・SetInteger(“パラメーター名”,value);

■まとめ

今回3DCGで設定したアニメーションをUnityでどのように再生させるのかを検証してみました。
Unityのアニメーション設定は少しクセがあり思い通りの制御をするには慣れが必要なように感じましたが3DCGで作成したアニメーションをそのまま再現できるという点ではかなり使えるかと思います。
Unity上でもアニメーションの設定ができるようですが慣れているCGソフトでアニメーション設定を行い制御だけUnityで行う方が効率が良さそうに思います。

有限会社マグネットインダストリー
西内伸太郎

2016年8月15日

本コンソーシアムに関するお問合せ、PCL・3D関連のご相談はお問合せフォームよりご連絡ください。

  • PointCloudLibrary
  • エス計画
  • マグネットインダストリー
  • DERiVE
PCL
Copyright (C) 2014 PointCloudConsortium All Rights Reserved.