情绪配置文件
角色情绪配置文件上的每个设置,涵盖静态情绪、漂移、感染、混合,以及让面部保持生动的微表情生命周期。
ConvaiEmotionProfile 是 Emotion 模块的创作资源。它控制表情过渡的速度、角色在服务器信号间是否停留在某种心境上、同时可显示多少种情绪,以及用于腮红或泪水等效果的可选着色器输出。面部表情本身不需要在此资源上为每个骨架单独制作——该配置文件的表情配方会自动与角色的骨架解析匹配。所有字段默认都采用适合对话 NPC 表情的值;请从某个角色类型预设开始,再据此调整。
创建配置文件资源
在 Project 窗口中,右键单击你的 Assets/ 文件夹内并选择:
创建 → Convai → Embodiment → 情绪配置文件
一个名为 ConvaiEmotionProfile 的资源会出现。将其重命名为更具描述性的名称(例如, NPC_Guard_EmotionProfile),并将其分配给角色的 Profile 字段,位于角色的 ConvaiEmotionController 组件上。
角色类型预设
ConvaiEmotionProfile.CreatePreset(CharacterDemeanor demeanor, EmotionTaxonomyAsset taxonomy) 通过四种起始气质之一构建完整配置文件。Inspector 中新的配置文件上的 角色类型 行只需点击一次即可写入同样的表。
CharacterDemeanor
静止于
解读为
内敛
(无)
守卫或主持人——尽可能少地展露情绪。
沉稳
信任 于 0.45
接待员或文员——礼貌、克制。
温暖
喜悦 于 0.55
默认的角色类型——明显平易近人。
活力充沛
喜悦 于 0.6
主人或导游——坦率而开朗。
CharacterDemeanor 是 Gaze、Body Animation 和 Body Language 共享的同一套人格词汇。当场景需要一个能在角色所使用的每个模块中都携带一致气质的资源时,把各模块的配置文件打包成一个资源——见 具身化预设.
应用角色类型不会影响情绪词汇、表情配方或材质输出绑定——这些都会保持原样。应用后若更改该类型所拥有的某个值,不会清除类型标签;Inspector 会显示 Custom ,并提供重新应用该类型的选项。
情绪词汇
分类体系
(无——内置 Plutchik 集)
可选 EmotionTaxonomyAsset 它定义了该角色可识别哪些情绪标签,以及服务器标签如何解析为标准名称。留空则使用内置的九情绪集合。
参见 情绪分类体系 了解内置集合、别名解析和自定义分类体系的创建。
响应速度与微爆发
来自 Convai 的情绪分值不会立即应用。累加器会逐帧平滑处理,使表情自然过渡而不是在数值间骤然跳变,并且在新情绪到来时可施加短暂的过冲。
lerpSpeed
0.1 – 20
5
分值朝目标上升的速度。数值越高感觉越利落;越低则越舒缓。
decaySpeed
0.1 – 20
2
目标移除后,分值回落到静止值的速度。
intensityOffset
-0.25 – 0.25
0
在进入累加器之前添加到每个归一化强度值上的固定偏置。
prosodyCoupling
0 – 1
0
角色说话时,表情强度会微妙地跟随实时语音能量包络——语气强调时更明亮,停顿时更柔和。 0 会禁用该效果;当 1 时,实际强度增益范围为 [0.85, 1.15]。仅在说话时适用。
microBurstEnabled
—
是
新情绪在稳定到其稳态分值之前,是否会短暂过冲。
microBurstDuration
0.05 – 1.5 秒
0.25 秒
过冲持续多长时间,然后分值才衰减到其持续值。
microBurstOvershoot
1.0 – 3.0×
1.4×
爆发峰值处的乘数。
microBurstThreshold
0 – 1
0.15
触发爆发所需的最小分值变化。较小的波动不会触发。
静止心境(人格基线)
默认情况下,角色的面部会在服务器情绪之间回归到真正的中性。这些字段可选地为其提供一个静止心境,使其转而朝该心境收敛。
baselineEmotionLabel
标准分类标签
(空——无基线)
静止心境的标准标签(例如 喜悦)。空白或 neutral 表示没有基线。
baselineIntensity
0 – 1
0
心境的静止强度。 0 会完全禁用静止心境。
基线强度会直接驱动微笑 blendshape,因此请凭目测校准: 0.2 可测但几乎不可见, 0.45–0.6 看起来友善,而高于 0.7 则开始像固定的咧嘴笑。 ConvaiEmotionController.CurrentMoodLabel/CurrentMoodScore 会报告解析后的静止心境;激活的基线永远不会作为角色的主导(瞬态)情绪出现。 ConvaiEmotionController 还公开一个 该角色静止于 组件本身上的按角色覆写项,以及 SetMood/ClearMood 可在运行时更改静止心境——见 情绪脚本 API.
按情绪的覆写
表现力
每个标签增益 0 – 2
(空)
EmotionExpressivenessEntry 列表。对进入的服务器强度在平滑之前按标签应用分值增益——例如 喜悦 增益 > 1 可让角色更容易微笑。未列出的标签默认增益为 1。绝不会应用到静止基线。
emotionDynamics
每个标签攻击/衰减 0.1 – 20
(空)
EmotionDynamicsEntry 列表。对单个标签覆写 lerpSpeed/decaySpeed ——例如会迅速触发的愤怒,以及会缓慢渗入并持续的悲伤。未列出的标签使用配置文件的全局速度。
心境漂移
一个可选的、完全自动的通道:持续的对话情绪会自行逐渐给静止心境染色,因此心境像是由对话自然“挣得”的,而不仅仅是通过代码设定。
moodDriftEnabled
—
否
静止心境是否跟随对话。关闭表示漂移通道永不推进。
moodDriftRate
0.001 – 0.5
0.02
当某个主导瞬态维持它时,漂移强度逼近目标的指数速率/秒。
moodRecoveryRate
0.001 – 1
0.05
漂移衰减回 0 的指数速率/秒,前提是维持它的瞬态消退或更改了标签。
moodDriftMaxIntensity
0 – 1
0.25
漂移强度的硬上限,无论维持它的瞬态持续多强或多久。
漂移不会通过 CurrentResolvedEmotion/DominantLabel出现。它会贡献到 CurrentMoodLabel/CurrentMoodScore ,以及人格基线和任何运行时 SetMood 覆写;平局时优先明确锚点而不是漂移。会话重置总会清除漂移。
情绪传染
一个可选的低强度、带上限的面部回响,反映附近另一位 Convai 角色强烈的主导情绪。
contagionEnabled
—
否
此角色是否会接收附近情绪。每个具有 ConvaiEmotionController 的角色都可被见证,与此设置无关;只有接收角色自身的设置决定其是否会产生反应。
contagionStrength
0 – 1
0.3
所见情绪会转移过来的程度,先不考虑距离衰减和强度上限。
contagionRadius
0.5 – 20 米
4 米
其他角色情绪可被见证的最大距离。在此半径内线性衰减至 0 。
contagionMaxIntensity
0 – 1
0.2
回响强度的硬上限。
回响只会折入渲染后的面部。它永远不会通过 CurrentResolvedEmotion/DominantLabel 或 CurrentMoodLabel/CurrentMoodScore出现,并且会在会话重置时清除。
情绪混合
关闭混合时,瞬态(由服务器驱动)的状态是赢家通吃:一次只有一种非中性情绪。开启混合时,角色可以同时表达一种主要情绪以及相关的分类体系补充项,并带有滞后性,因此嘈杂或快速交替的服务器标签不会让脸部闪烁。
enableEmotionBlending
—
是
是否可同时显示多种情绪。
emotionSwitchDwell
0 – 2 秒
0.35 秒
当前主导情绪在可被较弱的新标签取代前受到保护的最短时间。
emotionSwitchMargin
0 – 1
0.15
如果新标签的分值至少比当前主导情绪高出这个差值,则可绕过驻留时间。
complementBlendScale
0 – 1
0.35
共现的分类体系补充项相对于主情绪分值的权重。
maxSimultaneousEmotions
1 – 4
2
瞬态情绪同时可非零的数量上限,包括主情绪和补充项。
补充项按分类体系上的每个标签单独编写(EmotionTaxonomyEntry.Complements);内置分类体系将 喜悦 和 信任.
微表情生命力
即使有平滑和静止心境,完全静止的表情也会显得僵住。这个可选的低振幅层会增加闲置时的眉/脸颊/眼部漂移,以及在说话强调时的抬眉强调,让脸部保留一丝动感。
microExpressionsEnabled
—
是
该层是否运行。关闭表示 director 及其 compositor 提交永远不会创建。
microExpressionAmplitude
0 – 1
0.15
闲置漂移振幅。
speechAccentStrength
0 – 1
0.3
由上升的语音能量触发的抬眉强调强度。
microExpressionStillness
0 – 1
0.5
对闲置漂移的全局阻尼; 0 移除漂移, 1 使用完整的已编写振幅。
listeningReactionStrength
0 – 1
0
当玩家说话时,持续的专注眉/眯眼上扬。 0 会禁用它。需要 Conversation Flow 模块。
thinkingReactionStrength
0 – 1
0
角色回复前停顿期间持续的专注神情。 0 会禁用它。需要 Conversation Flow 模块。
reactingAccentStrength
0 – 1
0
进入 反应中 对话状态时的一次性挑眉闪现。 0 会禁用它。
interruptedFlinchStrength
0 – 1
0
进入 被打断 对话状态时的一次性挑眉闪现。 0 会禁用它。
闲置漂移对每个角色都是确定性的,并会受当前主导情绪或(若更强)当前静止心境的偏置影响。
将任意四个对话反应强度中的任一项提高到 0 以上时,如果角色没有 Conversation Flow 控制器,Convai 会请求自动添加一个——见 当需要时会自动添加 Conversation Flow.
表情配方与输出
expressionRecipes
(空——内置库)
EmotionExpressionRecipe 列表。从语义上命名应当移动的内容,而不是按 blendshape 名称命名,因此一个配置文件可驱动任何受支持的骨架。空列表会使用 Convai 面向生产安全的默认值,覆盖所有九种内置情绪。
materialBinding
(空)
一个 MaterialPropertyEmotionBinding 用于腮红、泪水或汗光等着色器效果。为空则不驱动任何着色器属性。
下一步
情绪输出绑定情绪分类体系最后更新于
这有帮助吗?