头像配置文件(表情 BlendShape 映射)
将 VRM 标准表情名称分配给头像专属的表情 BlendShape
VRC Avatar Viewer 会将通过 VMC 协议接收到的表情数据(Joy / A / Blink 等 VRM 标准表情名)自动分配给头像的表情混合形状并驱动它们。对于 VRChat 头像,会自动分配 Avatar Descriptor 中指定的口型同步,因此嘴巴可以直接动起来。 不过,如果为某个头像专门创建 头像配置文件,就可以自己细致地指定对应关系。
头像配置文件是 .toml 格式的文本文件,每个头像准备一个文件。只需在直播模式面板中选择即可应用,VMC 接收过程中也能随时切换。

- 本指南以动作捕捉联动(让头像动起来(捕捉应用))已能正常工作为前提。请先确认头像已经能够动起来
- VRM 头像(.vrm)本身就带有混合形状定义,因此本功能主要面向
.avab格式的 VRChat 头像
配置文件的存放位置
配置文件放在与 Avatar Viewer 本体同一文件夹下的 avatar_profiles 文件夹中。
- 启动 Avatar Viewer,点击工具栏的 直播模式 按钮
- 点击「头像配置文件」一项中的 打开文件夹,资源管理器会打开
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]],就能用一个表情同时驱动多个表情混合形状 - 以
#开头的行是注释,可以自由书写
可用的 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 中打开头像
- 在层级(Hierarchy)中选择脸部网格(通常是
Body或Face) - 在检视器(Inspector)中展开 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 中选择并应用
- 在 Avatar Viewer 中显示头像
- 打开工具栏的 直播模式
- 点击「头像配置文件」的选择按钮,从列表中选择要使用的配置文件
- 开启 VMC 接收后,映射好的表情混合形状就会动起来

- 在 VMC 接收过程中切换配置文件时会自动重新绑定,无需停止或重启
- 选择 无 后,将恢复为不使用配置文件的原有自动分配
- 编辑文件后,先切换到其他配置文件再切回来,修改就会生效
故障排除
-
完全没有反应
主要原因是
source拼写错误、target填写了不存在的表情混合形状名,或renderer名称不对。请用 Step 4 的方法A确认正确的名称 -
动的是别的网格
省略
renderer时,可能匹配到了带有同名表情混合形状的其他网格。请明确指定renderer -
表情太强或太弱
请用
max_weight调整上限,用min_weight调整常驻偏移 -
想用一个表情驱动多个表情混合形状
排列多个
source相同的[[expressions]]块,即可同时驱动 -
配置文件没有显示在列表中
请确认扩展名是否为
.toml,以及文件是否直接放在avatar_profiles文件夹下。名为sample.toml的文件会被排除在列表之外