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

- 本指南以VMC接收(动作捕捉联动)的基本运作为前提。请先确认角色能够正常动作
- VRM角色(.vrm)由于VRM自身具有混合形状定义,本功能主要面向
.avab格式的VRChat角色
配置文件的存放位置
配置文件放置在与Avatar Viewer本体同一文件夹下的 avatar_profiles 文件夹中。
- 启动Avatar Viewer,按下工具栏的 直播模式 按钮
- 按下「角色配置文件」项目中的 打开文件夹,资源管理器会打开
avatar_profiles文件夹 - 复制文件夹中的
sample.toml,重命名为自己的角色名等(例:my_avatar.toml) - 用文本编辑器(记事本、VS Code等)打开并编辑

sample.toml不会显示在配置文件列表中。可以作为参考保留下来- 扩展名必须是
.toml - 文件名(扩展名以外的部分)可以自由命名。Viewer端会使用
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中打开角色
- 从层级窗口中选择脸部网格(多数为
Body或Face) - 展开检查器中的 SkinnedMeshRenderer → BlendShapes
- 排列的名称可以直接作为
target使用。所选GameObject的名称就是renderer
方法B: 查看Viewer的日志
当target名或renderer名错误时,Viewer会输出警告日志。先用临时名称创建配置文件并加载,然后边看日志边修正为正确名称的方法也很实用。
使用 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的文件会被排除在列表之外