【Unity】レイヤー・アバターマスクを用いてアニメーションを複数同時に再生する


アニメーションはゲームオブジェクトのあらゆる動きを表現する上でとても重要なものです。しかし、あらゆる状況を想定したうえで、1つ1つその状況に応じたアニメーションを作成することは非常に手間がかかります。

アニメーション_上書き_解説1

そこで今回はAnimator Controllerのレイヤー機能・アバターマスクを用いて、1オブジェクトに対して複数のアニメーションを同時に適用していく手順についてご紹介していきます。

レイヤー機能・アバターマスクを用いればアニメーションの部分的な流用・合成が可能になり、効率的にアニメーション表現を行うことができます。

ユニティちゃんライセンス
本稿はユニティちゃんライセンス条項の元に提供されています。

レイヤー機能・アバターマスクについて

レイヤー

レイヤーは簡単に言うと階層です。よくグラフィックソフト等で目にする機能をイメージしてもらうとわかりやすいかもしれません。

レイヤー解説
レイヤーイメージ

アニメーションもレイヤー機能・アバターマスクを使用することでアニメーションの上書き等を実行することが可能です。

アニメーション_上書き_解説2
アニメーションの上書き

アニメーターウィンドウの左側でレイヤーは管理できます。

Aniamor_レイヤー
レイヤー

アバターマスク

アバターマスクはレイヤーが影響を及ぼす範囲、その度合いを設定するために用いるものです。

使用するモデルがHumanoidリグであった場合は「Humanoid」で範囲を指定可能です。

アバターマスク_Humanoid
アバターマスク

下準備

Unityちゃんの設定

UnityちゃんのモデルをHierarchyに追加します。

Unitychan_追加_Hierarchy
Unityちゃん追加

続いてUnityちゃんのアニメーションを制御するAnimator Controllerを設定します。今回はUnityちゃんをダウンロードするとついてくる「UnityChanLocomotions」を使用します。

animatorcontroller_設定手順

あわせてスクリプトもアタッチします。使用するのは「SamleUnityChanController」です。これもUnityちゃんをダウンロードした際に付属しています。

Unitychan_Script_アタッチ
Sample Unity Chan Controller

アニメーターコントローラーの基本的な使用手順については以下の記事をご覧ください。

【Unity】Animator Controllerを用いたアニメーション切り替え方法

アニメーション準備

今回はレイヤー・アバターマスクを用いて、常時武器を持っているようなアニメーションをUnityちゃんに適用します。使用するアニメーションは以下の通りです。

左腕のアニメーションがポイントです。言ってしまえば左腕の部分しか使いません。詳しくは後ほど説明していきます。

アニメーションの作成方法については以下の記事をご覧ください。

今回使用している武器アセットはこちらです。

武器アセット_3D Classic Sword

3D Classic Sword

使用手順

アバターマスク追加・設定

まずアバターマスクを作成しアニメーションを上書きする範囲を設定していきます。

Assetsエリアより[Create]->[Avatar Mask]の手順でアバターマスクを作成してください。

アバターマスク_追加
アバターマスク追加

アバターマスクの名前は任意で設定してください。今回は制御する範囲にちなんで「LeftArm」としています。

アバターマスク_アイコン_shin
アイコン

アバターマスクを開き、以下の手順で範囲を設定していきます。

  1. 「Humanoid」をクリックして展開。
  2. 余白をクリックして全選択解除。
  3. 「左腕」「左手」「IK」をクリックして範囲を設定。
アバターマスク_範囲設定手順
範囲設定手順

*「Transform」から「unitychanAvatar」を追加するとより細かい範囲設定が可能です。場合に合わせてご利用ください。

アバターマスク_skeleton追加
Transform 範囲設定手順

これでアバターマスクの設定は完了です。

新規レイヤー追加・設定

次にAnimatorウィンドウより新規レイヤーを追加していきます。「UnityChanLocomotions」を開いたら以下の手順で設定して下さい。

1.「+」ボタンを押して新規レイヤーを追加する。
2.レイヤーの名前を変更する。

レイヤー追加_名前変更
手順1~2

続いて新規に追加した「LeftArm」レイヤーの各種設定を行います。レイヤー右側にある歯車マークをクリックし以下の手順で設定して下さい。

3.「Weight」を「1」に設定。
4.「Mask」を「LeftArm」に設定。
5.「Sync」を適用。

レイヤー_アバターマスク設定
手順3~5

「Weight」「1」「Blending」「Override」に設定することにより「LeftHand」レイヤーで設定したアニメーションが完全に再生されるように設定しています。

また、「Sync」を適用し「Base Layer」をもとにアニメーションを上書きしていきます。


レイヤーのプロパティについて簡単にまとめてみました。

プロパティ 機能
Weight アニメーションの適用度合いの比重を調整する。「0~1」で設定可能。
Mask レイヤー上で制御するアバターマスクを選択。
Blendling アニメーションの混ざり具合を設定する。
-Override 他のアニメーションを完全に無視、上書きする。設定レイヤーのアニメーションを最優先に再生する。
-Additive 前レイヤーのアニメーションに設定レイヤーのアニメーションが加算される。
Sync 他のレイヤーを同期する。
Source Layer 「Sync」を適用した際の元となるレイヤー。
IK Pass インバースキネマティクス。

それでは「Left Arm」レイヤーのアニメーションを設定していきます。

設定は簡単です。アニメーションを上書きしたいステートをクリックし、適用したいアニメーションを選択するだけです。今回は「Idle」「Locomotion」「WalkBack」に下準備でご紹介したアニメーションを適用していきます。

ステート_アニメーション割り振り
ステート設定

それではゲームを実行してUnityちゃんを動かしてみましょう。まずは待機モーション「Idle」です。

レイヤーを設定している方は左腕のアニメーションが上書きされているため、少し左腕を揺らしながら武器を保持するといったモーションが出来上がっています。

続いて「Walk Back」です。

「Idle」同様、レイヤーを設定している方は左腕のアニメーションが上書きされ、しっかり武器をつかんでいます。

最後に「Locomotion」です。

今回レイヤー機能を用いて一番矯正が必要だった箇所です。左腕を別のアニメーションで上書きしないと武器が顔を貫通してしまいます。

左腕のみアニメーションを上書きすることによって改善されていることが確認できます。

まとめ

いかがでしたでしょうか。今回はレイヤー機能・アバターマスクを用いて複数のアニメーションを同時に再生する手順についてご紹介してきました。

レイヤーをうまく使い分けることで状況に応じたアニメーションの変遷を生み出すことが可能です。また、アニメーションを組み合わせることにより、アニメーション作成の効率化も図ることができます。

既存のアニメーションの中で様々な動きを組み合わせてやりくりできると理想的です。ぜひ挑戦してみてください。

その他アニメーションについて興味を持った方はこちら↓


Massuuuu