眼部动画辅助工具
除了口型同步外,Runtime MetaHuman Lip Sync 插件还包含两个可选的辅助工具,用于为 MetaHuman 眼部添加动画效果:
- Auto Blink:一个辅助工具,可为 MetaHuman 生成自然、随机的眨眼动作
- Eyes Aim:一个动画蓝图节点,可使 MetaHuman 的眼睛注视世界空间中的某个位置
这些功能完全独立于口型同步,可以单独使用、组合使用,或与口型同步节点配合使用。它们旨在作为轻量级的即插即用辅助工具,无需手动制作即可为眼部添加逼真的行为。
功能预览
如果您的面部动画管线已经包含眨眼和动态注视,您可以跳过此页面。这些辅助工具适用于您希望获得逼真的眼睛行为但无需自行制作的情况,例如,当您的动画序列不包含眨眼时,或者当您需要眼睛动态跟随移动目标(静态动画序列无法做到这一点)时。它们也可以叠加在现有面部动画之上,以添加缺失的部分,例如在仅动画化嘴部的序列上添加眨眼。
自动眨眼
自动眨眼辅助工具通过驱动 MetaHuman 面部控制骨骼的 CTRL_L_eye_blink 和 CTRL_R_eye_blink 曲线,产生随机、自然的眨眼效果。
工作原理
每一帧,您从面部动画蓝图的事件图表中调用 Update MetaHuman Auto Blink,并传入该帧的增量时间。该函数:
- 跟踪每个角色的状态(下次眨眼时间、当前睁开/闭合阶段等),以调用它的
AnimInstance为键 - 返回两个 0..1 范围内的浮点值,分别代表左眼和右眼当前的闭合程度
- 然后,您将这些值存储在蓝图变量中,并在动画图表中将其输入到控制骨骼节点
设置
两步: 在事件图表中添加眨眼调用,然后在动画图表中将值输入到控制骨骼节点。
1. 事件图表:每帧驱动眨眼值
在您的面部动画蓝图(例如 Face_AnimBP 或您复制/拷贝的版本,请参阅设置指南)中,打开事件图表并在 Event Blueprint Update Animation 中添加以下内容:
- 调用
Update MetaHuman Auto Blink - 将增量时间 X(来自事件)连接到Delta Seconds
- (可选)配置 Config 结构体。默认值看起来已经很自然
- 将左眼眨眼值和右眼眨眼值提升为蓝图变量(例如
LeftBlinkValue、RightBlinkValue)

2. 动画图表:将值输入到面部控制骨骼
在同一个动画蓝图的动画图表中:
- 在所有其他可能写入眨眼曲线的面部逻辑之后(例如在
Blend Runtime MetaHuman Lip Sync和任何自定义面部动画层之后)放置一个控制骨骼节点 - 在节点的细节面板中,将控制骨骼类设置为您的 MetaHuman 面部控制骨骼。路径通常为:
/All/Game/MetaHumans/Common/Face/Face_ControlBoard_CtrlRig- 您的项目可能根据 MetaHuman 的导入方式而有不同的路径。
- 在细节面板中,展开输入部分并为以下项启用使用引脚:
CTRL_L_eye_blinkCTRL_R_eye_blink
- 将您的
LeftBlinkValue变量连接到CTRL_L_eye_blink - 将您的
RightBlinkValue变量连接到CTRL_R_eye_blink

将控制骨骼节点放置在唇形同步混合节点(以及任何其他面部动画节点)之后,这样眨眼值就不会被其他逻辑覆盖。
配置
Update MetaHuman Auto Blink 节点接受一个可选的 Config 结构体。对于大多数角色,默认值看起来已经很自然,如果您想调整行为,请展开下方内容。
配置属性
时间
| 属性 | 默认值 | 描述 |
|---|---|---|
| 眨眼最小间隔时间 | 2.0 秒 | 眼睛完全睁开时,两次眨眼之间的最小间隔。 |
| 眨眼最大间隔时间 | 4.0 秒 | 两次眨眼之间的最大间隔。实际间隔在最小值和最大值之间随机化。 |
| 闭合保持最小时间 | 0.04 秒 | 眼睛保持完全闭合的最短时间。 |
| 闭合保持最大时间 | 0.08 秒 | 眼睛保持完全闭合的最长时间。 |
插值
| 属性 | 默认值 | 描述 |
|---|---|---|
| 闭合插值速度 | 35.0 | 闭眼时的速度。人类闭眼比睁眼快,因此此值有意高于睁眼速度。 |
| 睁开插值速度 | 18.0 | 睁眼时的速度。 |
| 闭合阈值 | 0.97 | 眨眼被认为“完全闭合”并开始保持阶段的值。 |
| 睁开阈值 | 0.02 | 眨眼被认为“完全睁开”并安排下一次眨眼的值。 |
杂项
| 属性 | 默认值 | 描述 |
|---|---|---|
| 独立眼睛 | false | 当为 true 时,左右眼独立眨眼,具有不同的时间。当为 false(默认)时,双眼完美同步眨眼。 |
bEnabled(函数引脚) | true | 当为 false 时,眼睛会逐渐睁开并暂停眨眼。适用于过场动画、睡眠、死亡等场景。 |
运行时控制
您也可以调用 Reset Auto Blink State 来显式清除给定 AnimInstance 的内部状态(例如,在角色重生或切换过场状态时)。
眼睛注视
眼睛注视辅助工具是一个动画蓝图节点(Runtime MetaHuman Eyes Aim),它使角色的眼睛追踪一个世界空间位置——例如,玩家摄像机、另一个演员或任何移动目标。它支持偏航/俯仰限制、平滑处理、当目标经过头部后方时的防翻转保护,以及可选的微扫视以增加真实感。
选择模式
该节点支持两种模式,通过节点细节面板中的模式下拉菜单选择:
| 模式 | 驱动内容 | 放置位置 |
|---|---|---|
| 曲线(默认) | 面部控制骨骼的眼睛注视曲线(CTRL_expressions_eyeLook*) | 在面部动画蓝图(例如 Face_AnimBP)中,在控制骨骼节点之前 |
| 骨骼 | 直接驱动 FACIAL_L_Eye / FACIAL_R_Eye 骨骼,绕过控制骨骼 | 在面部后处理动画蓝图(例如 Face_PostProcess_AnimBP)中,在 AnimNode_RigLogic 节点之后 |
曲线模式是推荐的默认模式。它能与其他基于曲线的面部系统(唇形同步、表情、ARKit 混合形状等)干净地组合,因为值是通过正常的控制骨骼评估组合的,而不是在骨骼变换上产生冲突。
在某些 MetaHuman 变体上(特别是较旧的骨骼,包括一些通过 Quixel Bridge 下载的),眼睛注视曲线实际上并不驱动眼睛。可见的症状是,当曲线模式节点激活时,眼睛向下看,瞳孔几乎隐藏,无论目标位置如何。
如果您看到这种情况,请切换到骨骼模式。骨骼模式直接旋转眼骨,因此无论控制骨骼如何连接,它都能在每个 MetaHuman 变体上工作。请参阅下方设置中的骨骼选项卡。
设置
- 曲线模式(默认)
- 骨骼模式(备用)
默认设置。该节点位于标准的面部动画蓝图中,并驱动面部控制骨骼的眼睛注视曲线。
两步: 在动画图表中添加节点,然后从事件图表中为其提供目标位置。
1. 动画图表:添加节点
在您的面部动画蓝图的动画图表中:
- 添加一个
Runtime MetaHuman Eyes Aim节点 - 在细节面板中将模式保持设置为曲线
- 将其放置在所有其他可能写入眼睛注视曲线的面部逻辑之后(唇形同步、自定义动画等),与自动眨眼控制骨骼节点的原理相同
- 将现有姿势连接到源姿势
- 将输出连接到链中的下一个节点(或
输出姿势) - 创建一个
Vector蓝图变量(例如TargetWorldLocation)并将其连接到节点的目标世界位置引脚。您将在下一步中从事件图表更新此变量。

2. 事件图表:输入目标位置
目标世界位置引脚期望一个世界空间的 FVector。一个常见的情况是让 MetaHuman 看着玩家摄像机。在 Event Blueprint Update Animation 中:
- 获取玩家摄像机管理器(玩家索引 0)
- 检查是否有效
- 如果有效,调用获取摄像机位置
- 将其存储在
TargetWorldLocation蓝图变量中

要追踪任意演员(NPC、物品、兴趣点),请改为每帧获取该演员的位置并存储到同一个变量中。对于固定的注视点,请在节点的细节面板中一次性设置目标世界位置或将其作为常量。
如果曲线模式方法对您的 MetaHuman 变体不起作用,请使用此设置(请参阅上面的警告)。在骨骼模式下,节点直接旋转眼骨,并且必须在控制骨骼完成评估之后运行,这意味着它属于面部后处理动画蓝图,而不是常规的面部动画蓝图。
三步: 定位面部后处理动画蓝图,在 RigLogic 之后添加节点,然后从该蓝图的事件图表中为其提供目标位置。
1. 定位面部后处理动画蓝图
- 打开您的 MetaHuman 的面部骨骼网格体资源(例如,在您的 MetaHuman 文件夹下的
Face) - 在资源的细节面板中,找到后处理动画蓝图字段
- 打开该资源,它通常被命名为类似
Face_PostProcess_AnimBP
2. 动画图表:在 RigLogic 之后添加节点
在面部后处理动画蓝图的动画图表中:
- 找到现有的
AnimNode_RigLogic节点(它将面部控制骨骼曲线转换为骨骼变换) - 在
AnimNode_RigLogic之后和Output Pose之前添加一个Runtime MetaHuman Eyes Aim节点 - 在节点的细节面板中,将模式设置为骨骼
- 将
AnimNode_RigLogic连接到眼睛注视节点的源姿势 - 将眼睛注视节点的输出连接到
Output Pose - 在此后处理动画蓝图中创建一个
Vector蓝图变量(例如TargetWorldLocation)并将其连接到节点的目标世界位置引脚

默认的骨骼引用(FACIAL_L_Eye 和 FACIAL_R_Eye)与标准的 MetaHuman 面部骨骼匹配。如果您的角色使用具有不同眼骨名称的自定义骨骼,请在节点细节面板的骨骼类别下覆盖它们。
3. 事件图表:输入目标位置
由于节点位于后处理动画蓝图中,目标位置逻辑也必须位于此蓝图的事件图表中,而不是在 Face_AnimBP 中。设置与曲线模式相同(获取摄像机位置、演员位置或使用常量),只是在 Face_PostProcess_AnimBP 内部执行。

任何不相关的逻辑(唇形同步、自动眨眼等)可以保留在常规的面部动画蓝图中。只有眼睛注视的目标位置计算需要移到这里。 面部控制骨骼每帧都会根据其曲线强制驱动眼骨。如果眼睛注视节点在常规的面部动画蓝图中运行(在控制骨骼之前),控制骨骼随后会覆盖骨骼旋转。后处理动画蓝图在控制骨骼产生最终骨骼变换之后运行,因此它是应用最终骨骼旋转以确保其“生效”的正确位置。为什么骨骼模式需要后处理动画蓝图?
配置
所有设置都在 Runtime MetaHuman Eyes Aim 节点的细节面板中公开。
瞄准与限制
平滑与扫视
骨骼(仅骨骼模式)
| 属性 | 默认值 | 描述 |
|---|---|---|
| 左眼骨骼 | FACIAL_L_Eye | 左眼骨骼名称。与标准的 MetaHuman 面部骨骼匹配。 |
| 右眼骨骼 | FACIAL_R_Eye | 右眼骨骼名称。与标准的 MetaHuman 面部骨骼匹配。 |
校准(仅曲线模式)
这些值定义了头部空间角度如何映射到 MetaHuman 面部控制骨骼的眼睛注视曲线值。默认值已针对标准 MetaHuman 面部控制骨骼进行调整,很少需要更改。
| 属性 | 默认值 | 描述 |
|---|---|---|
| 每单位曲线偏航角度 | 30° | 映射到偏航注视曲线值为 1.0 的角度。 |
| 每单位曲线俯仰角度 | 25° | 映射到俯仰注视曲线值为 1.0 的角度。 |
与唇形同步和其他动画结合
这两个辅助工具旨在与插件的唇形同步节点以及您已有的任何自定义面部动画共存。一般规则:将眼睛注视和控制骨骼(自动眨眼)节点放置在唇形同步和任何自定义面部动画之后,这样它们的值就不会被下游覆盖。
查看详细执行流程图(曲线模式 vs. 骨骼模式)
根据您的 MetaHuman 骨骼是使用推荐的曲线模式还是备用的骨骼模式,执行逻辑的放置位置将会改变。展开下面的图表以查看两种管线的确切执行顺序:
自动眨眼和口型同步在两种模式下仍然存在于常规的 Face AnimBP 中。
关于与身体动画分层的详细信息,请参阅与现有动画结合。
注意事项与限制
这些辅助工具是 MetaHuman 专属的。它们依赖于标准的 MetaHuman 面部 Control Rig 曲线名称(CTRL_L_eye_blink、CTRL_R_eye_blink、CTRL_expressions_eyeLook*)以及标准的眼部骨骼(FACIAL_L_Eye、FACIAL_R_Eye)。它们不适用于自定义的非 MetaHuman 角色。
需要帮助?
对于定制开发需求,请联系 [email protected]。