アバター改変の解説 第6回

Animator のしくみ

メニューを押すと、帽子が出る。ハンドサインをすると、表情が変わる。そのあいだには、パラメーター、Animator、ステート、トランジション、アニメーションクリップという部品が順に動いています。自分でギミックを作る前に、それぞれの役目と、どこで設定するのかを解説します。

公開 · 対象は Unity の Built-in Render Pipeline と VRChat のアバター(Avatars 3.0)です。2026年11月時点の内容です。

こんなときに読んでください

  • 自分でギミックを作ってみたいが、Animator を開いても何がなんだか分からない。
  • FX、Gesture などの名前は見たことがあるが、違いが分からない。
  • パラメーターとメニューと Animator が、どうつながっているのか知りたい。
  • 配布されているギミックを入れたが、中で何が起きているのか分からない。

メニューを押してから、見た目が変わるまで

VRChat のアバターのギミックは、ほとんどが同じ流れで動きます。この回では、メニューで帽子を出し入れするギミックを例にします。名前は例です。

  1. メニューを押すExpressions Menu の Toggle「帽子」
  2. パラメーターが変わるHat が false から true に
  3. トランジションの条件を満たす条件は「Hat が true」
  4. ステートが変わるHat_OFF から Hat_ON に
  5. クリップの値が書かれる帽子の Is Active を 1 に
  6. 見た目が変わる帽子が出る

メニューは、パラメーターの値を変えるだけです。見た目は変えません。見た目を変えるのは、Animator が再生するアニメーションクリップです。メニューと Animator は、パラメーターの名前でつながっています。

ハンドサインや、触れたことで動くギミックも同じです。最初の「メニューを押す」が「手の形が変わる」「頭に手が触れる」に変わるだけで、パラメーターから先は同じ流れです。

ギミックが動かないときは、この流れのどこで止まっているかを、左から順に確かめます。確かめ方は第12回 ギミックが動かないときで解説します。

この回で出てくる言葉

はじめに、言葉の意味をそろえておきます。Unity の画面の表記は英語のままにしています。

Animator(アニメーター)
パラメーターを見て、いまどのアニメーションを再生するかを決めるしくみです。アバターのいちばん上に付いている Animator コンポーネントが、これを動かします。
Animator Controller(コントローラー)
Animator の中身を入れたファイルです。拡張子は .controller。中に、レイヤー、ステート、トランジション、パラメーターが入っています。
Playable Layers
VRChat がアバターに用意している、コントローラーを入れる枠です。FX、Gesture などがあります。
レイヤー
コントローラーの中の段です。ギミック1つにつき1つ作ることが多いです。Playable Layers とは別のものです。
ステート
「帽子が出ている」のような、いまの状態を表す箱です。1つのステートに、1つのクリップを入れます。
トランジション
ステートからステートへの矢印です。条件を満たすと、矢印の先のステートへ移ります。
パラメーター
Animator が見る値です。Bool(オンかオフ)、Int(整数)、Float(小数)があります。
アニメーションクリップ
どのオブジェクトの何を、どの値にするかを書いたファイルです。拡張子は .anim。作り方は第7回 アニメーションを作るで解説します。
Expression Parameters
VRChat に、アバターで使うパラメーターを知らせる一覧です。値を覚えておくか、ほかの人に送るかも、ここで決めます。
Expressions Menu
VRChat の中で開くメニュー(Action Menu)の中身です。項目を押すと、パラメーターの値が変わります。

Playable Layers の役目

VRChat のアバターには、コントローラーを入れる枠が5つあります。これを Playable Layers と呼びます。Hierarchy でアバター(VRC Avatar Descriptor が付いたもの)を選び、Inspector の VRC Avatar Descriptor の「Playable Layers」で見られます。

5つの枠は、Base、Additive、Gesture、Action、FX の順に重ねて使われます。同じものを2つの枠が動かすときは、あと(FX に近いほう)が勝ちます。

Base
歩く、走る、しゃがむなど、移動の動きです。骨(Transform)だけを動かします。ふつうは変えません。
Additive
Base の動きに足す動きです。呼吸の動きなど。Humanoid の骨だけを動かします。ふつうは変えません。
Gesture
ハンドサインのときの指の形や、しっぽ・耳の動きです。骨だけを動かします。
Action
エモートなど、体全体を動かす動きです。ふだんは効いていない(Weight が 0)枠で、使うときだけ効かせます。
FX
骨の動き以外のすべてです。オブジェクトのオンオフ、BlendShape(表情や体の形)、マテリアルなど。自分で作るギミックは、ほとんどがここに入ります。
Sitting・TPose・IKPose
座ったときの動きや、体の大きさ・関節の曲がり方を測るためのポーズです。Playable Layers の下に並んでいます。ふつうは変えません。

見た目を FX で動かすのには、理由があります。FX 以外の枠で動かした BlendShape やマテリアルは、鏡に映る自分(ミラーの中のアバター)に写されません。FX で動かしたものは、すべて写されます。

反対に、Humanoid の骨(腕、脚、頭、指など)は、FX では動きません。手の形やポーズは Gesture や Action で動かします。ハンドサインで表情を変えるときも、表情(BlendShape)は FX、指の形は Gesture、と分かれます。くわしくは第10回 ハンドサインで表情を変えるで解説します。

Humanoid ではない(Generic の)アバターには、Base、Action、FX の3つの枠だけがあります。

再現図:Unity の Inspector(VRC Avatar Descriptor の Playable Layers)。名前は例です。並びと表示は簡単にしています
  1. Gesture の枠です。ハンドサインのときの指の形を作るコントローラーが入っています。「Default」のままの枠は、VRChat の標準のコントローラーが使われます。
  2. FX の枠です。買ったアバターには、表情などのためのコントローラーが、たいてい最初から入っています。欄をクリックすると Project ウィンドウでそのファイルが光り、ダブルクリックすると Animator ウィンドウで開けます。

コントローラー・レイヤー・ステート・トランジション

コントローラーの中を見るのは、Animator ウィンドウです。Window → Animation → Animator で開き、Project ウィンドウでコントローラーのファイルを選ぶ(またはダブルクリックする)と、中身が出ます。

自分で作るときは、Project ウィンドウのフォルダで右クリックして、Create → Animator Controller を選びます。ギミックごとに1つ作っておくと、あとで Modular Avatar でアバターにつなぎやすくなります。

Animator ウィンドウの左上には、Layers と Parameters の2つのタブがあります。Layers を選ぶとレイヤーが並び、選んだレイヤーのステートとトランジションが、右の広いところ(グラフ)に出ます。

レイヤー
ギミックごとに分けた段です。左上の + で足します。上から順に計算され、同じものを書くときは下のレイヤーが勝ちます。いちばん上の Base Layer 以外は、足したときの Weight(効き具合)が 0 です。レイヤーの右の歯車を押して、Weight を 1 にします。0 のままだと、ステートは切り替わっても、見た目に出ません。
ステート
「帽子が消えている」「帽子が出ている」のような状態を表す箱です。グラフの何もないところを右クリックして Create State → Empty で作るか、クリップのファイルをグラフにドラッグして作ります。ステートを選ぶと、Inspector の Motion に、そのとき再生するクリップが出ます。
Default State(オレンジ色のステート)
レイヤーが動き出したときに、最初に入るステートです。最初に作ったステートがオレンジ色になります。ステートを右クリックして Set as Layer Default State で変えられます。オンオフなら、ふだんの姿(帽子が消えている)を Default にします。
トランジション
ステートからステートへの矢印です。ステートを右クリックして Make Transition を選び、行き先のステートをクリックすると引けます。矢印を選ぶと、Inspector に移るときの設定と Conditions(条件)が出ます。
Entry・Any State・Exit
Entry は入り口で、Default State へつながっています。Any State は「いまどのステートにいても」という意味で、ここから引いた矢印は、条件を満たせばどこからでも移ります。Exit は出口です。オンオフのギミックは、Any State と Exit を使わずに作れます。
再現図:Unity の Animator ウィンドウ(帽子を出し入れするコントローラー)。名前は例です。グラフは文字の並びに直しています
  1. ギミック1つにつき、レイヤーを1つ足します。左上の + を押し、名前(ここでは Hat)を付けます。
  2. レイヤーの右の歯車を押すと出ます。足したばかりのレイヤーは Weight が 0 です。必ず 1 にします。
  3. オレンジ色のステートから始まります。帽子が消えている Hat_OFF を Default にしています。
  4. 矢印を選ぶと、Inspector に条件が出ます。行きは Hat が true、帰りは Hat が false のときに移ります。
設定意味オンオフのギミックでは
Has Exit Timeチェックが入っていると、いまのクリップを決まった時間(Exit Time)まで再生してから移ります。外します。すぐに移るようにします。
Transition Duration前のステートから次のステートへ、混ぜながら移る長さです。Fixed Duration にチェックがあれば秒、無ければクリップの長さに対する割合です。0 にします。パッと切り替わるようにします。
Conditions移る条件です。+ で足し、パラメーターと値を選びます。いくつか足すと、すべてを満たしたときに移ります。行きは Hat が true、帰りは Hat が false。
Can Transition To SelfAny State から引いた矢印にだけある設定です。チェックがあると、条件を満たしている間、同じステートに何度も入り直します。Any State を使うときは、たいてい外します。

トランジションの設定を1つずつ決める手順は、第8回 メニューでオンオフするギミックを作るで解説します。

作ったコントローラーをアバターで動かすには、アバターの FX の枠に入っているコントローラーに足す必要があります。Modular Avatar の MA Merge Animator を使うと、買ったアバターの FX のファイルを書き換えずに、アップロードするときに自動で足してくれます。この連載では、この方法をおすすめします。手順は第8回 メニューでオンオフするギミックを作るで解説します。

パラメーター(Animator と Expression Parameters)

パラメーターは、Animator が見る値です。トランジションの条件や、Blend Tree(値に合わせてクリップを混ぜるしくみ)に使います。

パラメーターは、2か所に書きます。1つは、コントローラーの Parameters タブ(Animator が見る値)です。もう1つは、VRChat の Expression Parameters(メニューから変えられて、覚えておいたり、ほかの人に送ったりする値)です。この2つは、名前でつながります。名前は、大文字と小文字まで同じにします。Hat と hat は別のパラメーターです。

Animator にパラメーターを足すには、Animator ウィンドウの Parameters タブを開き、+ を押して型(Bool など)を選び、名前を入れます。Expression Parameters のファイルは、Project ウィンドウで右クリックして Create → VRChat → Avatars → Expression Parameters で作れます。買ったアバターには、たいてい最初から入っています。

型入る値同期に使う量よく使うギミック
Booltrue(オン)か false(オフ)1 bit小物や服の出し入れ。第8回 メニューでオンオフするギミックを作る
Int0〜255 の整数8 bit何着かから1つを選ぶ。第9回 段階で切り替える・少しずつ変えるギミック
Float-1.0〜1.0 の小数(Radial Puppet では 0.0〜1.0)8 bit色や大きさを、回して少しずつ変える。第9回 段階で切り替える・少しずつ変えるギミック
Trigger(Animator だけ)一瞬だけ true になる—VRChat の公式は、使わないようにすすめています。Bool・Int・Float を使います。

Animator の型は、Expression Parameters の型と同じにするのが基本です。違う型にすると、VRChat が変換します。たとえば、Expression Parameters で Bool のパラメーターを、Animator で Float として受けると、true は 1.0、false は 0.0 になります。オンオフを Blend Tree で扱いたいときに使えます。

Expression Parameters には、パラメーターごとに次の設定があります。

Default
アバターを読み込んだときや、リセットしたときの値です。帽子をはじめはかぶっていないなら、false にします。
Saved
チェックを入れると、ワールドを移ったり、アバターを着替えたりしても、値を覚えておきます。外すと、そのたびに Default に戻ります。
Synced
チェックを入れると、値がほかの人に送られます。外すと自分にだけ変わり、ほかの人には変わって見えません。

同期する(Synced にチェックがある)パラメーターは、合計で 256 bit までです。Bool は 1 bit、Int と Float は 8 bit を使います。

VRChat が値を入れてくれるパラメーターもあります(組み込みのパラメーター)。ハンドサインの GestureLeft・GestureRight、自分のアバターかどうかの IsLocal などです。これは Expression Parameters には書きません。Animator の Parameters に、同じ名前と型で足すだけで使えます。ハンドサインの番号は第10回 ハンドサインで表情を変えるで解説します。

Saved・Synced・Default を、ギミックに合わせて決める手順は第8回 メニューでオンオフするギミックを作るで解説します。

再現図:Animator ウィンドウの Parameters タブと、Expression Parameters の Inspector。名前は例です。並びは簡単にしています
  1. Animator の Parameters タブです。ここに無いパラメーターは、トランジションの条件に選べません。
  2. Expression Parameters の名前です。Animator のパラメーターと、大文字小文字まで同じにします。名前をコピーして貼ると、まちがえにくくなります。
  3. Saved:ワールドを移っても、値を覚えておきます。
  4. Synced:値をほかの人に送ります。外すと、ほかの人からは変わって見えません。

Expressions Menu は、VRChat の中で開くメニュー(Action Menu)の中身です。メニューの項目(Control)は、押したり回したりすると、パラメーターの値を変えます。

VRC Avatar Descriptor の「Expressions」の欄に、Menu(メニューのファイル)と Parameters(Expression Parameters のファイル)を入れて使います。メニューのファイルは、Project ウィンドウで右クリックして Create → VRChat → Avatars → Expressions Menu で作れます。

1つのメニューに置ける項目は、8つまでです。それより多いときは、Sub Menu で別のメニューに分けます。

種類すること使うパラメーター
Toggle押すと Value の値を入れ、もう一度押すと元に戻します。Bool(Int・Float にも使えます)
Button押すと Value の値を入れ、少したつと(1秒ほどで)元に戻します。押したままにはできません。Bool・Int など
Sub Menu別のメニューを開きます。メニューの中に、さらにメニューを入れられます。使わなくてもよい
Two Axis Puppetスティックを倒した縦と横で、2つの Float を -1.0〜1.0 の間で変えます。Float 2つ
Four Axis Puppet上・右・下・左に倒した量で、4つの Float を 0.0〜1.0 の間で変えます。Float 4つ
Radial Puppet丸いメーターを回して、1つの Float を 0.0〜1.0 の間で変えます。Float 1つ

Toggle と Button の Value は、押したときにパラメーターへ入る値です。Bool なら 1 で true になります。Int なら番号です。たとえば Value が 2 なら、パラメーターが 2 になり、2番の服に切り替える、という作り方ができます。

再現図:Unity の Inspector(Expressions Menu の項目)。名前は例です。並びは簡単にしています
  1. VRChat のメニューに出る名前です。日本語も使えます。
  2. 項目の種類です。オンオフなら Toggle にします。
  3. 値を変えるパラメーターです。Expression Parameters にあるパラメーターから選びます。

Modular Avatar の MA Menu Item と MA Menu Installer を使うと、アバターのメニューのファイルを書き換えずに、項目を足せます。この連載では、こちらを使います(第8回 メニューでオンオフするギミックを作る)。

服のオンオフだけなら、Modular Avatar の Create Toggle で、Animator を作らずに済ませる方法もあります(第3回 衣装を着せる)。この連載の回では、しくみが分かるように、Animator から自分で組みます。

動かして確かめる

メニューの「帽子」を押したときに、パラメーター、ステート、クリップの順に何が起きるかを見てみてください。レイヤーの Weight と、Animator のパラメーター名も変えられます。帽子は、Unity でオフにしてアップロードしたものとします。

Animator(Hat のレイヤー)

いまのステート Hat_OFF

見た目

Is Active 0

メニュー
Hat のレイヤーの Weight
Animator のパラメーター名

メニューが Expression Parameters の Hat を false にしました。Animator にも同じ名前の Hat があるので、Animator の Hat も false です。

Animator の Hat が false なので、ステートは Hat_OFF です。

Weight が 1 なので、Hat_OFF のクリップが、帽子の Is Active を 0 と書きます。

メニューのとおり、帽子が消えています。

よくある困りごとと直し方

ステートは変わるのに、見た目が変わらない

起きること
Unity で再生すると、Animator ウィンドウではステートが切り替わっている。でも、帽子は出ない。
原因
足したレイヤーの Weight が 0 のままです。Unity でレイヤーを足すと、Weight は 0 で作られます。
直し方
Animator ウィンドウの Layers で、そのレイヤーの歯車を押し、Weight を 1 にします。

メニューを押しても、ステートが変わらない

起きること
メニューの項目を押しても、Animator のステートが Default のまま動かない。
原因
Expression Parameters と Animator で、パラメーターの名前が違います。大文字小文字の違いや、名前の最後の空白もよくあります。Animator にパラメーターを足し忘れていることもあります。
直し方
Expression Parameters の名前をコピーして、Animator のパラメーター名に貼り直します。型もそろえます。

切り替わるのが遅れる・じわっと変わる

起きること
メニューを押してから、一拍おいて切り替わる。パッと変わらず、少しずつ変わる。
原因
トランジションの Has Exit Time にチェックが入っているか、Transition Duration が 0 ではありません。
直し方
矢印を選び、Has Exit Time を外し、Transition Duration を 0 にします。第8回 メニューでオンオフするギミックを作るも見てください。

手の形やポーズが動かない

起きること
FX のクリップで腕や指の形を作ったのに、VRChat では動かない。
原因
Humanoid の骨(筋肉)は、FX では動きません。
直し方
手の形は Gesture、体全体の動きは Action のコントローラーで動かします。

鏡の中の自分だけ、表情が変わらない

起きること
自分の目で見ると表情が変わっているのに、鏡に映るアバターは変わらない。
原因
表情の BlendShape を、FX 以外の枠(Gesture など)で動かしています。FX 以外の枠の BlendShape やマテリアルは、鏡の中のアバターに写されません。
直し方
表情などの見た目のクリップは、FX のコントローラーに移します。

自分には見えるのに、ほかの人には変わって見えない

起きること
自分の画面では帽子が出ているのに、フレンドからは見えていないと言われる。
原因
Expression Parameters で、そのパラメーターの Synced のチェックが外れています。
直し方
Synced にチェックを入れて、アップロードし直します。ほかの原因は第12回 ギミックが動かないときにまとめています。

気をつけること

  • 買ったアバターの FX のファイルを直接書き換えるときは、先に複製を取っておきます。できれば Modular Avatar で、自分のコントローラーを別に足します。アバターを更新しても、自分のギミックが消えません。
  • 1つのコントローラーを、2つの枠(たとえば Gesture と FX)に入れないでください。VRChat の公式も、大きな問題の元になるとしています。
  • 行き止まりのステートを作らないでください。パラメーターはいつでも変わります。行きの矢印を引いたら、帰りの矢印も引きます。
  • 同じコントローラーの中で、Write Defaults の ON と OFF を混ぜないでください。オンのクリップとオフのクリップを両方作っておくと、どちらでも動きます(第13回 Unity と VRChat で見た目が変わる)。
  • パラメーターの名前は、何のギミックか分かる名前にします。ほかのギミックと同じ名前にすると、片方を動かしたときに、もう片方も動きます。

まとめ

  • メニューはパラメーターの値を変えるだけで、見た目を変えるのは Animator が再生するクリップです。
  • 見た目(オンオフ、BlendShape、マテリアル)は FX で動かします。Humanoid の骨は FX では動きません。
  • コントローラーの中は、レイヤー、ステート、トランジションでできています。足したレイヤーは Weight を 1 にします。
  • Animator のパラメーターと Expression Parameters は、名前でつながります。大文字小文字までそろえます。
  • 次は、ステートに入れるクリップを作ります(第7回 アニメーションを作る)。

アバター改変の解説の一覧