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

排查唇形同步问题

诊断并修复 Convai Unreal Engine 插件中的唇形同步问题——没有口型移动、帧饥饿、错误的 blendshape 映射以及骨骼不匹配。

使用此页面识别并修复最常见的口型同步问题。每条条目都会说明你观察到的现象、原因以及需要更改的内容。

说话时嘴部没有动

症状: 角色在说话(音频在播放),但嘴部和面部没有动。

原因——缺少 Face Sync 组件:Convai Face Sync 组件未放置在 Actor 上,因此不会从 Convai 请求任何面部数据。

修复: 打开角色 Blueprint,添加一个 Convai Face Sync 组件,并将 LipSyncMode 设置为与该骨骼绑定匹配的模式(例如 MetaHuman Blendshapes 用于 MetaHuman)。编译并保存。

验证: 进入 Play 模式并确认 Convai Face Sync 该组件在运行时出现在 Actor 的组件列表中。


原因——AnimGraph 节点未连接:Convai Face Sync AnimGraph 节点已放置在 Animation Blueprint 中,但未接入当前有效的姿势链。

修复: 打开面部 Animation Blueprint。确认 Convai Face Sync 该节点的 Source Pose 引脚接收到前一个姿势,并且其 Output Pose 引脚连接到最终输出。重新编译 Animation Blueprint。

验证: 在 AnimGraph 中,节点在到输出的有效路径上不应有未连接的引脚。


原因——解析到了错误的 chatbot 组件: 该 Actor 有不止一个 Convai Chatbot 组件,而 AnimGraph 节点自动发现了错误的那个。

修复: 显式连接正确的 Convai Chatbot 组件引用到 Convai Chatbot Component 引脚上。 Convai Face Sync 节点。

验证: 在 PIE 中,当该特定 chatbot 组件在对话中处于激活状态时,角色的面部应该会动起来。

嘴巴在动,但动画的是错误的曲线

症状: 面部上的某些部分在动,但不是嘴巴——例如眼睛快速眨动,或激活了无关的形状。

原因——LipSyncMode 不匹配: 项目范围的 Lip Sync ModeAuto,并且 LipSyncMode 在该 Convai Face Sync 组件上的设置与 Skeletal Mesh 上的曲线名称不匹配。例如,该组件模式设置为 VisemeBased 但该网格拥有 MetaHuman CTRL 曲线,反之亦然。

修复: 打开角色 Blueprint,选择 Convai Face Sync 该组件,并将 LipSyncMode 更改为与骨骼绑定匹配的值。当项目范围的 Lip Sync ModeAuto:

骨骼绑定类型
正确的 LipSyncMode

MetaHuman

MetaHuman Blendshapes

CC5

MetaHuman Blendshapes

CC4(标准导出)

ARKit Blendshapes

CC4(扩展导出)

CC4 Extended Blendshapes

带有 OVR viseme 曲线的自定义骨骼绑定

基于 Viseme

项目范围 Lip Sync Mode 可在以下位置全局设置: Edit > Project Settings > Plugins > Convai > Advanced > Lip Sync Mode。具体的项目范围值,例如 Off, VisemeBased, BS_MHA,以及 BS_ARKit 会在连接设置期间覆盖组件值。使用项目范围的 Auto 值,当角色使用不同的骨骼绑定时,并在每个 Convai Face Sync 组件上设置特定于骨骼绑定的值。对于 CC4 Extended Blendshapes,请将项目范围设置保持为 Auto 并将该组件设置为 CC4 Extended Blendshapes.

验证: 在编辑器中重新打开 Skeletal Mesh,并检查 曲线 列表。确认曲线名称与所选模式生成的名称一致。

帧饥饿——嘴部开始动画后在说话中途冻结

症状: 口型同步开始正常,但面部在一次说话过程中途冻结,然后恢复或突然回到中立状态。

原因: AnimGraph 节点在新的网络帧到达之前已经消耗完所有缓冲帧。这是一个时序问题,在高延迟连接上通常更明显。

修复: 增加 StarvationBlendOutDuration 在 AnimGraph 节点上(例如设置为 1.2)以便面部逐渐淡出,而不是突然跳变。这样可以降低短暂帧饥饿间隙的可见性。

验证: 在受限网络下的 PIE 中,嘴部在间隙期间应平滑淡出,而不是停在最后一帧。


原因——插值已禁用:bEnableInterpolationfalse 在该 Convai Face Sync 组件时,该组件会重放离散帧而不进行平滑处理,这会让间隙更明显。

修复: 启用 bEnableInterpolation 在该 Convai Face Sync 角色 Blueprint 中的组件 详细信息 面板下的 Convai | LipSync.

验证: 在 PIE 中,帧与帧之间的过渡应更平滑。

自定义 blendshape 重映射没有输出

症状: 一个 BlendshapeMapping 条目已配置,但目标曲线没有变化。

原因——目标曲线名称不匹配:TargetNames 数组在 FConvaiBlendshapeParameters 条目与 Skeletal Mesh 上的精确曲线名称不匹配。

修复: 在编辑器中打开 Skeletal Mesh 资产,导航到 曲线 部分,并复制那里显示的精确曲线名称。将其粘贴到 TargetNames 条目中。

验证: 在映射中添加一个测试条目,进入 PIE,并确认目标曲线有响应。


原因——源名称不匹配:BlendshapeMapping 表中的键与 Convai 为所选 LipSyncMode.

修复: 通过检查该模式期望的曲线集合来确认源曲线名称:

  • VisemeBased:15 个 OVR viseme 名称(sil, PP, FF, TH, DD, kk, CH, SS, nn, RR, aa, E, ih, oh, ou)

  • BS_ARKit:61 个 ARKit blendshape 曲线名称(52 个标准 Apple ARKit + 9 个头部/眼睛旋转曲线)

  • BS_MHA:MetaHuman CTRL 曲线名称

使用精确的源名称作为映射键。

验证: 移除或临时清空该映射。如果曲线在 1:1 映射下会动起来,则源名称是正确的,问题出在 TargetNames.

面部在编辑器中会动,但在打包构建中不会动

症状: 口型同步在 PIE 中有效,但面部在烹制后的构建中没有动画。

原因: 曲线资产或 Animation Blueprint 资产可能未包含在烹制中。Skeletal Mesh 曲线必须被 Animation Blueprint 引用,或包含在资产列表中才能在烹制后保留。

修复: 确认面部 Animation Blueprint 被角色 Blueprint 或包含在烹制中的关卡引用。如果曲线被剥离,请将它们添加到资产的 Skeleton 并确保 Skeleton 资产位于已烹制的包中。

验证: 运行 Development 烹制并检查烹制日志中是否有关于角色 Skeleton 上被剥离曲线轨道的警告。

命令行覆盖(-LipSyncAnim* 标志)在 PIE 中设置后不会带到打包构建中,除非在启动时显式传入。请参见 Face Sync AnimGraph 节点参考 以查看支持的覆盖标志完整列表。

下一步

Face Sync 组件参考Face Sync AnimGraph 节点参考唇形同步和动画问题

最后更新于

这有帮助吗?