アバタープロファイル(表情ブレンドシェイプマップ)
VRM標準の表情名をアバター固有の表情ブレンドシェイプに割り当てる
VRCアバタービューアーは、VMCプロトコルで受信した表情データ(Joy / A / Blink など VRM 標準の表情名)を、アバターの表情ブレンドシェイプに自動で割り当てて動かします。VRChatアバターの場合は、Avatar Descripterに指定されているリップシンクを自動で割り当てるので口が動きます。 ただ、アバター専用に アバタープロファイル を作ると、自分で対応関係を細かく指定できます。
アバタープロファイルは .toml という形式のテキストファイルで、1アバターにつき1ファイル用意します。配信モードのパネルから選択するだけで適用され、VMC受信中でもいつでも切り替えられます。

- このガイドはVMC受信(モーションキャプチャ連携)の基本的な動作を前提にしています。先にアバターが動くところまで確認しておいてください
- VRMアバター(.vrm)はVRM自体がブレンドシェイプ定義を持つため、本機能は主に
.avab形式のVRChatアバター向けです
プロファイルファイルの場所
プロファイルは、アバタービューアー本体と同じフォルダにある avatar_profiles フォルダに置きます。
- アバタービューアーを起動し、ツールバーの 配信モード ボタンを押す
- 「アバタープロファイル」の項目にある フォルダを開く を押すと、エクスプローラーで
avatar_profilesフォルダが開きます - フォルダ内の
sample.tomlをコピーし、自分のアバター名などにリネーム(例:my_avatar.toml) - テキストエディタ(メモ帳・VS Codeなど)で開いて編集

sample.tomlはプロファイル一覧には表示されません。参考用としてそのまま残しておいて大丈夫です- 拡張子は必ず
.tomlにしてください - ファイル名(拡張子を除く部分)は自由です。ビューアー側では
nameフィールドの値が表示名として使われます
TOMLファイルの書き方
最小構成は、ファイル冒頭の name と、[[expressions]] ブロックを必要な数だけ並べるだけです。
name = "マイアバター"
[[expressions]]
source = "Joy"
target = "face_happy"
renderer = "Body"
[[expressions]]
source = "Blink"
target = "eye_close"
renderer = "Body"
[[expressions]]
source = "A"
target = "mouth_a"
renderer = "Body"
各フィールドの意味は以下の通りです。
| フィールド | 説明 | 省略時 |
|---|---|---|
source |
受信側の表情名(Joy / A / Blink など) | 必須 |
target |
アバターの表情ブレンドシェイプ名 | 必須 |
renderer |
表情ブレンドシェイプを持つSkinnedMeshRendererのGameObject名 | 自動検索 |
min_weight |
表情ブレンドシェイプウェイトの下限(0〜100) | 0 |
max_weight |
表情ブレンドシェイプウェイトの上限(0〜100) | 100 |
- 同じ
sourceに対して複数の[[expressions]]を書くと、1つの表情で複数の表情ブレンドシェイプを同時に動かせます #で始まる行はコメントです。自由に書き込めます
使える source 名の一覧
source に指定できる表情名は、VRM標準に準拠した以下のカテゴリです。大文字/小文字は区別されません。
| カテゴリ | source 名 |
|---|---|
| 表情 | Joy / Angry / Sorrow / Fun / Surprised / neutral |
| リップシンク | A / I / U / E / O |
| まばたき | Blink / Blink_L / Blink_R |
| 視線 | LookUp / LookDown / LookLeft / LookRight |
| 眉 | browDownLeft / browDownRight / browInnerUp / browOuterUpLeft / browOuterUpRight |
- ここにない表情名(例: VRCFaceTrackingの細かい口角・頬・舌のパラメータ)はアバタープロファイルでは扱えません。それらを動かしたい場合は、配信モードの「フェイストラッキング」を VRCFaceTracking に切り替えて、アバター側のFXレイヤーで対応させてください
target(表情ブレンドシェイプ名)の調べ方
target には、アバターに実際に含まれている表情ブレンドシェイプの名前をそのまま書きます。名前は作者や命名規則によって大きく変わるので、事前の確認が必要です。
方法A: Unity上で確認する(エクスポート前)
- Unityでアバターを開く
- ヒエラルキーから顔のメッシュ(多くは
BodyやFace)を選択 - インスペクタの SkinnedMeshRenderer → BlendShapes を展開
- 並んでいる名前がそのまま
targetとして使えます。選んだGameObjectの名前がそのままrendererになります
方法B: Viewerのログを確認する
target名やrenderer名が間違っているときは、ビューアーが警告ログを出します。仮の名前でプロファイルを作って読み込み、ログを見ながら正しい名前に直していく方法も実用的です。
min_weight / max_weight で強度を調整する
受信した表情の強さ(0.0〜1.0)は、min_weight と max_weight の間に線形補間されて表情ブレンドシェイプに反映されます。省略時は 0 〜 100(=100%まで動く)です。
# 笑顔を少し控えめにしたい
[[expressions]]
source = "Joy"
target = "face_happy"
renderer = "Body"
max_weight = 60
# 常に少しだけ口角を上げておきたい(下駄を履かせる)
[[expressions]]
source = "neutral"
target = "face_smile_slight"
renderer = "Body"
min_weight = 20
max_weight = 40
- 受信側が0のときも
min_weightの値が適用されるので、常時効かせたい「下駄」としても使えます - 表情が暴れるときは、まず
max_weightを下げてみるのが一番効果的です
rendererを省略したときの注意
renderer を書かなかった場合は、アバター内のすべてのSkinnedMeshRendererを順に調べ、指定した target 表情ブレンドシェイプを最初に持っているものに適用します。
この挙動は便利ですが、衣装や髪など別のメッシュにも同名の表情ブレンドシェイプがあると、意図しないメッシュが動いてしまうことがあります。基本的には renderer を明示することをおすすめします。
Viewerで選択して適用する
- アバタービューアーでアバターを表示する
- ツールバーの 配信モード を開く
- 「アバタープロファイル」の選択ボタンを押し、一覧から使いたいプロファイルを選ぶ
- VMC受信をONにすれば、マップされた表情ブレンドシェイプが動きます

- VMC受信中にプロファイルを切り替えると、自動でバインドし直されます。止めたり再起動したりする必要はありません
- なし を選ぶと、プロファイルを使わない従来の自動割り当てのみに戻ります
- ファイルを編集した後は、一度別のプロファイルに切り替えてから戻すと変更が反映されます
トラブルシューティング
-
まったく反映されない
sourceのスペルミス、targetの存在しない表情ブレンドシェイプ名、rendererの名前違いが主な原因です。Step 4の方法Aで正しい名前を確認してください -
違うメッシュが動いてしまう
rendererを省略していると、同名表情ブレンドシェイプを持つ別のメッシュに当たっていることがあります。rendererを明示してください -
表情が強すぎる・弱すぎる
max_weightで上限を、min_weightで常時オフセットを調整してください -
1つの表情で複数の表情ブレンドシェイプを動かしたい
同じ
sourceを持つ[[expressions]]ブロックを複数並べれば同時に動きます -
プロファイル一覧に表示されない
拡張子が
.tomlになっているか、avatar_profilesフォルダ直下に置かれているかを確認してください。sample.tomlという名前のファイルは一覧から除外されます