情感
情感系统如何工作、每个组件的作用,以及下一步该去哪里——为任何 Convai 角色添加面部情感的起点。
赋予 Convai 角色具备情绪响应的面孔
Emotion 系统会将 Convai AI 的内部情绪状态转换为实时面部动画——驱动 blendshapes、Animator 参数,或两者同时驱动。每当后端判断角色感到喜悦、愤怒、惊讶或任何其他状态时,Emotion 系统都会接收该信号,将其平滑为自然的变化曲线,并实时把结果写入角色的面部。最终效果是角色看起来具有情绪存在感,而不是面无表情。
工作原理
后端发送一个简短的情绪标签(例如 "快乐")以及一个 1–3 级别的强度。 分类法 将该标签解析为其规范形式("joy"),并将强度规范化为 0–1 分数,然后交给 分数累积器,它会应用指数平滑和可选的微表情爆发。 中性切换器 随后会定期将表情逐渐混回中性,以防止面部表情僵住。最后,平滑后的分数会通过可配置的 输出绑定.
先决条件
在将 Emotion 系统添加到角色之前,请确保:
你的角色网格具有面部 blendshapes,或者你的 Animator Controller 有你希望由情绪驱动的浮点参数。该管线即使没有这些也能运行,但在至少配置一个输出绑定之前,不会产生任何视觉输出。
各部分放在哪里
ConvaiEmotionController
在 NPC 的根 GameObject,与 Embodiment 组件一起
每个角色一个
ConvaiEmotionProfile
在你的任意 Assets/ 文件夹中,作为 ScriptableObject 资源
如有需要,可在多个 NPC 预制体之间共享
EmotionTaxonomyAsset
在你的任意 Assets/ 文件夹
可选——留空则使用内置的 Plutchik 集合
ConvaiCharacterEventRelay
场景中的任意 GameObject 上
自动解析 ConvaiCharacter 到同一个 GameObject;如有需要,可拖入其他角色
关键概念
ConvaiEmotionController
拥有单个 NPC 整个管线的 MonoBehaviour。每个角色添加一个。
ConvaiEmotionProfile
一个 ScriptableObject 资源,包含所有可调参数:平滑、微爆发、中性切换以及输出槽定义。
EmotionTaxonomyAsset
一个定义情绪词汇表的 ScriptableObject——规范标签、服务器别名和嘴部影响提示。内置默认值为 Plutchik 的八种基本情绪加中性。
输出绑定
BlendshapeEmotionBinding 是位于 AnimatorParameterEmotionBinding 将每个规范情绪标签映射到网格 blendshape 名称或 Animator 浮点参数。
EmotionReading
当前情绪状态的不可变快照:主导标签、主导分数、所有分数,以及用于 LipSync 的嘴部影响提示。可通过以下方式在每一帧获取: ConvaiEmotionController.Current.
微爆发
当新的情绪到来时应用的短暂过冲,让表情先有一个有力的起势,再稳定到持续水平。
中性切换
一个定时器,会周期性地将当前表情淡出到中性再回到原表情,防止角色在长时间发言时面部固定在单一姿态。
ConvaiCharacterEventRelay
一个对 Inspector 友好的组件,可将情绪变化回调暴露为 Unity Events——无需编写代码。
本节内容
快速入门
挂载 Emotion Controller,分配附带的配置文件,让你的 NPC 对对话产生情绪反应——无需自定义资源。
情绪配置文件
在一个可移植资源中配置平滑速度、微表情爆发、中性切换和输出绑定。
输出绑定
将平滑后的情绪分数映射到面部 blendshapes 和 Animator 浮点参数,并支持每个槽位的权重与 LipSync 控制。
情绪分类体系
了解内置的 Plutchik 词汇、服务器别名如何解析,以及如何编写自定义分类体系。
脚本 API
读取实时情绪状态、注入覆盖、锁定表情,并响应情绪事件——从 Inspector 中转到类型化的 C# 订阅。
使用示例
完整场景涵盖危险触发、锁定问候、困扰分支、分析日志记录以及 Editor 调试。
故障排除与诊断
针对最常见问题的逐步修复方法——从表情不动到 LipSync 冲突,再到正式构建中的坑点。
结论
Emotion 系统为 Convai 角色带来可信的情绪存在感——由服务器驱动、经过平滑处理,并且在常见情况下无需编写代码即可完全配置。先从快速开始入手,让角色实时产生反应,然后使用更深入的配置页面,为你的特定骨骼与场景调优行为。
最后更新于
这有帮助吗?