虚拟人技术思考(一):3D内容生产的技术流程
或因元宇宙的概念兴起,或因华智冰、柳叶熙等超写实数字人视频的传播,或因A-SOUL、彩虹社等VTuber团体的大热,越来越多的人们关注起了虚拟人。虚拟人是3D数字内容的重要载体,其制作主要依赖计算机图形学(CG)的相关技术。本文是虚拟人技术分析与思考系列的第一期,我们先来了解一下业界当前主流的3D内容生产流程。
3D内容生产的前期环节主要是美术设定、人物设定等,今天我们主要聚焦在这些步骤后的技术流程上,去讨论3D内容生产的技术流程,主要包括建模、纹理贴图、绑定、动画制作、视效制作、灯光设置、渲染、后期处理等环节。
在讲具体流程前,我们先简单介绍一下数字内容创作(Digital Content Creation)软件。数字内容创作软件简称为DCC软件,其中以Maya,3DS Max,Cinema4D,Blender,Houdini等为主流软件,它们基本可以覆盖后期处理之前的各个环节。而在针对特定环节,也有更加专业化的软件,比如高效建模工具ZBrush、专业材质软件Substance Designer、节点式后期软件Nuke等。
当然虚拟世界除了视频,还需要交互式的内容生产,也就是游戏化内容,3D游戏引擎最典型的代表是Unity 3D和Unreal Engine,而游戏引擎中也会涉及到模型运动、灯光、渲染等生产环节。
接下来我们逐一了解一下三维动画生产的这些技术环节具体在做什么:
建模可以简单理解为在虚拟世界“捏泥人”的过程。模型师一般需要原画或照片做参考,制作尽量还原参考图的3D模型。如果是物理世界的真实物体,也可以通过三维重建技术制作模型。不过把模型“捏”出来并不是建模的结束。为了确定其在运动时的形变单元以及与贴图的映射关系,还需要确定模型的拓扑结构,也就是所谓的“布线”。简单来说,布线就是将模型表面划分为网格状的区域,因此3D软件也将模型称为“网格体”。
根据原画进行建模
2. 纹理(Texturing)
UV展开与纹理映射
3. 绑定(Rigging)
混合变形(Blend Shape)在一些DCC软件里也叫Morph Target,是解决非刚性形变的主要手段。以面部表情为例,我们通常将其拆解为若干个面部运动单元,如闭左眼、抬右眉、左嘴角上扬等等,每个运动单元会在网格层级像建模一样捏出对应的表情模型,并以无表情的中性脸(neutral face)为基础,记录这些表情脸的相对顶点位移,并将这个运动过程线性近似,赋予0-1之间的系数表达中间状态(如半闭眼),于是一个特定表情就可以近似地表示为这些基础表情变换的线性组合,而这些表情变换就是blend shapes。除了面部表情,blend shape还常用于辅助骨骼运动进行表皮的修型,比如膝盖、肘部由于骨骼绑定自身原理的局限性,会在弯曲程度较大时出现折痕、撕裂等不合理的表现,此时引入blend shape附加额外的非刚性变换就可以修成更合理的形态。
在实际生产中,直接调节底层骨骼和blendshape是相对低效的,所以基于这些底层绑定,我们会制作控制器以便动画师更高效地工作。控制器(controller)的本质是一种驱动关系,一个控制器可以连接若干个骨骼/或blendshape,以一定权重控制其属性值。引入控制器的目的是让动画师更加简单高效地制作动画,例如可以绑定出一键握拳的控制器从而节省一根根手指头调节配合的时间。这里我们再着重介绍FK和IK控制器。FK即正向运动学(Forward Kinematics),人体骨骼可以看成多条运动链(Kinematic Chain),上级骨骼运动时,会自然带动下级的各个骨骼一起产生全局运动,这就是FK。而IK指反向运动学(Inverse Kinematics),是以末端位置倒推上级骨骼的位置旋转,例如我们需要手摸到桌子上,会先确定手的位置,再根据物理约束反推小臂、大臂的位置旋转,这就是IK。
在实际应用中,绑定方案是由具体的项目需求决定的。比如在一些对客户端体积、运行效率要求高的手游中,会采用纯骨骼绑定的方案,就连面部表情也由虚拟的骨骼驱动网格体运动。
在实际应用中,绑定方案是由具体的项目需求决定的。比如在一些对客户端体积、运行效率要求高的手游中,会采用纯骨骼绑定的方案,就连面部表情也由虚拟的骨骼驱动网格体运动。
动画就是让3D模型动起来,分为主动动画与被动动画两大类。
主动动画相对好理解——基于绑定好的控制器,动画师可以操作骨骼进行位移旋转,以及面部表情进行变换,并按照表演需求将一个个姿态(pose)与表情记录为关键帧(key frame),这个行为俗称“K帧”,主动动画制作本身也常被称为“K动画”。DCC软件会将关键帧通过光滑曲线进行连接以便任意插值,动画师也可通过进入曲线编辑器调节关键帧位置、曲线斜率来实现细节打磨。动画制作是个知易行难的工作,好的动画效果要兼顾运动上的合理性和表演上的艺术性,业内最经典的指导性理论是迪士尼的十二条动画法则。
调节角色动画及记录关键帧
5. 视觉效果(Visual Effects)
角色技能特效VFX
6. 灯光(Lighting)
虚拟环境中的灯光是通过建立数学模型和算法对物理世界光照进行模拟而实现的,细节我们在这里不做展开。在DCC软件中,灯光设置的实现是通过创建平行光、点光源、面光源等光源,并调节其强度、颜色、方向等属性实现的。灯光是场景不可缺少的重要部分,基础的灯光运用能够塑造被摄体的明暗关系,打造画面的立体感,高级的灯光运用能够进行特定的艺术表达。
不同的灯光配置可使同一个角色产生截然不同的视觉效果
7. 渲染(Rendering)
光栅化(左)与光线追踪(右)示意图*
对于视频型的内容生产,在将3D素材渲染成片后,往往还有剪辑、混音、2D视效等后处理流程,这个环节与传统2D视频制作与处理的技术是相同的。
*致谢:感谢太极图形的胡渊鸣博士提供的内容优化建议