对话动画如何工作
了解 Dialogue Animation 如何选择剪辑、驱动四层 animator 栈,并利用情绪和对话状态为 AI 角色制作动画。
最后更新于
这有帮助吗?
了解 Dialogue Animation 如何选择剪辑、驱动四层 animator 栈,并利用情绪和对话状态为 AI 角色制作动画。
对话动画模块以对话状态和检测到的情绪作为输入,驱动 AI 角色的身体和头部手势动画。它不再为每个动画片段硬编码动画器状态,而是使用一个 AnimatorOverrideController 在运行时从一个池化库中注入动画片段——随着对话推进动态切换候选片段。该模块完全在 Unity 内运行。没有任何动画数据会发送到 Convai。
每一帧,模块都会读取两个信号:当前的 对话状态 (待机、倾听、思考、说话、 प्रतिक्रिया)以及当前的 情绪读数 ,来自 Emotion 模块。它使用这些信号从一个 DialogueAnimationLibrary 中选择并交叉淡入淡出动画片段,并在四层动画器栈中进行播放。
这四层是可叠加且带遮罩的:基础待机会持续播放,待机叠加会增加变化,而当角色开口说话时,两个对话层会淡入。对话层动画片段通过 DialogueTalkBodyCoverage 进行路由——动画片段可以仅作用于头部、仅作用于身体,或同时作用于两者。
该模块由四种 ScriptableObject 类型驱动:
DialogueAnimationLibrary
待机和对话动画片段池,每个片段都标记了情绪亲和性和角色性别
DialogueAnimationRuntimeConfig
时序、混合时长、层权重以及选择参数
DialogueAnimatorContract
将层索引和状态名称映射到你的 Animator Controller
ConvaiDialogueAnimationProfile
将上面的三个资源打包成单个角色预设
SDK 附带三个打包配置文件: 均衡, 富表现力,和 含蓄。它们无需自定义制作即可覆盖大多数角色。
按照快速开始,在你的第一个角色上运行该模块,然后阅读动画库与配置文件,以了解动画片段池、时序以及完整字段参考。
最后更新于
这有帮助吗?
这有帮助吗?