3D虚拟数字人设计探索和落地实践(下)
编者荐语:
上篇介绍了3D卡通虚拟数字人角色从风格定义到建模拆分UV的工作流程及方法,前期风格定义了角色性格及形象。下篇将深入探讨数字人物的着色、烘焙、绑定和动画技术,并提供示例和技巧。实用性极强,能够为数字行业从业者提供丰富的知识和技能。通过文中的技术和方法,读者将能够更加自如地运用3D软件,创作出更具创意和表现力的数字人物。
3D虚拟数字人设计探索和落地实践(下)
亚信科技(中国)有限公司
摘要:本文对3D虚拟数字人从材质着色到动画技术进行了全面详解,重点介绍Blender着色、UDIM烘焙、骨骼绑定、第三方动作库应用及面部驱动的技术和方法,并提供了实用的示例和技巧,对数字人技术的发展和应用具有重要的指导意义。
本文将介绍在数字人制作中的材质着色、烘焙、绑定和动画。
●材质着色
材质着色是为数字人赋予不同材质外观和质感的过程。它可以让数字人看起来更真实,增加观众的沉浸感和情感共鸣。通过使用各种不同的材质贴图,数字人的表面可以呈现出各种各样的效果。
● 烘焙
烘焙是将高精度模型的细节信息渲染到低精度模型上的过程,以提高数字人的渲染效率。通过烘焙,可以将高精度模型中的细节信息,如法线、AO、光照等信息,渲染到低精度模型上,从而使数字人的渲染速度更快,同时还能保证数字人视觉效果的还原。
● 绑定
绑定的过程涉及骨骼、绑定两大块,骨骼是一个由骨头(或骨骼节点)组成的层次结构,模拟人体或其他生物体的骨骼系统。绑定是将数字人骨骼与3D模型表面连接起来的过程。这通常涉及将每个顶点或顶点组与一个或多个骨骼关联起来。绑定确定了模型表面上每个点如何受骨骼动作的影响,使数字人可以呈现各种动作。
● 动画
动画是数字人进行各种动作的过程,通过使用绑定后的骨骼系统,可以制作数字人的各种动画,如走路、奔跑、跳跃、表情等。数字人的动画可以让观众更容易地与数字人产生情感共鸣,并为数字人带来更多的生命力和灵性。
一
材质着色
(一)body材质
为了避免制作贴图时每一步都需要绘画的痛苦,我们求助于Blender强大的材质节点编辑器,我们通过添加一些顶点色并添加一些次表面散射来完成角色的皮肤着色。
图1:body着色
1.设置光源
将世界环境的背景色改为略带灰白色的颜色,这样做的好处就是,在场景中我们不需要任何灯光,并且为场景中的模型提供了非常匀称的光源。
2.使用(AO)添加基础颜色
给角色模型添加一个"原理化(BSDF)材质",然后给基础色添加一个"环境光遮蔽(AO)",这时候我们可以看到角色的夹缝中看到一些暗部阴影。在"环境光遮蔽节点"与主节点之间添加一个"渐变节点",调节滑块模拟阴影部分的深浅,调节渐变颜色模拟皮肤的色调。这样得到一个非常基础的肤色后,可以多添加几种颜色,丰富皮肤颜色的细节和过渡。需要注意的是,在着色和烘焙的时候,需要将渲染属性的颜色管理改成标准,以便我们更准确的观察色彩变化。
3.添加皮肤高光
有了基础颜色,接下来我们来调整高光部分,添加一个"几何数据节点",再添加一个"渐变节点",将尖锐度连接到渐变系数上,按住键盘快捷键ctrl+shift,然后点击"渐变节点",预览节点效果。调整滑块,最终调整得到我们满意的高光部分为止,然后将此部分节点和基础色节点通过混合节点链接到主节点,需要注意的是高光部分的节点连接到系数,最后设置一下另一个颜色(高光颜色),这样就得到了皮肤的高光,继续调整高光节点的渐变滑块,以达到最佳的效果。
4.添加次表面效果
最后添加次表面颜色,让皮肤在光照下显得更加通透,通常次表面体现在皮肤厚度相对薄的区域,譬如手指、眉毛、眼睑、鼻子、耳朵、和其他肉质部分。接下来我们添加一个顶点色,命名为sss,我们为这些地方绘制顶点色,绘制完记得使用模糊画笔模糊一下。最后添加顶点颜色节点和渐变节点,链接到主节点的次表面上,设定一个次表面颜色,调整渐变滑块,以达到满意的次表面效果。
图2 :角色body着色材质节点
(二) 眼睛材质
实现眼球材质的方法有多种多样,但最终都需要以贴图的形式输出,这里主要使用材质+烘焙的方式。通过观察,我们可以将眼睛的材质分为眼球和虹膜两个主要材质,而眼球眼球实际上可以分为三种材质:白色的基地、巩膜上的血丝、透明的角膜,这里我们依托于Blender强大的节点,将三者结合到一个材质里,尽量少的材质,能提升引擎渲染速度。
图3:眼睛材质
1.眼球的材质
通过观察,我们在制作眼球的材质时可以将其归纳为白色基底、透明的角膜、眼球中的血丝三个部分:
1)白色基底:对于白色基底,新建一个原理化BSDF节点,基础色直接选取白色,只要把糙度调低即可。
2)透明的角膜:角膜的关键在于它是透明的,且为了保证过渡自然,需要用到渐变纹理来控制白眼球的透射率实现。颜色渐变模块的滑块拖动可以控制渐变范围,这里渐变区域一般不要设置太大,有一点就可以了。(将虹膜添加一个深色材质,便于观察过渡的效果)
3)眼球中的血丝:眼球中的血丝可以分为底色和血丝部分,由于血丝的位置主要分布在白眼球处,所以可以复用前面的渐变纹理作为输入,新建一个渐变即可,通过调整渐变的范围即可以调整颜色分布。使用沃罗诺伊纹理作为血丝的纹理,由于该纹理具有一致的方向性,和血丝的不规则不同,故还需要通过噪声纹理对齐形状进行调整。然后将纹理染成红色并与底色柔光叠加即可达到血丝的效果,为了增加细节,可以再添加一些小血管,小血管的材质和大血管的流程完全一样,只是纹理的参数不同,通过增加沃罗诺伊纹理的缩放系数,来增加纹理的密度,并将大血管的输出通过混合节点混合后输出为血管纹理。
图4 :CORNEA/SCLERA的材质节点
至此眼球的部分的材质就做好了,接下来我们制作虹膜部分的材质。
2.虹膜的材质
在制作虹膜的材质之前,我们可以先将虹膜部分的UV展开,因为后续纹理映射将会使用UV坐标来制作。
通过观察,我们不难发现,瞳孔中心是黑色的颜色,然后是浅色的虹膜,然后逐渐消失,因此,可以将虹膜部分看作是虹膜和瞳孔两部分,虹膜纹理部分使用噪波+镜像渐变纹理,而虹膜的渐变则可以使用球形渐变纹理制作,然后通过混合RGB节点(正片叠底)进行混合。
为了让虹膜的纹理不显得单调,还可以使用沃罗诺伊纹理增加虹膜部分的细节,最后使用混合RGB节点(颜色减淡)与前面的颜色节点相连。
图5:IRIS的材质节点
二
渲染烘焙
烘焙,一般是为了加速后续的其他过程进行的预先计算。渲染烘焙一个网格物体表面,得到2D位图图片,这些图片会通过UV坐标重新映射到物体上,这让实时渲染的效率更高。烘焙是对每个独立网格完成的,并且网格已经展开UV。
Blender Cycles着色器的灯光照明可以烘焙到图像纹理。这有几种不同的用途,最常见的是:
●烘焙纹理,如基础颜色或法线贴图,用于导出到游戏引擎。
●烘焙环境光遮蔽或程序纹理,作为纹理绘制或进一步编辑的基础。
●创建光照贴图以提供全局照明或加快游戏中的渲染速度。
(一)UDIM渲染烘焙
在烘焙之前我们需要确保已经完成UDIM分块,同时在物体数据属性下为每个UV块添加了定位在主分块的UVMap。Blender的渲染烘焙是一个非常复杂的工作流程,为了提高工作效率,我们选择使用插件(SimpleBake)来辅助烘焙。
在物体数据属性中选择对应的UVMap,在SimpleBake中,选择需要烘焙的贴图类型,譬如Diffuse、sss、Normal等,选择贴图尺寸,贴图名称,在物体模式下选中模型,点击Bake PBR Maps,最后检查一下贴图是否正常,在ps或者直接使用Blender纹理绘制,在贴图的基础上添加细节以及修正瑕疵。
图6 :使用SimpleBake完成UDIM渲染烘焙
图7:烘焙后的贴图
(二)PBR贴图应用
在blender中我们可以使用程序化节点达到想要的效果,但当模型导入到引擎,这个时候就需要通过贴图的形式来实现我们想要的效果,也就有了上面烘焙的这步流程,当然,相对程序化节点效果,PBR让更为真实但更加复杂更加消耗性能的光照模型算法变为可以大量被使用,在Blender中PBR纹理到底如何正确使用?下面介绍几个主要的贴图的设置方法。
1.基本颜色 Base Color
基本颜色贴图定义了表面的颜色。直接将其插入Principed BSDF的Base Color接口。注意:确保图像文件的颜色空间设置为颜色。
2.粗糙度 Roughness
粗糙度图定义表面的粗糙度。应将其插入Principed BSDF的粗糙度输入中。确保图像文件的颜色空间设置为非颜色数据。(可选)您可以在图像后面添加Gamma节点以轻松实现材料的粗糙度。较低的"Gamma"表示表面更粗糙,反之亦然。
3.法线 Nomal
法线贴图定义表面的一部分朝向哪个方向,该方向用于创建详细的阴影和高光。通常,应将其插入法线贴图节点的颜色输入中,然后将其插入Principed BSDF的法线输入中。确保图像文件的颜色空间设置为非颜色数据。
4.金属度 Metallic
金属贴图定义了材料的哪些部分是金属的,哪些不是。应将其插入着色器的金属输入中。确保图像文件的颜色空间设置为非颜色数据。只有金属和非金属材料都可以使用此贴图。如果金属材料没有此贴图,则可直接调整"Principled BSDF"中的金属值。
5.环境光遮蔽 Ambient Occlusion
环境光遮蔽(AO)贴图可用于伪造曲面凹凸中的柔和阴影,这在游戏引擎里面尤为有用。(注:Blender中使用Cycles渲染时,AO贴图的作用不大)。如果要使用此贴图,则应使用MixRGB节点将其与基础颜色贴图相乘,其中环境光遮挡贴图是第二个颜色输入,因此您可以使用"MixRGB"节点的滑块轻松控制其强度。
最后我们按照上面的方法,新建一个材质,将烘焙好的贴图连接到对应的Principed BSDF节点上,至此,一个附带PBR材质的角色就做好了。
图8:PBR节点连接方式
三
效果展示
图9:服装延展
四
面部Rig绑定
面部Rig绑定是一个非常繁杂的过程,得益于Blender扩展性强,因其开源开放,有很多Blender的爱好者会开发专用的插件让其更强大,使其专精于某一个领域。这里主要介绍使用Faceit完成面部的骨骼绑定。
Faceit是一个多合一的面部装配、动作捕捉和动画插件。直观、半自动和非破坏性的工作流程将引导你创建完美适应你的3D模型拓扑的面部绑定和形态键,无论是真人、拟人还是卡通模型。在实现全流程制作的同时节省大量时间和精力。
(一)面部骨骼绑定
1.前期模型准备
开始之前,我们需要对模型做一下处理,将模型拆分为,body、head、eye(分左右眼球)、Teeth (含牙龈)、Tongue、其他几何形状,如面部毛发(睫毛、眉毛、胡须)或眼壳、泪线等。对于网格有以下要求:
1)head网格必须由一个连接的表面组成。也就是说面中的所有顶点都应由边连接。其他物体,如牙齿、舌头、眼球、头发等,不需要连接。
2)角色应该以中性表情(睁眼,闭嘴)建模。
3)角色应放置在场景的中心 (X,Y)并面向 -Y 方向。高度(Z)无关紧要。
2.Setup-设置
在角色可以装配之前,必须执行快速设置,这里主要分为两个步骤:
1)注册网格:将选择构成角色面部的所有对象,然后点击注册面部对象按钮,根据你的角色模型的组成,你可以注册一个或一次全部注册。
2)分配顶点组:通过分配相关的顶点来指定重要的面部部分,顶点存储在对象数据选项卡中的顶点组中,分配的顶点组分为强制组和可选组。强制组为head、eye(left&right)。可选组为Other Eye(Left and Right)、Teeth(Upper and Lower)、Tongue、Eyelashes、Rigid。
3.Rig-骨骼绑定
正式进入骨骼绑定环节,这里可以分为"Landmarks"和"Rigging"两个步骤:
1)"Landmarks"的放置是至关重要的一步!"Landmarks"放置的准确性将对生成的表达式的整体质量产生巨大影响。点击Generate Landmarks,按照引导完成地标的粗略定位和缩放。"Project Vertices"操作符将地标网格沿正面方向投影在角色面部(Y 轴)上。由于在一个轴上的投影过程中可能发生遮挡,所以需要小心地重新定位所有顶点。从正面和侧面检查"Landmarks",并在几何图形周围平移,看看是否都正常。
2)"Generate Rig"操作符生成骨架。大多数骨骼都放置在精确的"Landmarks"位置,如果生成的骨骼位置不准确,可以通过"Back to Landmarks"操作返回修改地标。如果眼睛或牙齿或舌头的几何形状放错了位置,则必须编辑分配的顶点组。最后点击"Bind"绑定权重。
图10:权重修正
4.Expressions-表达式
在骨骼绑定完成后,就可以开始创建和调整个人面部表情了,faceit提供了非常多的Expression预设,同时也可以添加自定义的表达式。
●加载表达式预设:你可以使用"Load Faceit Expressions"运算符加载任何 Faceit 预设,预设包括52键ARKit、A2f、Viseme表达式,加载预设后,您可以通过摆姿势或雕刻使每个表情适应您的角色。
●创建自定义表达式:通过单击"Add Custom Expressions"创建自定义表达式。它们的工作方式与任何其他表达式类似。为表达式命一个名称,此名称和添加到网格的最终形态键相同。
●导出表达式集:表达式集可以在创建过程中的任何时候导出和共享。你可以使用此功能与制作中的其他角色共享自定义形状键。
●导入表达式集:可以导入其他的表达式集。在导入期间,选择将所有表达式缩放到角色的尺寸。所有包含的表达式都将应用于你的角色并附加到表达式列表中。
●编辑表达式:表达式可以通过多种方法进行编辑、调整或创建。所有这些方法都是非破坏性的!姿态表达式(姿态控制骨骼)、雕刻表达式(在任何注册的网格上进行校正雕刻)、放大表情(向上或向下放大动画姿势)、镜像表达式(自动从左到右镜像)、重置表达式(允许非破坏性编辑)。
5.烘焙形态键
点击"Bake shape keys"会将所有Faceit 表达式的变形烘焙到blender的单独的"shape keys(形态键)"中。Bake操作是完全无损的。可以将表达式烘焙到形状键中,在运动中测试它们,然后单击按钮返回编辑表达式或绑定。至此,面部的骨骼绑定和形态键已制作完成,下面说说几类形态键的作用。
(二)blender shape keys
1.52键ARkit
ARKit是苹果公司推出的增强现实开发平台,它可以识别并跟踪用户的面部,使用blender faceit生成52键ARKit,后续结合所有配备True Depth摄像头的iOS移动设备使用,可以实现面部动画跟踪。
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.letmouthShrugUpper: 描述上唇向外运动的系数。
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: 描述舌头伸展的系数。
2.Audio2Face kit
Audio2Face是一个基于深度学习的系统,可以生成与语音或音乐等音频输入同步的逼真 3D 面部动画。它可以接受音频输入并预测产生声音时自然会发生的相应面部动作。
该套件结合了多种技术,包括称为生成对抗网络 (GAN) 的神经网络和称为网格的3D人脸模型。它的工作原理是首先分析音频输入以提取音调和时间等特征,然后使用这些特征生成相应的面部动作。然后将生成的面部动作应用到3D面部模型以创建逼真的动画。
通过blender Faceit生成Audio2Face形态键,使用Audio2Face,只需录制语音音轨,输入应用程序,即可完成面部的唇形动画,甚至可以使用麦克风实时生成面部动画。
3.Viseme kit
将语音映射到一组嘴形,称为Viseme视位,是音素的视觉模拟。每个视位描绘了一组特定音素的嘴形。随着时间的推移,这些视位被插值以模拟自然的嘴巴运动。
五
身体四肢Rig绑定&权重
完成面部骨骼绑定后,接下来是完成身体四肢的骨骼绑定,这里我们需要借助blender另一款插件来进行绑定,Auto-Rig Pro是Blender的一个插件,用于装配角色、重新定位动画并提供 Fbx 导出,并带有Unity和Unreal Engine的预设。
(一)Rig绑定
1.设置模型
同样在绑定之前,需要先将模型处理一下
1)将模型应用全部变换。
2)将"body"网格合并到"head"网格(注:一定是合并到"head")。
3)角色模型必须在世界的中心 (0,0,0)。
4)必须面向-Y全局轴,这意味着面部和脚必须指向前视图(小键盘1)。
5)手指之间必须有足够的空间,手掌必须面向地板。
2.使用智能绑骨
基于"Auto-Rig Pro"的智能绑骨,绑定的效率提高许多。
1)选择所有身体对象。在做身体绑定时,可以先避免选择道具、衣服对象(后续单独处理)。
2)在 Auto-Rig Pro : "Smart" 面板中单击"Get Selected Objects"。
3)按照引导,依次添加"Neck-Chin-Shoulders-Wrists-Spine Root-Ankles"的标记。
4)完成身体部分的标记后,设置手指骨骼数量,点击"Go"!即可生成模型骨骼了。
5)大部分情况下手指检测都能识别到,如果失败了,请返回上一步调整标记或手动调整骨骼位置。
(二)蒙皮
由于骨骼与模型是相互独立的,为了让骨骼驱动模型产生合理的运动。把模型绑定到骨骼上的技术叫做蒙皮。
1)顶部菜单栏切换到"skin",首先选择角色网格对象,然后按住Shift键选择骨架。
2)单击"Bind"进行绑定。
3)生成权重后,局部可能会有些小问题,可以结合blender权重绘制工具进行修正。
图11:角色蒙皮
六
角色动画
(一)身体动画
1.Mixamo
Mixamo是一种基于网络的服务,提供预制的3D角色动画,可以定制和下载这些动画以用于各种3D应用程序,包括Blender。Mixamo提供了一个庞大的动作捕捉动画库,可以应用于任何 3D 角色。
要在Blender中使用Mixamo动画,需要将Mixamo动画导出为.fbx文件格式,以下是将Mixamo动画导出为.fbx文件的步骤:
1)登录Mixamo帐户并选择要导出的动画。
2)在导出选项中,选择.fbx文件格式,并设置其他选项(例如Skin、Frames per Second、Keyframe Reduction)。
3)点击下载按钮,将.fbx文件保存到本地计算机中。
4)打开Blender并导入.fbx文件,使用Auto-Rig Pro将动画骨骼信息映射到你的角色骨骼上,将源骨架动画传输到目标动画。
5)在动画编辑器中调整动画。使用Blender中的动画编辑器查看和编辑导入的Mixamo动画。
2.Atorcore
Atorcore是用于3D动作、角色和装配的一站式平台,提供世界顶级的预置动作库,为动画制作节省了大量的时间。
1)将Atorcore动画导出为 FBX 或其他支持的格式。
2)在Blender中导入Atorcore动画。选择 File > Import > FBX,并将动画文件导入到 Blender 中。
3)将导入的动画与角色模型绑定。使用Auto-Rig Pro将动画骨骼信息映射到你的角色骨骼上,将源骨架动画传输到目标动画。
4)在动画编辑器中调整动画。选择动画编辑器,选择导入的Atorcore动画并进行调整,编辑关键帧以调整动画的速度、时间轴、旋转等参数。
图12:角色换装
(二)面部动画
1.从NVIDIA Omniverse-Audio2Face导出JSON文件
关于Audio2Face使用,该工具提供了很多可能性。本节仅概述创建动画和导出json文件的最快方法。
1)打开 Audio2Face,顶部菜单 -> Audio2Face -> 打开演示场景 -> 默认场景
2)内容浏览器->Omniverse://localhost/NVIDIA/Assets/Audio2Face/Samples/blendshape_solve/将male_bs_46.usd拖到场景中。
3)转到A2F数据转换选项卡,混合形状转换 ->输入动画网格(c_headWatertight_hi),混合形状网格(male_bs_46)
4)单击设置混合形状求解,在 Audio2Face 选项卡中加载音频文件,两个模型都将被动画化。
5)加载音频文件后,您可以单击数据转换选项卡中的 导出为.Json
6)保存场景,因此您不必每次都设置"Blendshape"求解。
7)导入Blender动作编辑器。
图13:数字人播报
2.使用Facecap+ARKit实时驱动面部
使用FaceCap和ARKit可以实现实时驱动面部表情的效果。FaceCap是一款用于捕捉面部动作的工具,它可以将人脸的动作转化成三维模型的动作,从而实现面部表情的捕捉。而ARKit则是苹果公司推出的增强现实开发平台,它可以识别并跟踪用户的面部,将面部动作与FaceCap捕捉到的面部动作进行实时匹配,并将结果实时呈现在屏幕上。
1)将ARKit和FaceCap集成,这可以通过使用Faceit来完成。
2)接下来,需要准备面部捕捉设备和ARKit设备。可以使用iPhone或iPad设备进行ARKit面部追踪,并使用FaceCap进行面部动作捕捉。ARKit 应用程序只能在配备3D深度摄像头的iOS设备上使用。(iPhone X以上版本或iPad Pro 第三代以上版本。)
3)使用FaceCap捕捉面部表情,FaceCap插件会将捕捉到的面部表情转换成三维模型的动作,并将其传递给Blender。
4)OSC (直播)接收器从Facecap接收动画数据,可以实时记录头部动画以及形态键数据。停止接收器后,动画数据可以直接导入到Blender动作中。
5)使用Blender中的渲染引擎将面部表情渲染出来,并在屏幕上实时显示出来。
七
总结
本文提供了关于3D虚拟数字人着色、烘焙、绑定和动画技术的全面概述。着重介绍了3D虚拟数字人的着色技术。通过深入解释不同的着色方法,如基于物理的渲染(PBR)和手绘风格着色,以及如何为数字人物创建逼真的材质和光照效果。其次,介绍了烘焙技术在数字人物制作中的应用,探讨了烘焙的原理和常见的应用场景,并提供了UDIM烘焙技术的示例。绑定技术也是本文关注的一个重点,文中着重讲解了Blender如何结合"Auto-Rig Pro"和"Faceit",正确地将骨骼结构应用到角色模型上,并实现逼真的动作和变形效果。最后,使用第三方动作库,赋予数字人肢体动作,关于面部驱动,提供了实时捕捉和AI生成两种方案,根据业务需求不同,选择不同的驱动方式。
参考文献
[1]Auto-Rig Pro documentation:http://lucky3d.fr/auto-rig-pro/doc/index.htm
[2]Faceit Documentation:https://faceit-doc.readthedocs.io/en/latest/
[3]Blender 3.2 参考手册:https://superlove.cc/