1987WEB视界-分享互联网热点话题和事件

您现在的位置是:首页 > 人工智能AI > 正文

人工智能AI

3D虚拟数字人设计探索和落地实践(上)

1987web2023-10-07人工智能AI128

编者荐语:

数字化技术正在飞速发展,3D虚拟数字人已经成为数字娱乐、虚拟现实和人机交互等领域中不可或缺的角色。本文以3D虚拟数字人设计探索和落地实践为主题,介绍了虚拟数字人设计的基础知识和制作流程可为数字人设计师、动画制作人、游戏开发者和虚拟现实从业者提供重要参考

3D虚拟数字人设计探索和落地实践(上)

亚信科技(中国)有限公司

摘要虚拟数字人已经广泛应用于电影、游戏、虚拟现实等领域。本文介绍3D虚拟数字人的设计和实践,深入探讨了数字人设计过程中的关键技术,包括数字人形象的定义、人体建模技术、展UV,并详细讲述了角色建模的方法及步骤,旨在帮助读者更好地理解和应用3D虚拟数字人的设计和制作技术,为数字人的落地实践提供有益参考

引言

2021被认为是元宇宙元年,元宇宙概念大热,但目前仍在布局阶段。相比之下,元宇宙未来的重要组成部分-虚拟数字人,已走进人们的生活。

一个3D虚拟数字人角色的制作流程,可以分为概念设定-3D建模-贴图-蒙皮-动画-引擎测试六个步骤,涉及到的岗位有原画师、模型师、动画师等。角色概念设定、贴图绘制一般是由原画师来完成。建模、装配(绑定蒙皮)、角色动画,是由3D设计师来制作完成。本文主要讲述3D虚拟数字人从0到1的设计过程,让大家对虚拟数字人角色制作有更深的了解。

数字人形象

(一)风格探索

基础人物形象风格是至关重要的一环。在确定风格前,需要进行漫长的探索。通过提炼角色风格、兼顾不同需求,进而寻找到具备普适性和拓展性的基础角色形象。决定一个角色的六要素:种族、性别、年龄、时代背景、职业、性格。前期需要建立情绪版,做大量分析,确保角色风格的差异性和可识别性。

图1:情绪版参考-图片来源于网络

以小雅为例,对于大部分二次元用户来说,对日漫有着明显的倾向,但考虑到放到场景里面显夸张,跟企业气质和相关业务线违和。倾向性明显的人设,稍有不慎就会显得幼稚或夸张。我们知道数字虚拟人从美术风格上可以分为3D高保真、3D写实、3D卡通、2D真人、2D卡通等,从元宇宙的应用场景考虑,先排除了2D的形式,最终从性能及美观度两方面考虑,设定小雅为3D卡通的美术风格。

为了突出人物性格的同时,兼顾企业的品牌基因,在服装设计中加入企业元素,结合现代时尚元素以保持时尚感。

图2:服装参考-图片来源于网络

(二)角色三视图

小雅最终设定为年轻干练的职场精英女性,性格沉着冷静,衣着轻熟干练。由视觉设计师输出人物三视图,三视图将虚无抽象的文字描述转化为看得见的形象,为建模提供了重要的参考。

图3:角色三视图

图4:角色模型

3D角色建模

3D建模为构建虚拟人形象的基础,重点在于实现细节的精细还原。blender作为一款开源的三维软件,提供了非常全面的3D图形创作套件。它拥有用于建模、贴图、着色、动画、合成、渲染、视频编辑等各种工具,对于角色创作非常方便,基本一款软件就能搞定大部分的工作。blender最大的优势就是开源,不用担心版权问题。其次结合blender丰富的插件,能大大提升建模效率。

(一)常用的3个建模方法

3D卡通角色的建模的方式有许多种,最终使用何种建模方式,取决于哪一种更适合自己,和取决于要建什么模型,以下列举三种常用的建模方式,多边形建模、雕刻建模+拓扑、逐面建模。

多边形建模:从最基础的几何体开始建模,基于基本形状,一点一点地往上面添加细节,对于新手建模师而言,多边形建模更容易入门,且能够提升对人体结构和布线的理解。

一雕刻+拓扑(次世代建模):雕刻+拓扑对于人体结构需要一定的了解,对于细节把控更加到位,为后续高模烘低模提供基础,这也是我们常说的次世代建模,耗时相对较长,对细节的把控更加到位。

逐面建模:这种方法也叫poly2poly,逐面建模法是指使用点、线、面的形式,通过挤压、合并、环切等方式,将形体搭建出来,其过程类似于用一块块的砖头砌起一面墙那样。

当然技术是相通的,由于身体的建模以体现体块结构为主,所以往往多边形建模的效率更高,而对于头部的精细化建模使用雕刻更能体现造型细节,对于人体不同的部位,也可以结合使用多边形+雕刻+拓扑的形式。没有最佳的建模方法,合适才是最重要的,每个人都有自己的建模习惯,对于经验老道的建模师而言,他们会在多种建模方法之间按需切换。

(二) 优质模型的特性

在建模开始之前,我们需要了解一个好的角色模型有哪些特性。

准确的造型:造型的准确性直接决定了角色的形象,三视图为角色建模提供了最直观的参考,因此显得尤为重要。

合理的网格布线:合理的网格布线不仅需要准确体现造型,也需要考虑后续网格动画的形变,尽可能使用四边面搭建模型。

尽可能低的面数:无论是多边形建模还是次世代建模,最终到引擎里面都是低模,考虑到性能问题,需要让模型的网格在满足造型的前提下,尽可能精简面数。

图5:图片来源于blender官方

(三) 卡通角色建模步骤

卡通角色模建大致可以归纳为七个核心步骤,分别是:规划和搭建身体以及四肢的大体形状结构、为身体添加体积、手和脚的建模、雕刻头部、重新拓扑头部、多边形头发建模、服装建模。

1.规划和搭建身体和四肢的体块造型

拿到三视图,我们首先要做的第一件事就是在blender里面设定参考图,基于三视图,快速规划身体和四肢的体块,这里暂时不需要过于纠结细节部位,需要注意的是在搭建体块造型的时候,需提前考虑好体块的穿插走位,以便后续深入塑造身体各部分的体积。

图6:body体块-图片来源于网络

图7:body网格-图片来源于网络

2.为身体添加体积

此步骤主要处理身体各个关节处的网格,为手臂和躯干添加更多的细节,对关节周围的网格进行合理的布线,确保关节处弯曲时,网格也会做出合理的变化。

图8:关节处布线-图片来源于网络

3.手和脚的建模

1)手部建模

在手和脚的建模中,对于手部脚部的比例及结构掌握是必不可少的,从外形上看,手是由手掌和手指构成,而手掌可以理解成由三块肉垫构成,手指由近节、中节、远节三部分构成,其中拇指没有中节指骨。手掌侧的手指较短,手掌上的折痕不与手指和手部的连接线重合。

成年人手的长度和脸相等(下巴到发际线),青年是从下巴到前额中部的距离,婴儿是从下巴到眉毛的距离。手掌和手指的理想比例是1:1。指节的长度计算方式,近节(近节)、近节75%(中节)、中节75%(远节)。

图9:手部结构图1

图10:手部结构图2

图11:手部布线

2)脚部建模

脚部主要还是以整体的概括为主,可以先把脚分为踝关节、脚掌和脚趾三个部分。虽然脚的结构并不简单,但其中依然也是有一些比率可以让我们牢记的。比如脚掌和脚趾的比例大致为4∶1,而脚的整体长度和脚踝的比例则为3∶1。

图12:脚部肌肉结构-图片来源于网络

图13:脚部比例

图14:脚部布线

4.雕刻头部

使用blender雕刻头部,分三个阶段,主要是初创形状阶段、主要造型阶段、精细刻画阶段。其中涉及到三种工作流,多边形建模工作流、重构网格工作流、多级细分工作流。随着模型的细节增多,工作流也会相应变化。

1)初创形状阶段:多边形建模+重构网格,一开始使用多边形建模方式,创建初步的几何体,然后使用重构网格完成头部几何造型,雕刻大体轮廓,一切都是大刀阔斧的进行,这里也需要保证网格颗粒度比较大,然后慢慢变化,直到中等形状开始出现。

2)主要造型阶段:重构网格,这个阶段的模型主要基本形态已经定型,需要添加局部的形状,我们会在一个相对长的时间里,去逐个细化对象的每一个局部,但这些都不是最细分的部分。

3)精细刻画阶段:多级细分工作流,这个阶段的模型形状细节基本都具备了,我们只在其基础之上增加或强调某些转折边,细化勾勒褶皱和纹理,譬如皮肤上的褶皱和纹理。

5.头部拓扑

在3D建模中,术语拓扑是指3D模型的边缘分布和结构。渲染时看起来相同的两个模型可能具有非常不同的拓扑,拓扑影响3D建模和渲染的许多方面,包括:光线对模型表面的影响、模型网格的复杂程度、UV映射的关系、模型绑定和动画、渲染性能的影响。

对头部进行拓扑,可以按照眼框>嘴巴>鼻子>脸颊>额头>耳朵>头顶>后脑勺>下巴>颈部的顺序进行,当然这也不是绝对的,拓扑也是不断观察完善造型的过程。需要注意的是脸部的每个转折点。

图15:头部拓扑-图片来源于网络

完成头部网格拓扑后,由于眼睛、牙齿&牙龈、舌头、眉毛、睫毛是独立于头部网格,所以这些需要单独建模,其中牙齿&牙龈、舌头、眉毛、睫毛的通用性较强,往往可以找到相似的替代品,无需单独手动建模。眼睛的结构相对复杂,当然对于卡通风格化角色我们也可以概况一下,只需体现眼球的可视部分结构和质感即可,如此我们可以将眼球概括为眼球(eyeball)、瞳孔(pupil)、虹膜(iris)、角膜(cornea),要求不是特别高的话,也可以将虹膜合并到最外层的角膜。

图16:眼睛结构

6.边形头发建模

相较于毛发系统生成的头发,使用多边形搭建头发模型,在面数上更可控,当我们赋予pbr材质后,同样可以模拟出发丝般的效果。使用贝塞尔曲线转网格的方法来塑造头发,需要根据原画设定好的发型归纳好头发的走向以及发块的形状。

以下是头发制作的具体步骤:

1)新建贝塞尔曲线,此路径决定发块的走向。

2)新建圆环曲线,此圆环决定了发块的横截面。

3)将步骤2新建的圆环添加为步骤1贝塞尔曲线的倒角物体。

4)调整圆环曲线的形状,以及贝塞尔曲线的顶线缩放(快捷键:alt+s),调整到适合原画角色发型的发块为止。

5)以上方式多制作几种发块,增加头发的层次。

最后复制相应的发块,摆放到角色头上,对造型满意后,将曲线转换成网格。

7.Marvelous Designer服装建模

完成角色基础模型后,需要将角色调整为A-pose,这样对于布料模拟时更贴合角色,给角色设计衣服,这里我们结合软件Marvelous Designer来给角色进行服装建模。

图17:Marvelous Designer服装建模

1)导入虚拟模特

在blender中导出obj格式的角色模型,然后在Marvelous Designer打开从blender导出的虚拟模特。

2)设计服装版式

服装打版也叫服装结构设计,可以分为五个步骤:

根据角色虚拟模特确定服装的风格造型,这是最重要的一步,在此基础上面进行下面的操作。

根据第一步确定好虚拟模特相符合的基础版型,比如裙装就使用裙子的基型,是上装就使用上装基型。

分析款式有什么样的要求,根据服装款式的要求在基础型上进行调整,最后达到新款式的要求。

添加缝纫、剪口、布纹、尺码、粘合衬等细节。

最后做出版式后,一定要检查版式的准确性和全面性。

3)网格拓扑

确定好服装版式之后,先对服装进行重置网格,将三角面转为四边面。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

4)导出模型

将服装模型导出,这里一般只需要导出所选板片的obj模型即可,导出参数勾选上统一的UV坐标-法线贴图,法线贴图可以精细的模拟折痕的细节,最后在blender或者Substance Painter中制作服装的材质。

(四)DAZ Studio辅助建模方案

利用DAZ3D的基础素材制作模型(尽量选用G8素材)。

1)使用G8或更高版本的素材,一般身体不需要改。只需调整面部特征。

2)将调整好的素材导入到blender做更细致的调整,由于直接导出fbx会有一些问题,这里需要用到DAZ to Blender或者DAZ Importer插件,同时将形态键一起导出到blender。

3)使用MD为角色制作服装,步骤同上。

展UV

(一)什么是UV

在Blender中,可以为一个面关联一个独立的图像。UV用于定义二维纹理坐标系,称为UV 纹理空间。UV 纹理空间使用字母U和V来指示二维空间中的轴。UV 纹理空间有助于将图像纹理贴图放置在 3D 曲面上,然后图像可以用于渲染或实时显示。在3D视图中选择面选择模式,才能指定图像或修改活动网格物体对应的UV坐标。这样一个面可以有多张UV贴图。默认情况下,网格是没有UV的。首先得映射面,然后才能编辑它们 。展开模型的过程是在3D视图编辑器的编辑模式下进行的,过程中会在 UV编辑器创建一个或多个UV孤岛。

(二)UV映射

UV映射是将三维表面转换为平面位图图像的二维坐标系。原始曲面的每个顶点在 UV 贴图上都有一个坐标,中间的像素值在平面多边形曲面上进行插值,以实现高精度的纹理控制(特别选择U轴和V轴名称,以免与实际模型的 X、Y 和 Z 轴重名)。UV 贴图坐标值被组织成一个网格系统,其中图像本身出现在网格的 0-1 区域中,而该图像之外的区域只是向外重复图像。因此,传统上只真正使用了UV0-1空间。

图20:UV映射-图片来源于网络

(三)UV通道

在网格标签页的UVMaps面板有一个列出所有为网格创建的UV映射的列表视图。被选中的映射会在UV/图像编辑器显示。单击相机图标,启用渲染该UV贴图。

(四)UV展开

展UV前先重置模型:快捷键Ctrl+A,选择【全部变换】。这是为了避免UV有拉伸。和缝纫一样,缝合线是图像/布拼接的位置。展开时,只要选中边,然后按下快捷键Ctrl-E,选择【标记缝合边】,即可将一条边标记为缝合线;使用快捷键Ctrl-E,选择【清除缝合边】即可清除标记。

工作流程如下:Create seams-展开-反复调整缝合线-手动调整UV,角色模型的UV展开方式有很多,具体如何拆分,需要综合考虑角色的风格、性能、精细度等。

在展开对称物体时,比如身体,沿对称轴标记缝合线,在展开时,可以把两个半边重叠到同一个纹理空间,这样右手和左手可以共用图像像素;左脚匹配右脚等等。

图21:展UV-图片来源于Blender官方

(五)UDIM Workflow

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分块下【添加分块】,设置所需的分块数量。

4)将模型的UV孤岛分配到各个UDIM分块。

总结

本文主要介绍了3D卡通虚拟数字人角色从风格定义到建模拆分UV的工作流程及方法,前期风格定义了角色性格及形象,通过3D建模技术还原最初的构想,前期的风格定义及三视图起到了非常重要的作用,为后续建模提供参考的同时,也避免了不必要的返工。角色建模是一个综合性非常强的工作,除了要熟练软件操作,还需要了解人体的结构、比例、动作等方面的知识。当我们终于将角色模型搭建完成,这些也仅仅完成了整个虚拟数字人角色设计的二分之一,在下一篇中,我们继续分享着色和驱动部分的知识。

参考文献

[1]元宇宙元年开始的思考·https://yuanyuzhouneican.com/article-111622.html

[2]Learning Blender:A Hands-On Guide to Creating 3D Animated Characters,Second Edition.

[3]Blender 3.2 参考手册:https://superlove.cc/