UnityのMecanimについて

こんにちは!

Unity 5.0 pre-order betaが公開され、わくわくしている
エンジニアのHです。

Unityには、「Mecanim」というパワフルなアニメーション機能が用意されています。
今回は、このMecanimについてまとめたいと思います。


■導入メリット

Mecanimを使うメリットは主に以下です。

・アニメーションのリターゲッティングが可能


Mecanimを使うと、複数キャラクター間でモーションを簡単に共有することができ、工数削減に繋がります。

この仕組みを使って、群衆アニメーションの制御することも容易に行えます。



・IKリグが使える


IKとは、Inverse Kinematicsの略です。

人型キャラクターを構成するボーンの階層構造は、親子関係になっており、親から子へ、子から孫へと、相対的に変化する仕組みがあります(FK Forwaed Kinematics)。

この逆で、ある位置から逆にたどり、状態付けを行う手法が「Inverse Kinematics」です。

地面が平らでない場合の接地や、壁に手をつく場合の挙動などが自然に表現出来ます。



・State Machineによる、アニメーション制御・順位付けが可能


Animatorウィンドウ(Animation Controller Window)を使って、視覚的にアニメーションを制御出来ます。

Unity 4.3以前は、状態同士を繋ぐTransitionが煩雑になりがちでしたが、
4.3で導入された「Trigger」を活用する事で、すっきりと状態をまとめることができます。

※Triggerは、Bool的なものですが、自動でfalseになるという点がBoolと異なります。



■ワークフロー(人型キャラクターの場合)

導入の流れは、以下の通りです。

1. リギング済みの人型3Dデータを用意する(Tポーズ推奨)

人型キャラクターを用意します。

今回は説明のため、Asset Storeから無料のMale Character Packをダウンロードして使う事にします。

このアセットは、Mixamo社が提供する無料アセットです。

Mixamo社といえばですが、最近は、Auto-Riggerのように、データをアップロードするだけで自動でリギングしてくれる有料サービスを展開してますね。便利な世の中になりました。

同じく、リギングについては本題からずれますが、Unity公式ドキュメントにも記載のある、Blenderの「Rigify」を使うというのも手です。


Mixamo Auto-Rigger
https://www.mixamo.com/upload_character

Unity 公式ドキュメント Rigifyについて
http://docs.unity3d.com/Manual/BlenderAndRigify.html

 

2. Unityにモデルをインポートする

Male Character Packに含まれる3体のうち、「vincent」を選びました。下図のように、Hierarchyタブにドラッグアンドドロップします。



3. Animation Typeで「Humanoid」を選択する


Projectのvincentを選択すると、Inspectorに下図のように表示されます。

このRig>Animation Typeを、「Legacy」から「Humanoid」に変更します。
(人型以外の四足方向動物・他の生き物については、Animation Typeで「Generic」を選択します)



変更すると、画面が下図のように変化するので、右下の「Apply」ボタンを押して、変更を適用します。


Configureボタン左にチェックが入りました。問題なくいけたようです。


4. Configureより詳細設定を行う

人型の画像(下図左側)が緑色で表示されているのが確認出来ます。
問題がある場合は、問題箇所が赤色で表示されますが、オールOKでした。



右下の「Done」ボタンを押して、設定完了です。



5. 「Animator」コンポーネントをアタッチする

ここからは、動かす設定になります。

Asset>Create>Animation Controllerと選択し、新規でAnimation Controllerを作成します。

作成したAnimation Controllerを、以下のように、AnimatorのController部にアタッチします。(Animatorは自動でアタッチされていると思いますが、なければ手動でアタッチして下さい)



6. Animatorウィンドウより状態遷移を定義する

Projectビューより、作成したAnimation Controllerをダブルクリックすると、
Animatorウィンドウが表示されます。

ここに状態をまとめます。



Animatorウィンドウにて右クリックし、Create State>Emptyと選択します。


下図のように、New Stateが空の状態で追加されます。


New Stateをマウスで左クリック後、Inspectorを確認します。



「Motion」に、事前に用意しておいたモーションを選択・適用します。



これで設定完了です。本来はTransitionの設定を行いますが、割愛させていただきます。

Runすると、問題なくアニメーションしています。




まとめ

上記の通り、Mecanimを使うと、Unity取り込み後の設定をかなり簡略化することができました。説明で用いたモーションは、他のモデル用のものだったのですが、修正なしで流用することができました。非常に便利ですね。




その他参考サイト


・Unity 公式ドキュメント:IKについて
http://docs-jp.unity3d.com/Documentation/Manual/InverseKinematics.html

・Unity 公式ドキュメント:ステートマシンについて
http://docs-jp.unity3d.com/Documentation/Manual/StateMachineBasics.html

・Unity 公式ドキュメント:アニメーション関係用語集
http://docs-jp.unity3d.com/Documentation/Manual/AnimationGlossary.html

・Unity Japan Official Blog:Mecanim Humanoid について
http://japan.unity3d.com/blog/?p=1690







トンガルマンWebサイト
https://tongullman.co.jp/index.php
facebook
https://www.facebook.com/Tongullman

0 件のコメント:

コメントを投稿