「硬核」实操如何拥有一个自己的数字人模型
一、前言
近年来,随着人工智能技术,VR,元宇宙等技术的发展,数字人(Digital Human)逐渐成为研究的热点之一,数字人是指通过计算机技术模拟出的具有人类外表,动作和语言能力的虚拟人物,具体可以应用到电影、游戏、虚拟现实、智能客服、带货主播等多个领域。
本文大致分为三个章节:
第一部分会介绍常用技术以及简介,以及自己用到构建一个自己虚拟数字人用到的 3D 引擎和三维软件
第二部分会详细描述生成细节,通过照片建模,创建模型,添加细节,添加表情,优化效果,接入场景,最终效果
第三部分总结本篇内容
从预见未来到遇见未来,让我们开始,向上吧技术人!!!
二、虚拟数字人技术
要聊需要那些技术,先聊需要那些步骤?
• 收集数据:首先需要收集自己的数据,包括照片、视频、声音等,这些数据将成为数字人的基础。
• 人脸检测:利用计算机视觉技术对照片进行处理,检测出其中的人脸。可以使用已有的人脸检测算法,例如 OpenCV、Dlib 等。
• 人脸识别:对于检测出来的人脸,需要利用人脸识别技术对其进行识别和分析,从而获取人脸的各种特征和信息。可以使用已有的人脸识别算法,例如 FaceNet、VGGFace 等。
• 3D 建模技术:数字人是一种三维模型,因此需要掌握 3D 建模技术。这包括了掌握 3D 建模软件的使用,如 Blender、Maya、ZBrush 等。
• 优化细节:优化数字人的各种细节,包括皮肤纹理、发型、服装等,让数字人更加真实、生动。
• 材质和纹理制作技术:数字人需要具有逼真的材质和纹理,因此需要掌握材质和纹理制作技术。这包括了掌握材质和纹理制作软件的使用,如 Substance Painter、Photoshop 等。
• 动画制作技术:数字人需要具有动态的动作和表情,因此需要掌握动画制作技术。这包括了掌握动画制作软件的使用,如 Unity、Unreal Engine 等。

以下文字内容较多,先放一个自己建好的模型
1、收集数据或者生成图片
• Photoshop、相机:这部分忽略一下,哈哈哈
• Stable Diffusion:AI 图像生成工具,一个基于 Latent Diffusion Models(潜在扩散模型,LDMs)的文图生成(text-to-image)模型,生成图片的原理是通过模拟稳定扩散过程并生成相应的数据,然后将数据可视化展示为图片,以帮助用户更好地理解实验结果和数据特征
• ChatGPT:OpenAI 团队 ChatGPT-4O 开发了一种新的技术,使 ChatGPT 也可以生成图片。这种技术被称为 DALL·E(即“Drawing Artificially with a Learned Language Model and a Encoder”),它结合了语言模型和图像编码器的能力,能够根据给定的文本描述生成对应的图片。
2、人脸检测和识别
• OpenCV:是一个用于计算机视觉的开源库,它提供了许多常用的计算机视觉算法和工具,如图像处理、特征提取、物体检测、人脸识别、跟踪等。OpenCV 支持多种编程语言,包括 C++、Python 等。
• Dlib:是一个 C++库,它提供了用于机器学习、图像处理、计算机视觉等领域的算法和工具。其中最知名的功能是人脸识别,它基于深度学习和传统的计算机视觉技术,并提供了人脸对齐、人脸特征提取等功能。
• FaceNet:是由 Google 开发的一个深度学习算法,用于将人脸图像转换为高维向量表示,从而实现人脸识别。FaceNet 使用了三个主要组件:卷积神经网络、三元组损失函数和在线学习方法,这些组件使得 FaceNet 能够在大规模人脸识别任务中达到很高的准确率。
• VGGFace:是由牛津大学的研究团队开发的人脸识别算法,它基于深度卷积神经网络,并使用了许多卷积层和池化层来提取人脸图像的特征。VGGFace 包含了两个模型:VGGFace 和 VGGFace2,其中 VGGFace 是一个较早的模型,而 VGGFace2 是一个新的模型,它在大规模人脸识别任务中具有更好的性能。

3、3D 建模技术
• Blender:是一个用于三维建模、动画、渲染和交互式应用程序开发的开源软件。它支持多种三维对象的创建和编辑,包括多边形网格、NURBS 曲线、体积网格等,并提供了丰富的材质和纹理编辑器,可以帮助用户创建出逼真的场景和角色。
• Metashape:前身为 PhotoScan)是一个用于三维重建和地形建模的商业软件。它可以根据照片生成高精度的数字模型,并提供了多种渲染选项和工具,如纹理映射、贴图、相机校准等。Metashape 还可以将生成的模型导出到其他软件中进行后续处理和应用。
• Maya:是一款专业级的三维建模和动画软件,广泛用于电影、电视、游戏等领域。它提供了丰富的建模和动画工具,包括多边形网格、NURBS 曲线、动力学仿真、粒子系统等,并支持多种渲染引擎,如 Arnold、V-Ray 等。
• ZBrush:是一款专业级的数字雕刻软件,用于创建高精度的三维模型和角色。它提供了多种绘画和雕刻工具,包括多边形建模、纹理映射、雕刻笔刷等,并支持实时预览和交互式渲染。
• LayaAir:是一个用于 Web、移动和小游戏开发的 HTML5 引擎。它提供了多种功能和工具,如 3D 渲染、物理引擎、GUI 编辑器等,可以帮助用户创建出高效、高质量的 Web 应用和游戏。LayaAir 还支持多种开发语言,包括 JavaScript、TypeScript 等。


4、动画制作技术
• Unity3D:Unity3D 是一款实时 3D 互动内容创作和运营平台,支持多种平台和设备,包括 PC、移动设备、虚拟现实和增强现实等。Unity3D 提供了强大的编辑器和工具,支持 C#和 UnityScript 等多种编程语言,可用于游戏开发、AR/VR 应用开发等。
• Unreal Engine: Unreal Engine 是一款由 Epic Games 开发的 3D 游戏引擎,同样支持多种平台和设备,包括 PC、主机、移动设备、VR 和 AR 等。Unreal Engine 提供了强大的编辑器和工具,支持 C++和蓝图等多种编程方式,可用于游戏开发、建筑可视化、虚拟展览等。
• CryEngine:CryEngine 是一款由 Crytek 开发的 3D 游戏引擎,同样支持多种平台和设备,包括 PC、主机、移动设备、VR 和 AR 等。CryEngine 提供了强大的编辑器和工具,支持 C++和 Lua 等多种编程方式,可用于游戏开发、建筑可视化、虚拟展览等。
• Godot:Godot 是一款免费、开源的 3D 游戏引擎,支持多种平台和设备,包括 PC、移动设备、Web 和 VR 等。Godot 提供了强大的编辑器和工具,支持 GDScript 和 C#等多种编程语言,可用于游戏开发、AR/VR 应用开发等。
部分软件图标

除了以上技术应该还有很多技术,欢迎大家热烈讨论和在评论区补充😏
三、构建一个自己的数字人—小陈
第一步 用自己的照片生成自己的头像模型
有以下三种办法
1、使用 https://avatarsdk.com/ 在线制作,这个 H5 是基于 WebGL 的 OpenCV 技术构建,可以传一张照片(高 p 的)生成头的模型,也可以生成头和身体模型。

为了不影响建模,一般选择秃头,导出数字人头部模型

2、使用 Polycam 软件应用上传生成导出
拍照时自己站着不要动,我们做数字人需要头就可以,拍照的仰角和俯角倾斜,拍 40 张左右即可

导入 Blender 进行对点云部分删除部分,分析建模,然后导出数字人头部模型

3、通过照片,格式工厂,在 Metashape 构建模型 对点云进行处理 导出数字人头部模型,原理是一样的
以上方式根据具体的需求来,第二三种方式更逼真。
第二步 导入模型到 UE5 中,并安装插件
安装 MetaHuman 插件(数字人)、 Bridge 插件(建模)、LiveLink 插件(交互动作)。插件都装好后,重启虚幻引擎
1、导入我们第一步的模型,创建 MetaHuman 实体,并给实体命名,注意这个名字就是你数字人的名字

2、双击进入,面部选择网格体也就是我们第一步生成的头像模型,并给小人选择合适身体

继续点击提升帧,追踪活动帧,效果如下图

继续点击 MetaHuman 本体解算、网格体转 MetaHuman。
3、在 UE5 中打开 Bridge,登陆一下账号,只有 logo 的就是我们的小人了。忽略我设计的秃顶和爆炸头小陈

选中 logo 模型,点击 START MHC 进入 MetaHuman Creator 网页, https://metahuman.unrealengine.com/ 进一步加工我们的 MetaHuman 吧

第三步 调整你的数字人
对骨骼,肤色,头发,牙齿,身体,表情动作等进行调整,内容太丰富,建议自己尝试,放一个眼影小陈,和大胡子小陈


第四步 下载数字人并加载到虚幻引擎中
1、打开 Bridge 点击 Down

2、添加小人到项目中后项目中多了一个 MetaHuman 的文件夹,移动到你的场景吧

3、最终效果图,只下载好了(网速不好)秃头小陈实在不好放大,下次做个好看的在更新下文章吧。
四、总结和畅想
本文介绍了如何打造一个数字人,描述业内常用的一些软件和技术栈,并实战打造一个以自己为模型构建的虚拟数字人,并详细描述了全过程。总的来说数字人具备了逼真的人类外貌、身体动作和语言能力的虚拟人物,不同的制作方法和技术可以实现不同的效果和应用,选择合适的方法和技术需要根据具体需求和项目情况来确定。
大家将就看完了,模型还是丑丑的😭,下一步持续提升,让数字人拥有智慧,拥有交互,拥有颜值(毕竟颜值才是正义)。
关于数字人如何创建和相关技术就介绍到这里啦,我也是刚入门,有不对的地方和需要补充的,欢迎大家指正,希望对大家所有帮助,也欢迎多多点赞收藏😎。
最后关于数字人的应用场景和结合实际的落地效果,大家有好的 idea 也可以一起讨论。
文章转载自:京东云技术团队
评论