跳到主要内容

眼部动画辅助工具

除了口型同步之外,Runtime MetaHuman Lip Sync 插件还包含两个可选的辅助工具,用于为 MetaHuman 眼睛制作动画:

  • 自动眨眼:一个辅助工具,可在 MetaHuman 上生成自然、随机的眨眼动作
  • 视线瞄准:一个动画蓝图节点,使 MetaHuman 的眼睛注视世界空间中的某个位置

这些功能完全独立于口型同步,可以单独使用、组合使用,或与口型同步节点配合使用。它们旨在作为轻量级、即插即用的辅助工具,用于添加逼真的眼部行为,而无需手动制作。

功能预览

自动眨眼:自动眼睛眨动
眼睛注视:追踪玩家摄像机
眼睛瞄准:跟随移动的目标演员

视频演示

两个辅助工具的完整演练,包括旧版骨骼绑定的变通方法。

何时使用这些辅助工具

如果你的面部动画流程已经包含眨眼和动态注视,你可以跳过本页。这些辅助工具适用于那些你希望获得逼真眼部行为但不想自己手动制作的情况,例如,当你的动画序列不包含眨眼时,或者当你需要眼睛动态跟随移动目标时(这是静态动画序列无法做到的)。它们也可以叠加在现有面部动画之上,以补充缺失的部分,例如在仅动画嘴部的序列上添加眨眼。

自动眨眼辅助工具通过驱动 MetaHuman 面部控制绑定的 CTRL_L_eye_blinkCTRL_R_eye_blink 曲线,生成随机且自然的眨眼效果。

工作原理

每一帧,你从你的面部动画蓝图的事件图表中调用 Update MetaHuman Auto Blink,并传入该帧的增量时间。该函数:

  1. 按调用方AnimInstance为键,跟踪每个角色的状态(下次眨眼时间、当前睁开/闭合阶段等)
  2. 返回两个0..1范围内的浮点值,一个用于左眼,一个用于右眼,表示每只眼睛当前闭合的程度
  3. 然后,您将这些值存储在蓝图变量中,并将它们输入到动画图中的控制绑定节点中

设置

两个步骤: 首先在事件图表(Event Graph)中添加眨眼调用,然后在动画图表(Anim Graph)中将值输入到控制绑定(Control Rig)节点中。

在你的面部动画蓝图(例如 Face_AnimBP 或你复制/拷贝的版本,参见设置指南)中,打开事件图表,并将以下内容添加到事件蓝图更新动画中:

  1. 调用 Update MetaHuman Auto Blink
  2. Delta Time X(来自事件)连接到 Delta Seconds
  3. (可选)配置 Config 结构体。默认值看起来已经很自然
  4. Left Blink ValueRight Blink Value 提升为蓝图变量(例如 LeftBlinkValueRightBlinkValue

Auto Blink Event Graph setup

在同一个动画蓝图的动画图表中:

  1. 放置一个Control Rig节点来驱动眨眼曲线。它的具体位置取决于你是否将自动眨眼与其他面部动画(口型同步、自定义序列等)结合使用:
    • 无其他面部动画: 将控制绑定节点直接放在主链中,位于输出姿势之前。
    • 与口型同步和/或其他面部动画结合: 将此控制绑定节点连接到按骨骼分层混合节点中,而不是直接放在链中,请参阅下面的提示。
  2. 在节点的细节面板中,将控制绑定类(在UE 5.8+中为控制绑定资产引用)设置为你的MetaHuman面部控制绑定。路径通常为:
    • /All/Game/MetaHumans/Common/Face/Face_ControlBoard_CtrlRig
    • 您的项目路径可能因 MetaHuman 的导入方式而有所不同。
  3. 细节面板中,展开输入部分,并为以下项启用使用引脚
    • CTRL_L_eye_blink
    • CTRL_R_eye_blink
  4. 将你的 LeftBlinkValue 变量连接到 CTRL_L_eye_blink
  5. 将你的 RightBlinkValue 变量连接到 CTRL_R_eye_blink

Auto Blink Anim Graph setup

放置位置很重要

如果你不与其他面部动画结合使用,请将Control Rig节点放在唇形同步混合节点(以及任何其他面部动画节点)之后的链路中,这样眨眼值就不会被覆盖。如果你确实要与唇形同步或其他面部动画结合使用,请遵循与现有动画结合指南,并将此Control Rig节点连接到Layered blend per bone节点的基础姿势输入上,分层混合节点能让两者同时生效,而不是简单地让一方覆盖另一方。

配置

Update MetaHuman Auto Blink 节点接受一个可选的 Config 结构体。默认值对大多数角色来说已经很自然,如果你想调整行为,请展开下方内容。

配置属性

时间安排

属性默认值描述
眨眼最小间隔时间2.0 秒眼睛完全睁开时,两次眨眼之间的最小间隔时间。
眨眼最大间隔时间4.0 秒两次眨眼之间的最大间隔时间。实际间隔时间在最小值和最大值之间随机确定。
闭眼最短保持时间0.04 秒眼睛完全闭合的最短持续时间。
闭眼最长保持时间0.08 秒眼睛完全闭合的最长持续时间。

插值

属性默认值描述
闭眼插值速度35.0闭眼时的速度。人类闭眼比睁眼快,因此该值有意高于睁眼速度。
睁眼插值速度18.0睁眼时的速度。
闭合阈值0.97眨眼被视为“完全闭合”并开始保持阶段时的数值。
睁开阈值0.02眨眼被视为“完全睁开”并安排下一次眨眼时的数值。

杂项

属性默认值描述
独立眨眼falsetrue 时,左右眼以独立的时间间隔分别眨眼。当 false(默认值)时,双眼完全同步眨眼。
bEnabled(函数引脚)truefalse 时,眼睛会缓缓睁开并暂停眨眼。适用于过场动画、睡眠、死亡等场景。

运行时控制

你也可以调用 Reset Auto Blink State 来显式清除指定 AnimInstance 的内部状态(例如,在角色重生或切换过场状态时)。

眼睛瞄准

“眼睛瞄准”辅助器是一个动画蓝图节点Runtime MetaHuman Eyes Aim),它能让角色的眼睛追踪世界空间中的某个位置,例如玩家摄像机、另一个角色或任何移动目标。它支持偏航/俯仰角限制、平滑处理、当目标经过头部后方时的防翻转保护,以及可选的微扫视以增加真实感。

选择模式

该节点支持两种模式,可通过节点“详细信息”面板中的模式下拉菜单进行选择:

Mode它驱动什么放置位置
曲线(默认)面部控制绑定的眼部注视曲线(CTRL_expressions_eyeLook*面部动画蓝图(例如 Face_AnimBP)中,位于控制绑定节点之前
骨骼直接驱动 FACIAL_L_Eye / FACIAL_R_Eye 骨骼,绕过控制绑定面部后期处理动画蓝图(例如 Face_PostProcess_AnimBP)中,位于 AnimNode_RigLogic 节点之后

曲线模式是推荐的默认模式。它能与其他基于曲线的面部系统(口型同步、表情、ARKit 混合变形等)干净地组合,因为数值通过常规控制骨骼求值进行合并,而不是争夺骨骼变换。

当曲线模式不起作用时,请使用骨骼模式。

在某些MetaHuman变体上(尤其是较旧的绑定,包括一些通过Quixel Bridge下载的),眼部注视曲线实际上并不会驱动眼睛。可见的症状是,当Curves模式节点激活时,眼睛会向下看,瞳孔几乎被隐藏,无论目标位置在哪里。

如果你看到这个,请切换到 骨骼模式。骨骼模式直接旋转眼部骨骼,因此无论控制绑定如何连接,它都能适用于所有 MetaHuman 变体。请参阅下方 设置 中的 骨骼 选项卡。

设置

默认设置。该节点位于标准的“面部动画蓝图”中,驱动面部“控制绑定”的视线曲线。

两个步骤: 将节点添加到你的动画图表中,然后从事件图表中为其提供目标位置。

1. 动画图:添加节点

在您的面部动画蓝图的动画图表中:

  1. 添加一个 Runtime MetaHuman Eyes Aim 节点
  2. 在细节面板中将 Mode 保持设置为 Curves
  3. 将其放置在所有其他可能写入眼部注视曲线的面部逻辑(唇形同步、自定义动画等)之后,原理与 Auto Blink Control Rig 节点相同
  4. 将现有姿势连接到 Source Pose
  5. 将输出连接到链中的下一个节点(或 Output Pose
  6. 创建一个 Vector 蓝图变量(例如 TargetWorldLocation)并将其连接到节点的 Target World Location 引脚。你将在下一步中从事件图表更新此变量。

Eyes Aim Anim Graph setup

2. 事件图表:输入目标位置

目标世界位置引脚期望一个世界空间中的 FVector。一个常见的情况是让 MetaHuman 看向玩家摄像机。在事件蓝图更新动画中:

  1. 获取玩家摄像机管理器(玩家索引 0)
  2. 检查是否有效
  3. 如果有效,调用获取摄像机位置
  4. 将其存储在TargetWorldLocation蓝图变量中

Eyes Aim, tracking the camera

若要改为追踪任意Actor(NPC、物品、兴趣点),请每帧获取该Actor的位置,并将其存储在同一变量中。对于固定的注视点,可在节点的Details面板中一次性设置Target World Location,或将其设为常量。

配置

所有设置都暴露在Runtime MetaHuman Eyes Aim节点的细节面板中。

瞄准与钳制

目标

属性默认值描述
Mode曲线选择眼睛的驱动方式。参见选择模式
目标世界位置(0,0,0)眼睛注视的世界空间点。默认作为引脚公开。
bEnabledtrue当为false时,眼睛会缓动回正前方并忽略目标。默认作为引脚公开。

钳制

属性默认值描述
最大偏航角(度)35°头部正前方方向的最大水平(偏航)偏转角度。限制范围为0到80。
最大俯仰角(度)25°头部正前方方向的最大垂直(俯仰)偏转角度。限制范围为0到80。
防止向后翻转true防止目标经过头部后方时眼睛发生翻转。
平滑处理与眼跳

平滑处理

属性默认值描述
插值速度12.0眼部运动的平滑速度。数值越高,动作越干脆;数值越低,动作越迟缓。

眼跳

微扫视是真实眼睛持续进行的微小、随机视线移动。加入这些动作可以避免完全平滑追踪所带来的“死眼”效果。

属性默认值描述
启用微扫视true切换微扫视的开/关。
扫视偏航幅度(度)1.5°每次扫视的最大水平抖动。较小值(1–2°)感觉自然;较大值看起来抽搐。
扫视俯仰幅度(度)1.0°每次扫视的最大垂直抖动。通常略小于偏航幅度。
最小扫视间隔0.6 秒扫视之间的最短时间。
最大扫视间隔2.5 秒扫视之间的最长时间。较大值感觉更平静,较小值感觉更不安。
骨骼(仅骨骼模式)
属性默认值描述
左眼骨骼FACIAL_L_Eye左眼骨骼名称。与标准 MetaHuman 面部骨骼相匹配。
右眼骨骼FACIAL_R_Eye右眼骨骼名称。与标准 MetaHuman 面部骨骼相匹配。
校准(仅限曲线模式)

这些值定义了头部空间角度如何映射到MetaHuman面部CR的眼部注视曲线值。默认值已针对标准MetaHuman面部CR进行了调校,通常无需更改。

属性默认值描述
偏航角每单位曲线度数30°映射到偏航视角曲线值为1.0时的角度。
俯仰角每单位曲线度数25°映射到俯仰视角曲线值为1.0时的角度。

结合口型同步与其他动画

这两个辅助工具旨在与插件的口型同步节点以及您已有的任何自定义面部动画共存。

  • 眼睛注视应放置在唇形同步及同一链路中任何自定义面部动画之后,这样其眼球注视值就不会被下游覆盖。请参阅上文选择模式设置
  • 自动眨眼使用按骨骼分层混合节点而非简单的线性放置,有关将Control Rig节点接入其基础姿势输入的接线方法,请参阅上文放置很重要提示。
查看详细执行流程图(曲线模式与骨骼模式对比)

根据您的 MetaHuman 绑定使用的是推荐的 Curves Mode(曲线模式)还是备用的 Bones Mode(骨骼模式),执行逻辑的放置位置会有所不同。展开下方图表,查看两种管线的确切执行顺序:

自动眨眼和口型同步在两种模式下仍然位于常规的面部动画蓝图中。

关于与身体动画分层的详细信息,请参阅与现有动画结合

备注与限制

这些辅助工具是 MetaHuman 专属的。它们依赖于标准的 MetaHuman 面部 Control Rig 曲线名称(CTRL_L_eye_blinkCTRL_R_eye_blinkCTRL_expressions_eyeLook*)以及标准的眼部骨骼(FACIAL_L_EyeFACIAL_R_Eye)。它们不适用于自定义的非 MetaHuman 角色。

需要帮助吗?

Join our Discord
online · support

如需定制开发请求,请联系 [email protected]