头像配置文件(表情 BlendShape 映射)

将 VRM 标准表情名称分配给头像专属的表情 BlendShape

此页面为机器翻译,可能包含不准确的内容。

VRC Avatar Viewer 会将通过 VMC 协议接收到的表情数据(Joy / A / Blink 等 VRM 标准表情名)自动分配给头像的表情混合形状并驱动它们。对于 VRChat 头像,会自动分配 Avatar Descriptor 中指定的口型同步,因此嘴巴可以直接动起来。 不过,如果为某个头像专门创建 头像配置文件,就可以自己细致地指定对应关系。

头像配置文件是 .toml 格式的文本文件,每个头像准备一个文件。只需在直播模式面板中选择即可应用,VMC 接收过程中也能随时切换。

在直播模式中选择头像配置文件
在直播模式中选择头像配置文件
前提
  • 本指南以动作捕捉联动(让头像动起来(捕捉应用))已能正常工作为前提。请先确认头像已经能够动起来
  • VRM 头像(.vrm)本身就带有混合形状定义,因此本功能主要面向 .avab 格式的 VRChat 头像
1

配置文件的存放位置

配置文件放在与 Avatar Viewer 本体同一文件夹下的 avatar_profiles 文件夹中。

  1. 启动 Avatar Viewer,点击工具栏的 直播模式 按钮
  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]],就能用一个表情同时驱动多个表情混合形状
  • 以 # 开头的行是注释,可以自由书写
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. 在层级(Hierarchy)中选择脸部网格(通常是 Body 或 Face)
  3. 在检视器(Inspector)中展开 SkinnedMeshRenderer → BlendShapes
  4. 列出的名称可以直接用作 target。所选 GameObject 的名称就是 renderer

方法B: 查看 Viewer 的日志

target 名或 renderer 名有误时,查看器会输出警告日志。先用临时名称创建配置文件并加载,再一边看日志一边改成正确的名称,这种方法也很实用。

5

用 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
Tips
  • 即使接收值为 0,也会应用 min_weight 的值,因此也可以用作始终生效的"底数"偏移
  • 表情抖动得厉害时,最有效的办法是先试着降低 max_weight
6

省略 renderer 时的注意事项

如果没有填写 renderer,会依次检查头像内的所有 SkinnedMeshRenderer,并应用到第一个拥有指定 target 表情混合形状的对象上。

这种行为很方便,但如果服装、头发等其他网格上也有同名的表情混合形状,就可能导致意料之外的网格动起来。基本上建议明确指定 renderer。

7

在 Viewer 中选择并应用

  1. 在 Avatar Viewer 中显示头像
  2. 打开工具栏的 直播模式
  3. 点击「头像配置文件」的选择按钮,从列表中选择要使用的配置文件
  4. 开启 VMC 接收后,映射好的表情混合形状就会动起来
头像配置文件选择界面
头像配置文件选择界面
Tips
  • 在 VMC 接收过程中切换配置文件时会自动重新绑定,无需停止或重启
  • 选择 无 后,将恢复为不使用配置文件的原有自动分配
  • 编辑文件后,先切换到其他配置文件再切回来,修改就会生效

故障排除

  • 完全没有反应 主要原因是 source 拼写错误、target 填写了不存在的表情混合形状名,或 renderer 名称不对。请用 Step 4 的方法A确认正确的名称
  • 动的是别的网格 省略 renderer 时,可能匹配到了带有同名表情混合形状的其他网格。请明确指定 renderer
  • 表情太强或太弱 请用 max_weight 调整上限,用 min_weight 调整常驻偏移
  • 想用一个表情驱动多个表情混合形状 排列多个 source 相同的 [[expressions]] 块,即可同时驱动
  • 配置文件没有显示在列表中 请确认扩展名是否为 .toml,以及文件是否直接放在 avatar_profiles 文件夹下。名为 sample.toml 的文件会被排除在列表之外