数字化技术正在飞速发展,3D虚拟数字人已经成为数字娱乐、虚拟现实和人机交互等领域中不可或缺的角色。本文以“3D虚拟数字人设计探索和落地实践”为主题,介绍了虚拟数字人设计的基础知识和制作流程,可为数字人设计师、动画制作人、游戏开发者和虚拟现实从业者提供重要参考。
亚信科技(中国)有限公司
图1:情绪版参考-图片来源于网络
以小雅为例,对于大部分二次元用户来说,对日漫有着明显的倾向,但考虑到放到场景里面显夸张,跟企业气质和相关业务线违和。倾向性明显的人设,稍有不慎就会显得幼稚或夸张。我们知道数字虚拟人从美术风格上可以分为3D高保真、3D写实、3D卡通、2D真人、2D卡通等,从元宇宙的应用场景考虑,先排除了2D的形式,最终从性能及美观度两方面考虑,设定小雅为3D卡通的美术风格。
为了突出人物性格的同时,兼顾企业的品牌基因,在服装设计中加入企业元素,结合现代时尚元素以保持时尚感。
图2:服装参考-图片来源于网络
小雅最终设定为年轻干练的职场精英女性,性格沉着冷静,衣着轻熟干练。由视觉设计师输出人物三视图,三视图将虚无抽象的文字描述转化为看得见的形象,为建模提供了重要的参考。
图3:角色三视图
图4:角色模型
3D卡通角色的建模的方式有许多种,最终使用何种建模方式,取决于哪一种更适合自己,和取决于要建什么模型,以下列举三种常用的建模方式,多边形建模、雕刻建模+拓扑、逐面建模。
● 一雕刻+拓扑(次世代建模):雕刻+拓扑对于人体结构需要一定的了解,对于细节把控更加到位,为后续高模烘低模提供基础,这也是我们常说的次世代建模,耗时相对较长,对细节的把控更加到位。
● 逐面建模:这种方法也叫poly2poly,逐面建模法是指使用点、线、面的形式,通过挤压、合并、环切等方式,将形体搭建出来,其过程类似于用一块块的砖头砌起一面墙那样。
在建模开始之前,我们需要了解一个好的角色模型有哪些特性。
● 准确的造型:造型的准确性直接决定了角色的形象,三视图为角色建模提供了最直观的参考,因此显得尤为重要。
● 合理的网格布线:合理的网格布线不仅需要准确体现造型,也需要考虑后续网格动画的形变,尽可能使用四边面搭建模型。
● 尽可能低的面数:无论是多边形建模还是次世代建模,最终到引擎里面都是低模,考虑到性能问题,需要让模型的网格在满足造型的前提下,尽可能精简面数。
图5:图片来源于blender官方
拿到三视图,我们首先要做的第一件事就是在blender里面设定参考图,基于三视图,快速规划身体和四肢的体块,这里暂时不需要过于纠结细节部位,需要注意的是在搭建体块造型的时候,需提前考虑好体块的穿插走位,以便后续深入塑造身体各部分的体积。
图6:body体块-图片来源于网络
图7:body网格-图片来源于网络
此步骤主要处理身体各个关节处的网格,为手臂和躯干添加更多的细节,对关节周围的网格进行合理的布线,确保关节处弯曲时,网格也会做出合理的变化。
图8:关节处布线-图片来源于网络
在手和脚的建模中,对于手部脚部的比例及结构掌握是必不可少的,从外形上看,手是由手掌和手指构成,而手掌可以理解成由三块肉垫构成,手指由近节、中节、远节三部分构成,其中拇指没有中节指骨。手掌侧的手指较短,手掌上的折痕不与手指和手部的连接线重合。
成年人手的长度和脸相等(下巴到发际线),青年是从下巴到前额中部的距离,婴儿是从下巴到眉毛的距离。手掌和手指的理想比例是1:1。指节的长度计算方式,近节(近节)、近节75%(中节)、中节75%(远节)。
图9:手部结构图1
图10:手部结构图2
图11:手部布线
脚部主要还是以整体的概括为主,可以先把脚分为踝关节、脚掌和脚趾三个部分。虽然脚的结构并不简单,但其中依然也是有一些比率可以让我们牢记的。比如脚掌和脚趾的比例大致为4∶1,而脚的整体长度和脚踝的比例则为3∶1。
图12:脚部肌肉结构-图片来源于网络
图13:脚部比例
图14:脚部布线
使用blender雕刻头部,分三个阶段,主要是初创形状阶段、主要造型阶段、精细刻画阶段。其中涉及到三种工作流,多边形建模工作流、重构网格工作流、多级细分工作流。随着模型的细节增多,工作流也会相应变化。
1)初创形状阶段:多边形建模+重构网格,一开始使用多边形建模方式,创建初步的几何体,然后使用重构网格完成头部几何造型,雕刻大体轮廓,一切都是大刀阔斧的进行,这里也需要保证网格颗粒度比较大,然后慢慢变化,直到中等形状开始出现。
2)主要造型阶段:重构网格,这个阶段的模型主要基本形态已经定型,需要添加局部的形状,我们会在一个相对长的时间里,去逐个细化对象的每一个局部,但这些都不是最细分的部分。
在3D建模中,术语“拓扑”是指3D模型的边缘分布和结构。渲染时看起来相同的两个模型可能具有非常不同的拓扑,拓扑影响3D建模和渲染的许多方面,包括:光线对模型表面的影响、模型网格的复杂程度、UV映射的关系、模型绑定和动画、渲染性能的影响。
对头部进行拓扑,可以按照眼框>嘴巴>鼻子>脸颊>额头>耳朵>头顶>后脑勺>下巴>颈部的顺序进行,当然这也不是绝对的,拓扑也是不断观察完善造型的过程。需要注意的是脸部的每个转折点。
图15:头部拓扑-图片来源于网络
完成头部网格拓扑后,由于眼睛、牙齿&牙龈、舌头、眉毛、睫毛是独立于头部网格,所以这些需要单独建模,其中牙齿&牙龈、舌头、眉毛、睫毛的通用性较强,往往可以找到相似的替代品,无需单独手动建模。眼睛的结构相对复杂,当然对于卡通风格化角色我们也可以概况一下,只需体现眼球的可视部分结构和质感即可,如此我们可以将眼球概括为眼球(eyeball)、瞳孔(pupil)、虹膜(iris)、角膜(cornea),要求不是特别高的话,也可以将虹膜合并到最外层的角膜。
图16:眼睛结构
相较于毛发系统生成的头发,使用多边形搭建头发模型,在面数上更可控,当我们赋予pbr材质后,同样可以模拟出发丝般的效果。使用贝塞尔曲线转网格的方法来塑造头发,需要根据原画设定好的发型归纳好头发的走向以及发块的形状。
以下是头发制作的具体步骤:
1)新建贝塞尔曲线,此路径决定发块的走向。
2)新建圆环曲线,此圆环决定了发块的横截面。
3)将”步骤2”新建的圆环添加为“步骤1”贝塞尔曲线的倒角物体。
4)调整圆环曲线的形状,以及贝塞尔曲线的顶线缩放(快捷键:alt+s),调整到适合原画角色发型的发块为止。
5)以上方式多制作几种发块,增加头发的层次。
最后复制相应的发块,摆放到角色头上,对造型满意后,将曲线转换成网格。
图17:Marvelous Designer服装建模
在blender中导出obj格式的角色模型,然后在Marvelous Designer打开从blender导出的虚拟模特。
服装打版也叫服装结构设计,可以分为五个步骤:
● 根据角色虚拟模特确定服装的风格造型,这是最重要的一步,在此基础上面进行下面的操作。
● 根据第一步确定好虚拟模特相符合的基础版型,比如裙装就使用裙子的基型,是上装就使用上装基型。
● 分析款式有什么样的要求,根据服装款式的要求在基础型上进行调整,最后达到新款式的要求。
● 添加缝纫、剪口、布纹、尺码、粘合衬等细节。
● 最后做出版式后,一定要检查版式的准确性和全面性。
确定好服装版式之后,先对服装进行重置网格,将三角面转为四边面。MD生成3D服装模型后,虽然我们进行了重置网格,但缝纫线周边无法避免的还是会出现三角面,后续增加细节会比较困难,所以需要对网格进行重新拓扑,这里有两种方法,一种是直接在MD中拓扑,另一种是在Blneder中借助插件进行拓扑,当然两者也可以结合使用。
MD拓扑:MD拓扑的逻辑是在板片上创建拓扑线并创建新的网格。3D/2D 窗口工具栏▶ 创建拓扑工具,当选择拓扑工具时,板片将会显示为透明状态。在2D及3D窗口中均可创建拓扑,当创建拓扑线时,如果形成一个封闭的图形,就会创建一个拓扑面。
图18:Marvelous Designer 拓扑
Blneder+Textool:将MD制作好的的服装模型导入到blender,借助Textool-Create UV Mesh将模型网格按照UV进行展平,这样相对于在3D网格上进行拓扑效率会大大提升,而且在拓扑时更直观。
图19:Textool Create UV Mesh
将服装模型导出,这里一般只需要导出所选板片的obj模型即可,导出参数勾选上统一的UV坐标-法线贴图,法线贴图可以精细的模拟折痕的细节,最后在blender或者Substance Painter中制作服装的材质。
利用DAZ3D的基础素材制作模型(尽量选用G8素材)。
1)使用G8或更高版本的素材,一般身体不需要改。只需调整面部特征。
2)将调整好的素材导入到blender做更细致的调整,由于直接导出fbx会有一些问题,这里需要用到DAZ to Blender或者DAZ Importer插件,同时将形态键一起导出到blender。
3)使用MD为角色制作服装,步骤同上。
在Blender中,可以为一个面关联一个独立的图像。UV用于定义二维纹理坐标系,称为“UV 纹理空间”。UV 纹理空间使用字母U和V来指示二维空间中的轴。UV 纹理空间有助于将图像纹理贴图放置在 3D 曲面上,然后图像可以用于渲染或实时显示。在3D视图中选择面选择模式,才能指定图像或修改活动网格物体对应的UV坐标。这样一个面可以有多张UV贴图。默认情况下,网格是没有UV的。首先得映射面,然后才能编辑它们 。展开模型的过程是在3D视图编辑器的编辑模式下进行的,过程中会在 UV编辑器创建一个或多个UV孤岛。
UV映射是将三维表面转换为平面位图图像的二维坐标系。原始曲面的每个顶点在 UV 贴图上都有一个坐标,中间的像素值在平面多边形曲面上进行插值,以实现高精度的纹理控制(特别选择U轴和V轴名称,以免与实际模型的 X、Y 和 Z 轴重名)。UV 贴图坐标值被组织成一个网格系统,其中图像本身出现在网格的 0-1 区域中,而该图像之外的区域只是向外重复图像。因此,传统上只真正使用了UV0-1空间。
图20:UV映射-图片来源于网络
展UV前先重置模型:快捷键Ctrl+A,选择【全部变换】。这是为了避免UV有拉伸。和缝纫一样,缝合线是图像/布拼接的位置。展开时,只要选中边,然后按下快捷键Ctrl-E,选择【标记缝合边】,即可将一条边标记为缝合线;使用快捷键Ctrl-E,选择【清除缝合边】即可清除标记。
工作流程如下:Create seams-展开-反复调整缝合线-手动调整UV,角色模型的UV展开方式有很多,具体如何拆分,需要综合考虑角色的风格、性能、精细度等。
在展开对称物体时,比如身体,沿对称轴标记缝合线,在展开时,可以把两个半边重叠到同一个纹理空间,这样右手和左手可以共用图像像素;左脚匹配右脚等等。
图21:展UV-图片来源于Blender官方
UDIM是对UV贴图和纹理工作流程的增强,它使UV贴图的生成和分配纹理变得更加简单。
从本质上讲,UDIM只是一个自动UV偏移系统,它将图像分配到特定的UV平铺上,它允许你对相邻表面使用多个较低分辨率的纹理贴图,从而产生更高分辨率的结果,而不必求助于使用单个、超高分辨率图像。为了理解UDIM工作流的好处,需要对UV贴图的工作原理有一个基本的了解。
使用UDIM工作流程,0-1、1-2、2-3等每个完整的图块部分都可以分配给它自己的独立图像映射,所有这些都在同一个表面内。每个图像也可以有自己的分辨率。UDIM工作流程只是一种相应命名图像的符号格式,因此它们会自动分配给特定的UV平铺。编号从UV原点开始,沿正方向向外移动十个图块(到 1010),然后重复堆叠在一起的行,向上移动9999行。
图22:UV图块
使用UDIM工作流程从实际几何体的UV映射开始。在此阶段决定如何划分模型,通常基于项目所需的分辨率程度。对于一个普通的角色项目,可以分成头部一个图块,身体一个图块。如果想要更高的分辨率,还可以将手和脚分配到单独的图块上。
如何在Blender中使用UDIM分块?
1)先选中角色模型,在UV编辑器中新建图像,注意图像选择平铺。
2)在右侧【图像】菜单,源选项下选择【UDIM分块】。
3)在UDIM分块下【添加分块】,设置所需的分块数量。
本文主要介绍了3D卡通虚拟数字人角色从风格定义到建模拆分UV的工作流程及方法,前期风格定义了角色性格及形象,通过3D建模技术还原最初的构想,前期的风格定义及三视图起到了非常重要的作用,为后续建模提供参考的同时,也避免了不必要的返工。角色建模是一个综合性非常强的工作,除了要熟练软件操作,还需要了解人体的结构、比例、动作等方面的知识。当我们终于将角色模型搭建完成,这些也仅仅完成了整个虚拟数字人角色设计的二分之一,在下一篇中,我们继续分享着色和驱动部分的知识。
参考文献