アバタープロファイル(表情ブレンドシェイプマップ)

VRM標準の表情名をアバター固有の表情ブレンドシェイプに割り当てる

本ガイドでは、VRC Avatar Viewer のアバターを表示するアプリを「ビューアーアプリ」、モーションキャプチャするアプリ (Motion Capture for VRC Avatar Viewer) を「キャプチャーアプリ」と呼びます。

VRCアバタービューアーは、VMCプロトコルで受信した表情データ(Joy / A / Blink など VRM 標準の表情名)を、アバターの表情ブレンドシェイプに自動で割り当てて動かします。VRChatアバターの場合は、Avatar Descripterに指定されているリップシンクを自動で割り当てるので口が動きます。 ただ、アバター専用に アバタープロファイル を作ると、自分で対応関係を細かく指定できます。

アバタープロファイルは .toml という形式のテキストファイルで、1アバターにつき1ファイル用意します。配信モードのパネルから選択するだけで適用され、VMC受信中でもいつでも切り替えられます。

配信モードでアバタープロファイルを選択する
配信モードでアバタープロファイルを選択する
前提
  • このガイドはVMC受信(モーションキャプチャ連携)の基本的な動作を前提にしています。先にアバターが動くところまで確認しておいてください
  • VRMアバター(.vrm)はVRM自体がブレンドシェイプ定義を持つため、本機能は主に .avab 形式のVRChatアバター向けです
1

プロファイルファイルの場所

プロファイルは、アバタービューアー本体と同じフォルダにある avatar_profiles フォルダに置きます。

  1. アバタービューアーを起動し、ツールバーの 配信モード ボタンを押す
  2. 「アバタープロファイル」の項目にある フォルダを開く を押すと、エクスプローラーで avatar_profiles フォルダが開きます
  3. フォルダ内の sample.toml をコピーし、自分のアバター名などにリネーム(例: my_avatar.toml)
  4. テキストエディタ(メモ帳・VS Codeなど)で開いて編集
avatar_profiles フォルダを開く
avatar_profilesフォルダを開く
Tips
  • sample.toml はプロファイル一覧には表示されません。参考用としてそのまま残しておいて大丈夫です
  • 拡張子は必ず .toml にしてください
  • ファイル名(拡張子を除く部分)は自由です。ビューアー側では name フィールドの値が表示名として使われます
2

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
Tips
  • 同じ source に対して複数の [[expressions]] を書くと、1つの表情で複数の表情ブレンドシェイプを同時に動かせます
  • # で始まる行はコメントです。自由に書き込めます
3

使える 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
Tips
  • ここにない表情名(例: VRCFaceTrackingの細かい口角・頬・舌のパラメータ)はアバタープロファイルでは扱えません。それらを動かしたい場合は、配信モードの「フェイストラッキング」を VRCFaceTracking に切り替えて、アバター側のFXレイヤーで対応させてください
4

target(表情ブレンドシェイプ名)の調べ方

target には、アバターに実際に含まれている表情ブレンドシェイプの名前をそのまま書きます。名前は作者や命名規則によって大きく変わるので、事前の確認が必要です。

方法A: Unity上で確認する(エクスポート前)

  1. Unityでアバターを開く
  2. ヒエラルキーから顔のメッシュ(多くは BodyFace)を選択
  3. インスペクタの SkinnedMeshRendererBlendShapes を展開
  4. 並んでいる名前がそのまま target として使えます。選んだGameObjectの名前がそのまま renderer になります

方法B: Viewerのログを確認する

target名やrenderer名が間違っているときは、ビューアーが警告ログを出します。仮の名前でプロファイルを作って読み込み、ログを見ながら正しい名前に直していく方法も実用的です。

5

min_weight / max_weight で強度を調整する

受信した表情の強さ(0.0〜1.0)は、min_weightmax_weight の間に線形補間されて表情ブレンドシェイプに反映されます。省略時は 0100(=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
Tips
  • 受信側が0のときも min_weight の値が適用されるので、常時効かせたい「下駄」としても使えます
  • 表情が暴れるときは、まず max_weight を下げてみるのが一番効果的です
6

rendererを省略したときの注意

renderer を書かなかった場合は、アバター内のすべてのSkinnedMeshRendererを順に調べ、指定した target 表情ブレンドシェイプを最初に持っているものに適用します。

この挙動は便利ですが、衣装や髪など別のメッシュにも同名の表情ブレンドシェイプがあると、意図しないメッシュが動いてしまうことがあります。基本的には renderer を明示することをおすすめします

7

Viewerで選択して適用する

  1. アバタービューアーでアバターを表示する
  2. ツールバーの 配信モード を開く
  3. 「アバタープロファイル」の選択ボタンを押し、一覧から使いたいプロファイルを選ぶ
  4. VMC受信をONにすれば、マップされた表情ブレンドシェイプが動きます
アバタープロファイルの選択画面
アバタープロファイルの選択画面
Tips
  • VMC受信中にプロファイルを切り替えると、自動でバインドし直されます。止めたり再起動したりする必要はありません
  • なし を選ぶと、プロファイルを使わない従来の自動割り当てのみに戻ります
  • ファイルを編集した後は、一度別のプロファイルに切り替えてから戻すと変更が反映されます

トラブルシューティング

  • まったく反映されない source のスペルミス、target の存在しない表情ブレンドシェイプ名、renderer の名前違いが主な原因です。Step 4の方法Aで正しい名前を確認してください
  • 違うメッシュが動いてしまう renderer を省略していると、同名表情ブレンドシェイプを持つ別のメッシュに当たっていることがあります。renderer を明示してください
  • 表情が強すぎる・弱すぎる max_weight で上限を、min_weight で常時オフセットを調整してください
  • 1つの表情で複数の表情ブレンドシェイプを動かしたい 同じ source を持つ [[expressions]] ブロックを複数並べれば同時に動きます
  • プロファイル一覧に表示されない 拡張子が .toml になっているか、avatar_profiles フォルダ直下に置かれているかを確認してください。sample.toml という名前のファイルは一覧から除外されます