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

将VRM标准表情名分配到头像特有的表情BlendShapes上

此页面为机器翻译,可能包含不准确的内容。
本指南中,将 VRC Avatar Viewer 的虚拟形象显示应用称为「Viewer 应用」,将动作捕捉应用 (Motion Capture for VRC Avatar Viewer) 称为「Capture 应用」

VRC Avatar Viewer会将通过VMC协议接收到的表情数据(Joy / A / Blink 等 VRM 标准表情名)自动分配到角色的表情混合形状上进行驱动。对于VRChat角色,会自动分配Avatar Descripter中指定的口型同步,因此嘴巴会动起来。 不过,如果为角色专门创建 角色配置文件,则可以自行详细指定对应关系。

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

在直播模式中选择角色配置文件
在直播模式中选择角色配置文件
前提
  • 本指南以VMC接收(动作捕捉联动)的基本运作为前提。请先确认角色能够正常动作
  • VRM角色(.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
  • 文件名(扩展名以外的部分)可以自由命名。Viewer端会使用 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. 从层级窗口中选择脸部网格(多数为 BodyFace)
  3. 展开检查器中的 SkinnedMeshRendererBlendShapes
  4. 排列的名称可以直接作为 target 使用。所选GameObject的名称就是 renderer

方法B: 查看Viewer的日志

当target名或renderer名错误时,Viewer会输出警告日志。先用临时名称创建配置文件并加载,然后边看日志边修正为正确名称的方法也很实用。

5

使用 min_weight / max_weight 调整强度

接收到的表情强度(0.0~1.0)会在 min_weightmax_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 的文件会被排除在列表之外