# Merge Animator

![Merge Animator](merge-animator.png)

Merge Animatorコンポーネントは、指定したアニメーターをアバターの指定したレイヤーに追加します。
ドラッグアンドドロップだけで導入できるAV3ギミックを実装する時には便利です。

## いつ使うもの？

アセットの中に、アバター本体のアニメーターに追加するコントローラーがあった場合に使います。

## 非推奨の場合

既存のレイヤーをそのままにして、指定したコントローラーを追加するだけです。完全に既存のアニメーターを置き換える場合は従来通り
ユーザーに差し替えてもらいましょう。

## セットアップ方法

Merge Animatorコンポーネントをプレハブの中の任意のオブジェクトに追加して、統合されるアニメーターに自分のアニメーターコントローラーを指定します。
そして、「レイヤー種別」をFXなど、アバターディスクリプタにあるアニメーター種別を指定します。

### アニメーションの収録

デフォルトでは、アニメーターの中のパスはMerge Animatorコンポーネントを基準に相対的に解釈されます。
Merge Animator以下のオブジェクトだけをいじる場合は、これでアニメーションの収録が簡単にできます。

GameObjectにAnimatorコンポーネントも追加して、Animationパネルでアニメーションを収録できます。

![Recording an animation using Merge Animator](merge-animator-record.png)

開発の補助として、「付属アニメーターを削除」を入れると、同じオブジェクト内のAnimatorが自動的に排除されます。

### ヒューマノイドボーンのアニメーション

ヒューマノイドボーンを操作するアニメーションは上記の相対的なパスで解釈されるのではなく、アバター全体に適用されます。
AFKアニメーションなどほとんどのヒューマノイドアニメーションがそのまま使えるというわけです。

### 絶対的パスモード

自分のプレハブ外の、元々からあったオブジェクトを操作する場合は、「パースモード」を「絶対的」に変えてください。
これでアニメーターの中のパスがアバターを基準に解釈され、Merge Animatorから相対的に解釈されるシステムがはずされます。
上記の収録方法が使えなくなるわけです。

### Write Defaults

デフォルトでは、アニメーターの中のWrite Defaults設定がそのまま使われます。アバターに合わせたい場合は、「アバターのWriteDefaults設定に合わせる」を入れてください。
アバターの既存アニメーターが一貫して同じWriteDefault設定を使っているかを判断して、それに合わせます。
なお、アバターがもともとからWD設定を混合している場合は、統合するアニメーターの設定をそのまま採用します。

## 制限

### VRCAnimatorLayerControl

現在、VRCAnimatorLayerControlのState Behaviorに関しては、単一アニメーター内のレイヤーを操作する場合のみに対応しています。
かならず`Playable`値がMergeAnimatorのレイヤー種別と同じになるようにして、`Layer`値を自分のアニメーター内のレイヤー番号にしてください。
