跳到主要内容

如何使用插件

本指南将引导您完成为MetaHuman角色设置Runtime MetaHuman Lip Sync的过程。

注意: Runtime MetaHuman Lip Sync同时支持MetaHuman自定义角色。该插件支持多种角色类型,包括:

  • 热门商业角色(Daz Genesis 8/9Reallusion CC3/CC4MixamoReadyPlayerMe等)
  • 具有基于FACS的混合变形的角色
  • 使用ARKit混合变形标准的模型
  • 具有Preston Blair音素集的角色
  • 3ds Max音素系统
  • 任何具有自定义面部表情变形目标的角色

有关设置自定义角色的详细说明,包括上述所有标准的视位映射参考,请参阅自定义角色设置指南

先决条件

开始之前,请确保:

  1. 您的项目中已启用MetaHuman插件(注意:从UE 5.6开始,此步骤不再需要,因为MetaHuman功能已直接集成到引擎中)
  2. 您至少下载了一个MetaHuman角色并在项目中可用
  3. 已安装Runtime MetaHuman Lip Sync插件

附加插件:

平台特定配置

Android / Meta Quest配置

如果您针对Android或Meta Quest平台,并遇到此插件的构建错误,您需要在项目设置中禁用x86_64 (x64) Android架构:

  1. 转到编辑 > 项目设置
  2. 导航至平台 > Android
  3. 平台 - Android下的构建部分,找到**支持x86_64 [即x64]**并确保其已禁用,如下所示

禁用x64 Android架构

这是因为该插件目前仅支持Android / Meta Quest平台的arm64-v8a和armeabi-v7a架构。

设置流程

步骤1:定位并修改面部动画蓝图

您需要修改一个将用于MetaHuman角色面部动画的动画蓝图。默认的MetaHuman面部动画蓝图位于:

Content/MetaHumans/Common/Face/Face_AnimBP

面部动画蓝图

您有以下几种实现唇形同步功能的方式:

直接打开默认的Face_AnimBP进行修改。所有使用该动画蓝图的MetaHuman角色都会受到影响。

注意: 此方法虽然便捷,但会影响所有使用默认动画蓝图的角色。

重要说明: Runtime MetaHuman Lip Sync混合可以在任何访问包含默认MetaHuman的Face_Archetype_Skeleton中面部骨骼姿势的Animation Blueprint资产中实现。您不仅限于上述选项——这些只是常见的实现方法。

步骤2:事件图表设置

打开您的面部动画蓝图并切换到Event Graph。您需要创建一个Runtime Viseme Generator来处理音频数据并生成视位。

  1. 如果不存在,添加Event Blueprint Begin Play节点
  2. 添加Create Runtime Viseme Generator节点并将其连接到Begin Play事件
  3. 将输出保存为变量(例如"VisemeGenerator")以供图表其他部分使用

创建Runtime Viseme Generator

步骤3:设置音频输入处理

您需要设置一种处理音频输入的方法。根据您的音频源,有几种不同的方式。

此方法在对着麦克风说话时实时执行唇形同步:

  1. 使用Runtime Audio Importer创建Capturable Sound Wave
  2. 在开始捕获音频前,绑定到OnPopulateAudioData委托
  3. 在绑定的函数中,从您的Runtime Viseme Generator调用ProcessAudioData
  4. 开始从麦克风捕获音频

可复制节点

音频捕获期间的唇形同步

步骤4:动画图表设置

设置事件图表后,切换到Anim Graph以将视位生成器连接到角色的动画:

唇形同步

  1. 定位包含MetaHuman面部的姿势(通常来自Use cached pose 'Body Pose'
  2. 添加Blend Runtime MetaHuman Lip Sync节点
  3. 将姿势连接到Blend Runtime MetaHuman Lip Sync节点的Source Pose
  4. 将您的RuntimeVisemeGenerator变量连接到Viseme Generator引脚
  5. Blend Runtime MetaHuman Lip Sync节点的输出连接到Output PoseResult引脚

混合Runtime MetaHuman唇形同步

当在音频中检测到唇形同步时,您的角色将相应地进行动态动画:

唇形同步

笑声动画

您还可以添加动态响应音频中检测到的笑声的动画:

  1. 添加Blend Runtime MetaHuman Laughter节点
  2. 将您的RuntimeVisemeGenerator变量连接到Viseme Generator引脚
  3. 如果您已经在使用唇形同步:
    • 将来自Blend Runtime MetaHuman Lip Sync节点的输出连接到Blend Runtime MetaHuman Laughter节点的Source Pose
    • Blend Runtime MetaHuman Laughter节点的输出连接到Output PoseResult引脚
  4. 如果仅使用笑声而不使用唇形同步:
    • 直接将您的源姿势连接到Blend Runtime MetaHuman Laughter节点的Source Pose
    • 将输出连接到Result引脚

混合Runtime MetaHuman笑声

当在音频中检测到笑声时,您的角色将相应地进行动态动画:

笑声

与身体动画结合

要在不覆盖现有身体动画的情况下应用唇形同步和笑声:

  1. 在您的身体动画和最终输出之间添加Layered blend per bone节点。确保Use Attached Parent为true。
  2. 配置层设置:
    • Layer Setup数组添加1项
    • 向该层的Branch Filters添加3项,使用以下Bone Name
      • FACIAL_C_FacialRoot
      • FACIAL_C_Neck2Root
      • FACIAL_C_Neck1Root
  3. 进行连接:
    • 现有动画(如BodyPose)→ Base Pose输入
    • 面部动画输出(来自唇形同步和/或笑声节点)→ Blend Poses 0输入
    • 分层混合节点→最终Result姿势

按骨骼分层混合

为什么有效: 分支过滤器隔离了面部动画骨骼,允许唇形同步和笑声仅与面部动作混合,同时保留原始身体动画。这匹配了MetaHuman面部骨骼结构,确保自然集成。

注意: 唇形同步和笑声功能设计为与您现有的动画设置非破坏性地工作。它们仅影响嘴部运动所需的特定面部骨骼,保持其他面部动画不变。这意味着您可以安全地将它们集成到动画链中的任何点——要么在其他面部动画之前(允许这些动画覆盖唇形同步/笑声),要么在它们之后(让唇形同步/笑声混合在现有动画之上)。这种灵活性使您可以将唇形同步和笑声与眨眼、眉毛运动、情感表达和其他面部动画结合使用而不会冲突。

配置

唇形同步配置

Blend Runtime MetaHuman Lip Sync节点在其属性面板中有配置选项:

属性默认值描述
插值速度25控制唇部动作在视位之间转换的速度。值越高,转换越快速突然。
重置时间0.2音频停止后唇形同步重置的持续时间(秒)。这有助于防止音频停止后唇形同步继续。

笑声配置

Blend Runtime MetaHuman Laughter节点有自己的配置选项:

属性默认值描述
插值速度25控制唇部动作在笑声动画之间转换的速度。值越高,转换越快速突然。
重置时间0.2音频停止后笑声重置的持续时间(秒)。这有助于防止音频停止后笑声继续。
最大笑声权重0.7缩放笑声动画的最大强度(0.0 - 1.0)。