For the complete documentation index, see llms.txt. This page is also available as Markdown.

输出绑定

将每种情绪映射到角色骨骼上的特定面部形状或 Animator 参数,并为每个槽位设置权重以及与 LipSync 的协调。

从情绪分数驱动面部和 Animator

输出绑定是 Emotion 系统平滑后的分数表与角色视觉表现之间的桥梁。SDK 提供两种绑定类型—— BlendshapeEmotionBinding 用于直接网格控制,以及 AnimatorParameterEmotionBinding 用于基于 Mecanim 的骨骼绑定——两者可同时启用。每个绑定都是一个 EmotionSlotBinding 条目列表,每个输出通道中的每种情绪各一项,全部在 ConvaiEmotionProfile 资源。

EmotionSlotBinding 字段

两种绑定类型中的每个槽位都共享同一组字段:

字段
类型
范围 / 格式
默认值
说明

emotionLabel

string

规范分类标签

该槽位所驱动的情绪。必须与当前分类体系中定义的标签匹配(例如 "joy", "anger", "neutral").

blendshapeNames

string

以逗号或换行分隔

角色的一个或多个 blendshape 名称 SkinnedMeshRenderer。列表中的所有形状会同时接收相同的计算权重。用于 BlendshapeEmotionBinding 仅此而已。

animatorParameterName

string

Animator 浮点参数名

一个 float Animator Controller 中的参数名称。留空可跳过该槽位的 Animator 输出。用于 AnimatorParameterEmotionBinding 仅此而已。

weightMultiplier

float

0 – 2

1

在写入输出之前应用于分数的每槽缩放因子。大于 1 会增强情绪的视觉影响;小于 1 会减弱它。

fullBlendshapeWeight

float

0 – 100

100

情绪分数达到 1.0 时写入的 blendshape 值。将 SDK 归一化的 0–1 范围映射到 Unity 的 0–100 网格单位。

isMouthShape

bool

false

为 true 时,该 blendshape 会被视为口部区域形状,并通过一个单独的合成层路由,供 LipSync 在语音期间调制。

Blendshape Binding

BlendshapeEmotionBinding 直接写入 SkinnedMeshRenderer的 blendshapes,每帧都会写入。它是最直接的路径,无需 Animator Controller。

Blendshape 名称格式

blendshapeNames 字段接受以逗号分隔或换行分隔的列表。列表中的所有名称会同时获得相同权重,这在单个情绪姿态需要多个 blendshape 时很有用——例如,一个微笑同时激活嘴角上扬和脸颊鼓起:

Facial_LipCornerPull_L, Facial_LipCornerPull_R, Facial_CheekPuff

要为角色找到正确的名称:在 Hierarchy 中选择角色的网格,查看 Inspector 里的 Skinned Mesh Renderer 组件,并展开底部的 BlendShapes 部分。那里列出的名称就是你要在槽位中输入的名称。

权重计算

每一帧,最终的 blendshape 值按以下方式计算:

finalWeight = score × weightMultiplier × fullBlendshapeWeight

其中 score 是来自累加器的平滑、经 burst 调整后的值(0–1)。在默认设置下,完全激活的情绪会将 blendshape 驱动到 100(Unity 网格单位)。

isMouthShape 标记

Animator 参数绑定

AnimatorParameterEmotionBinding 将平滑后的情绪分数写入为 float 参数到一个 Animator 组件,位于同一个 GameObject 上。当角色使用 Mecanim 绑定,且由情绪驱动的姿势以动画状态或 blend tree 的形式制作时,这是正确的选择。

要求

  • 每个槽位中的参数名称必须与一个 Float Animator Controller 中定义的参数完全一致(区分大小写)。

  • Animator 组件必须与 ConvaiEmotionController位于同一个 GameObject 上,或者可通过骨骼绑定访问到。

推荐命名约定

使用一致的前缀可以让参数在 Animator 窗口中更容易识别,并避免与其他系统冲突:

两者 BlendshapeEmotionBinding 是位于 AnimatorParameterEmotionBinding 可以同时填充。系统会在每帧向两个通道写入,这对于将直接 blendshape 控制与 Animator 驱动的次级运动(布料、头发、身体倾斜)结合起来的绑定很有用。

通过 RealisticEmotionSlots 提供的预置槽位

如果你的角色使用 Reallusion CC3、CC4 或兼容 ARKit 的绑定,SDK 包含一个工厂,可生成受 FACS 启发的槽位列表,覆盖全部八种非中性情绪。这些槽位使用多形状组合(Duchenne 微笑、斜向皱眉、眉毛上扬等),比单一 blendshape 映射产生更可信的表情。

该工厂通过代码调用——例如从 Editor 工具或设置脚本中:

支持的 RigConvention 值:

说明

ReallusionCC4Extended

Reallusion Character Creator 4 Extended 面部配置文件

ReallusionCC3

Reallusion Character Creator 3 基础配置文件

ARKit

Apple 的 52-blendshape ARKit 规范

对于其他任何绑定,请以上述字段参考为指南手动创建槽位,并参考你的绑定的 blendshape 文档以获取正确的形状名称。

结论

配置好的绑定在 AI 的情绪信号与角色面部之间形成闭环。继续查看 Emotion Taxonomy,了解服务器情绪标签如何解析为槽位中使用的规范标签;如果你需要从代码中读取或覆盖当前情绪状态,则可直接跳到 Scripting API。

最后更新于

这有帮助吗?