UnityのAvatarMaskについての基礎知識をまとめました。
Unity2018.2.11
AvatarMask?
AvatarMaskとは、特定の部位にだけモーションを適用するための機能です。
実際の用途としては下記の二つが挙げられます。
- アニメーションのインポート時に設定してアニメーションのキーが打たれないようにする
- アニメーション再生時に設定してアニメーションの合成などに使う
AvatarMaskの作成・設定
AvatarMaskはProjectビューで右クリック > Create > AvatarMaskで作れます。
マスクの設定はAvatarMaskのインスペクタから行います。
Humanoidの場合は無効化したい部位をクリックして赤い状態にします。
Genericの場合はUse skeleton fromにAvatarを入れてImport Skeletonを押します。
そして無効化したい部位のGameObject名のチェックを外します。
これでAvatarMaskの設定ができました。
インポート時のマスク
それではアニメーションのインポート時にAvatarMaskを使ってみます。
まず、走っているモーションを普通に再生できるようにAnimator Controllerをセットアップします。
そしてこのモーションのImport SettingsのAnimationタブのMaskからAvatarMaskを設定します。
DefinitionをCreate From Other MaskにするとAvatarMask欄が現れます。
試しに腕だけ動かないようにするとこのようになります。
ランタイムでのマスク
次にアニメーション再生時にAvatarMaskを使ってアニメーションを合成してみます。
まず、走っているモーションを普通に再生できるようにAnimator Controllerをセットアップします。
これにAvatarMaskを適用するには、レイヤーを追加して新しいレイヤーにAvatarMaskを追加します。
そしてこのレイヤーのWeightを1にすればマスクした部分だけがこのレイヤーのモーションになります。
今回は試しに腕だけ1つ目のレイヤーを適用するように設定してみました。
手だけが走るようになりました。