【愚公系列】《AIGC辅助软件开发》038-高阶产品应用开发:利用UE创建数字人

举报
愚公搬代码 发表于 2024/10/31 23:09:07 2024/10/31
【摘要】 标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。博客内容.NET、...
标题 详情
作者简介 愚公搬代码
头衔 华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。
近期荣誉 2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。
博客内容 .NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
欢迎 👍点赞、✍评论、⭐收藏

🚀前言

随着数字化时代的到来,虚拟角色和数字人逐渐成为各个行业中不可或缺的元素。从游戏开发到影视制作,再到虚拟现实和增强现实应用,数字人不仅丰富了用户体验,也为品牌传播和互动提供了新的可能性。而在这其中,虚幻引擎(Unreal Engine,简称UE)以其强大的实时渲染能力和灵活的开发环境,成为创建数字人的首选工具。

本文将深入探讨如何利用UE进行高阶产品应用开发,特别是创建逼真的数字人。我们将详细介绍数字人的设计流程,包括角色建模、动画制作、表情捕捉以及与用户的交互实现。通过具体的案例分析,我们希望能够揭示数字人在各个领域的应用潜力,以及如何通过技术创新提升用户的沉浸感与参与度。

无论你是游戏开发者、影视制作人,还是对数字人技术感兴趣的爱好者,这篇文章都将为你提供实用的见解与灵感。让我们一起探索数字人技术的前沿,开启创造虚拟世界的新旅程!

🚀一、利用UE创建数字人

程序员在工作和学习中积累了大量宝贵的知识与经验,但有些优秀的程序员在表达能力上可能存在短板。在这种情况下,数字人的出现提供了理想的解决方案,可以有效弥补这一不足。

通过与数字人互动,程序员能够将专业知识和经验传递给更广泛的受众,而无需担心沟通障碍。数字人具备逼真的外貌、流畅的语言表达能力和交互功能,能够以更具吸引力和易于理解的方式呈现复杂的技术概念。这使得程序员能够更好地与其他开发者、学习者和潜在客户交流,建立个人影响力。

随着语音识别和 TTS(文字转语音)等技术的不断发展,创建数字人不仅能显著减轻程序员在镜头前的压力,使他们能够专注于内容创作本身,而不必担心形象和表达,还能迅速输出内容,大大提高创作效率。

使用 UE 的 MetaHuman 制作数字人非常简单,任何人都能免费使用,并通过深度学习制作出效果逼真、动作流畅的人物形象。

🔎1.准备工作

🦋1.1 硬件要求

要使用 Unreal Engine(UE)进行数字人建模,一般需要 NVIDIA 的 GTX 系列显卡。GTX 1060 为入门级配置,推荐使用 GTX 2060 及以上显卡,以及 32GB 内存。这个配置基本能确保软件稳定运行。

🦋1.2 软件安装

UE 是由 Epic Games 开发的游戏引擎。请访问 Epic Games 官网 https://store.epicgames.com/zh-CN/,点击页面右上角的“获取 Epic Games”按钮下载并安装安装包。

🦋1.3 创建账号

安装完成后,打开 Epic Games Launcher 并创建 Epic Games 账号。

🦋1.4 安装引擎

进入软件后,点击左侧菜单中的“虚幻引擎”,然后依次点击“库”和引擎版本后的“+”按钮,此处选择 5.1.x 版本进行安装。

🦋1.5 安装 MetaHuman

在虚幻商城中搜索 MetaHuman 插件和 MetaHuman SDK,购买(免费)并安装到引擎中。

🔎2.使用 MetaHuman 自带的人物

🦋2.1 创建工程

  1. 新建项目

    • 依次选择“游戏” → “空白” → “蓝图”,目标平台选择“桌面”。
    • 注意:路径和项目名称中不得含有中文或空格。MetaHuman产品界面见图。
    • 新建项目时,引擎需要编译着色器,可能需要数分钟或更长时间,请耐心等待编译完成。
      在这里插入图片描述
  2. 添加 MetaHuman 插件

    • 在工程中,依次选择“编辑” → “插件”选项,查找“MetaHuman”,勾选“MetaHuman”和“MetaHumanSDK”,然后重新启动工程。
  3. 引入 MetaHuman 人物

    • 第一步:选择“文件”选项,新建关卡,选择“Basic”,并保存。
    • 第二步:选择“窗口”选项,单击“Quixel Bridge”,在右上角登录。选择一个 MetaHuman,单击“Download”按钮下载,下载完成后单击“+”将其添加到工程中。点击所有弹出框的“启用缺失”按钮,然后重启工程。
    • 第三步:重启后,打开之前创建的关卡,在内容浏览器的“MetaHumans”目录下找到刚才下载的 MetaHuman(BP_***),并将其拖入关卡中。图展示了引入 MetaHuman 人物后的效果。
      在这里插入图片描述

🦋2.2 接受文字输入并显示

我们用一个带按钮的文本框模拟与数字人交互的界面。首先打开关卡蓝图,图所示为模拟与数字人交互的界面。
在这里插入图片描述

从“事件开始运行”开始,添加节点“创建控件”,选择类为“WBPDemo Chat”。在绑定事件时,添加节点“分配 onSend”。注意,有三个同名选项,通常选择第三个。如果类型不匹配,可以尝试选择其他选项。绑定事件后,直接将内容输出到屏幕上。

  • 图展示了接受文字输入后的结果页面。
    在这里插入图片描述

  • 图展示了编译后的运行界面。在这里插入图片描述

🦋2.3 数字人连接 ChatGPT 对话

连接 ChatGPT 时我们要用到插件 OpenAI的API。图所示为接人 OpenAI的API的界面。

在这里插入图片描述
这样,数字人就具备了对话的能力。图所示为数据人具备对话能力后的界面。

在这里插入图片描述

🦋2.4 让数字人开口说话

要让数字人开口说话,首先要将ChatGPT返回的内容变成声音。在UE中我们要用到speech 这个插件。图所示为 AZSpeecch 插件的界面。
在这里插入图片描述

另外,AZSpeech 的 “Speech to Text With Default Options” 组件可以进行语音识别,使数字人具备“耳朵”功能。

  1. 有了声音后,我们可以利用 MetaHumanSDK 根据声音自动生成嘴型动画。图展示了 MetaHumanSDK 的产品界面。
    在这里插入图片描述

  2. 将嘴型动画与头部网格体绑定,并同时播放音频,即可实现人物说话的效果。图展示了动画与音频的合成界面。
    在这里插入图片描述

🔎3.进阶实战

本节先来了解几种人物建模方式,之后我们可以按自己的形象创建特定的数字人。

🦋3.1 创建自己的数字人形象

下面介绍几种常用的建模方式:

  1. FaceGen Modeller 建模

    • 导入左、中、右三张头像照片即可生成头部模型。图展示了生成头部模型的界面。生成后,将输出为 .obi 文件,以便导入 UE。
      在这里插入图片描述
  2. Blender 建模

    • Blender 是一款免费的建模软件,能够精确控制模型的细节。访问 Blender 官网下载该软件,安装成功后,需要安装 FaceBuilder 插件。图展示了 Blender 界面。
      在这里插入图片描述

    • 在主窗口右侧选择 FaceBuilder,然后单击“新建人头”按钮。图展示了 Blender 新建人头的界面。
      在这里插入图片描述

    • 单击“添加图像”,至少需要一张正面头像。添加左前方、右前方、正左侧、正右侧和背面的照片,可以更准确、方便地调整模型。添加完成后,确保“拓扑”选项设置为 “bighpoly”。

    • 选中照片后,单击“对齐面部”按钮,之后可以拖动网格进行精细调整。图分别展示了网格精调界面和精调效果。
      在这里插入图片描述
      在这里插入图片描述

在网格调整完成后,单击“创建纹理”按钮,选择需要生成纹理的照片,然后单击“确认”按钮。纹理图片可以在 Photoshop 中进行优化处理。在导出前,请将位置和旋转归零。接着,单击“导出为 FBX”按钮导出模型。在弹出的导出窗口中进行如下设置:

  • 将“路径模式”设置为“复制”,并选中路径模式下拉框右侧的“内嵌纹理”选项;
  • 在“物体类型”选项中,按住 <Shift> 键,同时选中“骨架”和“网格”选项;
  • 在“几何数据”设置中,将“平滑”选项设置为“面”;
  • 取消勾选“烘焙动画”选项。

最后确认导出。

使用 Blender,同样可以导入 FaceGen Modeller 创建的 .obj 类型模型进行进一步的调整优化。

  1. MetaHuman Animation 建模

MetaHuman Animation 是 UE 于 2023 年 6 月发布的功能,允许用户通过手机快速创建模型。具体步骤如下:

  1. 在一台 iPhone 13 以上型号的手机上安装 Live Link Face;
  2. 打开 Live Link Face,选择模式为 Metahuman Animator,拍摄头部视频;
  3. 单击左下角的镜头试拍浏览器,选择拍摄的视频,然后单击右上角的“导出”按钮,将视频发送到计算机进行保存。

对于没有 iPhone 13 以上型号手机的读者,可以安装 Polycam 进行建模。建模完成后,将其导入 Blender 进行后期处理。在处理过程中,请注意只保留脸部和脖子裸露皮肤的部分,其余部分全部删除。

🦋3.2 导入模型到 UE,创建 MetaHuman

☀️3.2.1 由 .obj 和 .fbx 文件创建 MetaHuman

  1. 打开之前创建的工程,在内容目录下新建一个文件夹 ImportedModels,再在 ImportedModels 下新建一个 人物 文件夹。

  2. 将 .fbx 文件拖入这个 人物 文件夹中,在弹出的窗口中单击“导入”按钮。

  3. 人物 文件夹的文件列表空白处右击鼠标,依次选择 MetahumanMetahuman 本体文件,为文件命名后将其打开。

  4. 点击网格体中的组件,选择刚才导入的网格体。此时模型应正对屏幕,如未正对,请手动调整视角,确保头部居中并占据屏幕大部分空间。

  5. 依次单击 提升帧追踪活动帧MetaHuman 本体解算

  6. 建议增加左前和右前两个角度的帧,角度不宜过大,可以进行微调。

  7. 选择合适的身体。

  8. 单击“网格体转 MetaHuman”,成功后关闭本体窗口。

  9. 单击“窗口”菜单,打开 Quixel Bridge。在 My Metahumans 中选中第一个,在右下角选择 Highest Quality 选项,并单击 Start MHC 选项。

  10. MetaHuman Creator 主页选择 UE 5.1 引擎,单击自定义网格体,启用编辑,调整区域影响。图显示了 MetaHuman Creator 自定义网格体界面。
    在这里插入图片描述

  11. 单击“雕刻”图标,拖动面部的点以调整面部形态。图显示了面部雕刻界面。
    在这里插入图片描述

  12. 设置人物的皮肤、外貌和衣着。图显示了相关设置界面。
    在这里插入图片描述

☀️3.2.2 由 MetaHuman Animation 创建 MetaHuman

  1. 配置 MetaHuman Animator

    • 在计算机上配置 MetaHuman Animator。
    • 新建一个 5.2 引擎的空白工程。
    • 在“内容”目录下右击“MetaHuman 动画器”,然后单击“捕捉源”。
    • 打开捕捉源类型的配置文件,在 CaptureSource Type 选项下选择 LiveLinkFace Archives,并将 Storage Path 设置为手机捕捉的面部视频保存目录。
  2. 管理捕捉视频

    • 单击“工具”菜单,打开捕捉管理器,查看保存的面部视频。
    • 单击“添加到队列”按钮,将视频加入工程中。
  3. 创建 MetaHuman 本体

    • 在内容浏览器中右击“MetaHuman 动画器”,选择“MetaHuman 本体”。
    • 打开本体文件,创建组件时选择“从镜头中”选项,导入从 iPhone 中获取的捕获数据。图 11-23 显示了导入捕获数据的界面。
  4. 设置活动帧

    • 拖动镜头时间轴选择画面,依次创建正面、左前、右前三个角度的活动帧。
    • 进行网格体追踪网格标记、本体解算以及网格体转 MetaHuman。

在这里插入图片描述

注意:由于 MetaHuman Animation 运行于 5.2 版本的 UE,生成的 MetaHuman 与 5.0 和 5.1 版本生成的 MetaHuman 不兼容。

☀️3.2.3 在工程中使用自建的 MetaHuman

  1. 下载 MetaHuman

    • 重新打开 Quixel Bridge,单击 Download 按钮下载所需的 MetaHuman。
    • 下载完成后,单击 “+” 按钮将其添加到工程中。
    • 选择当前人物路径下的网格体。注意,MetaHuman 网格体中,男性人物以 m (male) 开头,女性人物以 f (female) 开头。
  2. 添加角色到关卡

    • 添加成功后,在 MetaHuman 目录下找到角色,并将其添加到关卡中即可。

🦋3.3 降低数字人响应延迟 90%的必做操作

目前,数字人最大的问题是响应过慢,尤其是当 ChatGPT 的回答较长时,数字人可能需要几十秒才能做出回应。为了解决这个问题,我们可以从以下几个方面进行优化:

  1. ChatGPT 流式响应

    • 使用插件 HpGPT 使 ChatGPT 以流式方式逐字回答。当接口有响应时,我们立即开始处理,而不是等待 ChatGPT 完全回答后再进行处理。图展示了 ChatGPT 流式响应路径。
  2. 分句处理

    • 接收到的回答将以句子为单位向 TTS 请求语音和音素数据。这里使用的插件是 ProgressiveStringSplitter
      在这里插入图片描述
  3. 声音与嘴型同时处理

    • 为了同时获取语音和音素数据,需要发送 SSML(语音合成标记语言)格式的请求。图展示了发送 SSML 格式请求的路径。
      在这里插入图片描述
    • 创建请求后,使用 AZSpeech 插件中的 SSML To Sound Wave with Default Options 组件发送请求。图展示了利用 AZSpeech 插件发送请求的路径。
      在这里插入图片描述 - 通过这种方式,我们可以同时获得声音和嘴型数据,嘴型数据可直接用于驱动嘴型动画。

经过这些优化后,数字人的响应时间缩短至约 2 秒,基本能够满足各种场合的需求。

🦋3.4 扩展功能

UE是非常强大的开发平台,有很丰富的开发生态资源。我们还可以为数字人加上肢体动作、接受语音输人功能,如果想用数字人来做直播,还可以为他加入读取弹幕的功能。

🦋3.5 其他数字人介绍

☀️3.5.1 视频数字人

视频数字人的原理是通过预先录制的视频,结合语音技术驱动人物嘴型变化。利用文本合成技术(TTS),可以将文本转换为语音。因此,在录制好一段素材视频后,只需编写适当的文案,即可轻松生成新的内容视频。

优点

  • 生成的内容视频基本符合人物的特征和形象。

局限性

  • 只能改变人物的嘴型,无法改变姿态或进行其他身体动作。

我们使用开源项目 Vide0ReTalking 来生成视频。具体步骤如下:

  1. 准备系统环境

    • 首先安装 Conda 来管理 Python 环境和包,可在 Conda 官网下载。
    • 安装完成后,执行以下命令:
      git clone https://github.com/vinthony/video-retalking.git
      cd video-retalking
      conda create -n video_retalking python=3.8
      conda activate video_retalking
      conda install ffmpeg
      # 请按照 https://pytorch.org/get-started/previous-versions/ 的说明安装 PyTorch
      pip install -r requirements.txt
      
    • 有关该开源项目的更多信息,请访问 Vide0ReTalking GitHub 页面
  2. 拍摄视频素材

    • 拍摄视频时,确保脸部占比不要过大。脸部占比过大会导致报错并降低视频质量,因此建议拍摄半身或全身视频。
  3. 根据文案生成 WAV 声音文件

    • 可以使用免费工具 TTSMaker 生成音频文件,工具网址为 TTSMaker
  4. 生成新的内容

    • 准备好素材后,可以执行生成代码,具体命令如下:
      python inference.py --face projects/norman/norman.mp4 --outfile results/norman-myhometown.mp4 --audio projects/norman/myhometown.wav
      
    • 成功生成视频需要经过 7 个步骤。图 11-27 显示了执行生成代码的过程。生成视频比较耗时
      在这里插入图片描述

☀️3.5.2 图片数字人

图片数字人是以高清图片为素材,通过 D-ID、HeyGen 等工具生成的视频内容。

优点

  • 数字人形象多变
  • 简单易学
  • 成本低廉

缺点

  • 动作灵活性不足

比尔·盖茨在第一次体验 ChatGPT 时认为,这是自图形用户界面出现以来最重要的技术进步。有了 AI 加持的数字人,不仅能成为有效的助手,还将深刻改变人类与计算机系统的交互方式。程序员如果能掌握和运用数字人技术,将在 AI 时代获得更大的竞争力和更多的成功机会。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。