Visemator 插件使用文档

Visemator 插件使用文档

插件概述

Visemator 插件是一个强大的面部动画解决方案,专为 Unreal Engine 开发的数字人(MetaHumans)和其他自定义数字人(非 MetaHumans)面部同步而设计。它通过集成人工智能模型自动生成符合 ARKit 标准的 52 个 BlendShapes (BS),并利用 LiveLink 实现实时面部动画。无论是基于 MetaHumans 还是自定义模型,Visemator 都能高效地处理音频和面部动画的同步。

主要功能

  • AI 驱动的唇形生成:基于输入的音频文件(如 .wav.ogg),自动生成符合 ARKit 标准的 52 个 BlendShapes。

  • 自动与 LiveLink 集成:自动为 MetaHumans 角色驱动实时面部动画,无需额外配置。

  • 自定义角色支持:非 MetaHumans 角色也可以通过少量配置驱动面部动画。

  • 高效的音频处理:支持音频文件和 USoundWave 资源,音频播放与唇形生成并行处理。

插件安装与配置

安装插件

  1. 下载并解压 Visemator 插件。

  2. 将插件文件夹复制到你的 Unreal 项目目录下的 Plugins 文件夹中。

  3. 启动 Unreal Engine 编辑器,打开你的项目。

  4. 在 Unreal 编辑器中,进入 Edit -> Plugins,找到 Visemator 插件并启用。

  5. 重启 Unreal 编辑器以使插件生效。

配置 MetaHumans 角色

Visemator 插件会自动与 MetaHumans 角色进行集成,无需额外配置。只需确保你的项目中已经添加了 MetaHumans 角色,Visemator 将自动识别并绑定 LiveLink。

配置非 MetaHumans 角色

对于非 MetaHumans 角色,你需要做一些简单的配置:

  1. 确保你的自定义角色拥有符合 ARKit 标准的 52 个 BlendShapes(或者自定义相应的 Morph Targets)。

  2. UVisematorComponent 中,调用 AssignVisemesToMorphTargets 函数,将生成的唇形数据应用到你的角色模型的对应 Morph Targets 上。

主要功能和使用方法

1. 播放音频并生成唇形动画

Visemator 插件支持从音频文件或 USoundWave 资产中生成唇形动画,并自动驱动角色的面部同步。

从文件生成唇形动画

// 示例:播放音频文件并生成唇形动画
UVisematorComponent* VisematorComponent = ...; // 获取 Visemator 组件
FString AudioFilePath = "C:/path/to/audio/file.wav";
​
// 播放音频并触发唇形生成
VisematorComponent->PlayAudioFile(AudioFilePath);

从 SoundWave 资产生成唇形动画

// 示例:播放 USoundWave 资产并生成唇形动画
UVisematorComponent* VisematorComponent = ...; // 获取 Visemator 组件
USoundWave* SoundWaveAsset = ...; // 获取 SoundWave 资源
​
// 播放 SoundWave 资产并触发唇形生成
VisematorComponent->PlayAudioAsset(SoundWaveAsset);

2. 获取和应用生成的唇形

获取最新的唇形数据

// 获取最新的唇形数据
TArray<float> Visemes = VisematorComponent->GetVisemes();

将唇形数据应用到角色的 Morph Targets

// 获取角色的 SkeletalMesh 组件
USkeletalMeshComponent* SkeletalMeshComponent = ...; 
​
// 获取角色的 Morph Targets 名称列表
TArray<FString> MorphTargetNames = { "eyeBlinkLeft", "eyeLookDownLeft", "eyeLookInLeft", ... };
​
// 将唇形数据应用到角色
VisematorComponent->AssignVisemesToMorphTargets(SkeletalMeshComponent, MorphTargetNames);

3. 控制音频播放和唇形生成

  • 开始播放音频并生成唇形

    • 使用 PlayAudioFilePlayAudioAsset 开始播放音频并触发唇形生成。

  • 暂停或停止音频播放

    • 使用 ResetPlayback 函数可以停止当前音频播放并重置播放状态。

  • 检测是否正在播放音频

    • IsTalking 可以检查当前是否有音频正在播放以及唇形生成是否正在进行。

4. 自动绑定 ARKit 面部追踪

如果 bAutoBindARKitFace 设置为 true,插件会自动为 MetaHumans 角色绑定 ARKit 面部追踪,以便实时驱动面部动画。如果你使用的是自定义角色,可能需要手动配置相应的 LiveLink Source 来实现自动绑定。

// 自动绑定 ARKit 面部追踪
VisematorComponent->bAutoBindARKitFace = true;

事件与委托

事件

  • OnVisemesReady:当生成的唇形数据准备好后,该事件将被触发。你可以在蓝图或 C++ 中绑定此事件来执行后续操作。

  • OnPlayoutTriggered:当音频播放开始时,该事件将被触发。

委托

  • FVisematorVisemesReadyDelegate:当生成的唇形数据准备好时,该委托被触发。

  • FVisematorPlayoutTriggeredDelegate:当音频播放开始时,该委托被触发。

高级功能

配置音频静音

你可以通过 bMute 参数来控制音频播放时是否静音。如果设置为 true,则音频将不会发出声音,适用于只需要唇形数据的场景。

VisematorComponent->bMute = true;

BlendShapes (BS) 说明

1. BlendShapes(BS)概述

Visemator 插件支持 ARKit 标准的 52 个 BlendShapes,用于驱动面部表情和唇形同步。它们涵盖了眼睛、下巴、嘴巴、眉毛、脸颊、鼻子、舌头等部位的动作。这些 BlendShapes 可用于驱动 MetaHumans 数字人模型或其他自定义面部模型的表情动画。

2. BlendShapes(BS)顺序和名称

下面是 ARKit 标准的 52 个 BlendShapes 的顺序和名称。此列表用于面部表情的驱动,按照 ARKit 标准的命名方式排列,确保兼容性和易于理解。

序号

BlendShape 名称

描述

1

eyeBlinkLeft

左眼眨眼

2

eyeLookDownLeft

左眼向下看

3

eyeLookInLeft

左眼向内看

4

eyeLookOutLeft

左眼向外看

5

eyeLookUpLeft

左眼向上看

6

eyeSquintLeft

左眼眯眼

7

eyeWideLeft

左眼睁大

8

eyeBlinkRight

右眼眨眼

9

eyeLookDownRight

右眼向下看

10

eyeLookInRight

右眼向内看

11

eyeLookOutRight

右眼向外看

12

eyeLookUpRight

右眼向上看

13

eyeSquintRight

右眼眯眼

14

eyeWideRight

右眼睁大

15

jawForward

下巴前伸

16

jawLeft

下巴向左

17

jawRight

下巴向右

18

jawOpen

下巴张开

19

mouthClose

嘴巴闭合

20

mouthFunnel

嘴巴漏斗形状

21

mouthPucker

嘴巴撅嘴

22

mouthLeft

嘴巴向左

23

mouthRight

嘴巴向右

24

mouthSmileLeft

左嘴角微笑

25

mouthSmileRight

右嘴角微笑

26

mouthFrownLeft

左嘴角下垂

27

mouthFrownRight

右嘴角下垂

28

mouthDimpleLeft

左嘴角酒窝

29

mouthDimpleRight

右嘴角酒窝

30

mouthStretchLeft

左嘴巴伸展

31

mouthStretchRight

右嘴巴伸展

32

mouthRollLower

下嘴巴卷曲

33

mouthRollUpper

上嘴巴卷曲

34

mouthShrugLower

下嘴巴收缩

35

mouthShrugUpper

上嘴巴收缩

36

mouthPressLeft

左嘴巴按压

37

mouthPressRight

右嘴巴按压

38

mouthLowerDownLeft

左嘴巴下垂

39

mouthLowerDownRight

右嘴巴下垂

40

mouthUpperUpLeft

左嘴巴上扬

41

mouthUpperUpRight

右嘴巴上扬

42

browDownLeft

左眉毛向下

43

browDownRight

右眉毛向下

44

browInnerUp

眉毛内侧上扬

45

browOuterUpLeft

左眉毛外侧上扬

46

browOuterUpRight

右眉毛外侧上扬

47

cheekPuff

脸颊鼓起

48

cheekSquintLeft

左脸颊收缩

49

cheekSquintRight

右脸颊收缩

50

noseSneerLeft

左鼻子撇

51

noseSneerRight

右鼻子撇

52

tongueOut

舌头伸出

3. 如何使用这些 BlendShapes

  • MetaHumans 支持:如果您使用的是 MetaHumans 模型,Visemator 插件会自动通过 LiveLink 来同步这些 BlendShapes,无需额外配置。

  • 非 MetaHumans 支持:对于非 Metahuman 的自定义数字人模型,您需要根据模型的 Morph Targets 配置这些 BlendShapes。可以在插件的设置中手动映射每个 BS 到自定义模型的相应控制器。

4. 自动和手动配置

  • 自动配置:Visemator 插件默认会自动为 MetaHumans 模型配置这些 BS。

  • 手动配置:对于非 MetaHumans 模型,用户需要在 AssignVisemesToMorphTargets 方法中手动映射每个 BS。

常见问题

Q1: 我的自定义角色为什么没有面部动画?

  • 确保你的自定义角色拥有正确的 52 个 ARKit 标准的 Morph Targets(即 52 个 BlendShapes),并在 AssignVisemesToMorphTargets 中正确映射。

  • 如果你没有配置 LiveLink Source,可以手动绑定它。请参考 LiveLink 文档来获取更多信息。

Q2: 我如何从蓝图中使用这个插件?

  • 你可以使用 PlayAudioFilePlayAudioAssetAssignVisemesToMorphTargets 等功能,通过蓝图来实现唇形生成和面部动画驱动。