Fork me on GitHub

超写实数字人技术探索

以下文章来源于 https://zhuanlan.zhihu.com/p/635416788

导读 在虚拟世界中创造真假难辨的实时3D人类角色,彷佛隔着屏幕真得有一个人可以互动,一直都是图形学界的圣杯性问题之一。在社会大众的朴素理解中,这种超写实品质的渲染,是一种进阶问题,是需要把"赛璐璐"、"次世代"的技术做到极致才能挑战的。但事实上,制作"赛璐璐"、"次世代",和制作超写实虚拟人,是目的相似但原理和手段截然不同的两种问题,正如用笔写字和用电脑打字一般。

随着3A游戏、数字孪生和元宇宙的驱动,这方面越来越受重视,优秀的团队业也层出不穷。但和国外相比我国在这方面总体水平还是薄弱一些的。这种薄弱未必是纯粹的技术差距造成的,还和一些历史原因造成的文化断层,以及认知错位有关。尤其是在科学和艺术的区分和结合上。这些元知识的缺失,会导致我们在实际操作中,忽视原理是否合理,而更在意技术形式,从而事倍功半。

希望能通过这次的论坛,普及一些超写实虚拟人的元知识,增进行业和社会对超写实虚拟人领域的关注和认识。希望通过本次分享,能够普及一些超写实虚拟人的元知识,增进行业和社会对超写实虚拟人领域的关注和认识。同时带来一些有深度的技术内容,与大家有更深入的了解与交流。

本文主要包括以下几大部分内容:

主要内容包括:

  1. 常见误区

  2. 超写实虚拟人的两套制作思路

  3. 形与色:扫描重建与色彩科学

  4. 远不止于引擎内:Lookdev 与原教旨主义 PBR

  5. 4D 与绑定动画


分享嘉宾|宋征 杭州荒诞智能科技

编辑整理|晏世千

出品社区|DataFun


01/常见误区

首先来介绍一个常见误区:高精度高面数高参数一定等于好效果吗?

上图中两张图的贴图分辨率差了一倍,但其实视觉效果并没有差异。这就说明了单纯提高GPU性能、暴力增加各种参数,很难对超写实虚拟人的效果进行提升。这是一种企图用规模解决所有问题的朴素心理。然而创新是难以通过规模代偿的,只有通过从第一性原理出发,自顶向下设计,进行思路上的改变甚至颠覆,才能提升超写实虚拟人的渲染效果。

为什么两张图片几乎没有区别呢?将右侧4k的图片减去左侧2k的图片,像素差值是下方的一张蓝噪声图片。每一个像素和周围的像素是负相关的,这样一种现象就会被人脑过滤掉。这个问题和心理学相关。

格式塔心理学认为,认知是动态的,是一个不断自底向上,不断简化、不断统一的过程。整体大于局部,整体是由对比体现的。我们感受的屏幕上的明暗,是由亮部和暗部的对比产生的,所以在素描中会加重明暗交界线。色彩变化是由暖色和冷色的对比产生的,所以会在绘画的交界处加入对比色。当这种高维对比变得复杂而广泛的时候,就会形成一种叫Pattern的东西(模式、图案、特征),这也是AI领域主要研究的课题之一。视神经的工作方式类似卷积神经网络,更关心每个像素和周围像素的关系。当形成蓝噪声的时候,每个像素都和周围高度负相关,就会被人脑里的相关机制直接过滤。

这也就解释了为什么高精度、高面数、高参数不一定等于好的效果。

02 /超写实虚拟人的两套制作思路

超写实虚拟人制作思路分为构建式和整体式。

构建式类似于过程化的思路,指的是对现实中的人的机理进行彻底的解构,掌握从皮肤纹理、肌肉解剖到毛孔结构等诸多细节规律,再从这些细节重新构建虚拟人。

解构和重组的关系正如科学与技术的关系一样。这是很容易得到实践的一种思路。构建式是一种历史悠久和传统的方法。从文艺复兴开始,欧洲的画家就开始用这样的方式进行绘画。达芬奇就是其中的先行者。

这种做法的优点是每个环节都可控。而缺点是需要掌握的细节过于庞杂。

整体式是随着3D扫描、统计学和人工智能等学科发展出的另一种超写实虚拟人的制作思路。我们可以把真实世界的人的外观表现、肌肉运动等,整体看成是一组含时间维度的高维向量。不需要知道它具体是怎样的表现或者运动规律。只需要知道,用数学工具尽可能低误差地拟合这组高维向量,就可以得到超写实虚拟人。正如下赢围棋9段的AlphaGo的作者并非专业围棋手一样。整体式的思路,真正在背后起执行作用的是数据和数学规律,而非人。

整体式的优点在于方法简单而明确,效果可预期。缺点是依赖Ground Truth(真实数据)的获取。

其实构建式与整体式这两种方法并非是对立的关系,根据需求和技术成熟程度,在超写实虚拟人涉及到的不同环节,会适用不同的方法,甚至两种方式互相穿插。比如贴图和模型制作方面,多使用整体式的3D扫描策略。也有采集了足够可信的扫描贴图后进行构建的。渲染技术方面,多使用构建式的各种光照技术组合,如3S、Wrinkle Maps、Dual Lobes、Cavity Map等技术杂糅。学术界对于基于机器学习或者可微渲染的一些整体性的方法也有不少探索。保证渲染效果方面,可以使用整体式的Lookdev方案。这需要有一个愿意出镜的真人演员。驱动方面,有基于构建式的Snappers Rigging,也有整体式的基于4D序列的拟合。

整体上,需要对需求、成本、技术成熟度、复杂度等等多个维度综合考虑。

由于要处理的问题是超写实虚拟人,无论是构建式还是整体式,这都是一个极其严谨的问题,更类似科学,而非艺术。关于这一点的讨论,在西方的文化背景下可能会更容易接受一些。达芬奇研究解剖、黄金分割比、悬垂链方程,堪称最早的技术美术。此外还有丢勒网格画法的"人肉渲染器",巴赫推广的十二平均律。西方一直把艺术和数学紧密结合在一起。而东方传统艺术的思路更在意气韵,更希望体现一苇渡江式的浪漫。而这件事在严谨的渲染系统里想要做到,恐怕还有漫长的路要走。

在现阶段,如果用浪漫创作的思路去审视超写实数字人,就很容易导致技术与创作难以配套,事半功倍,1+1<2的局面出现。把创作做好拿到前期,把创作体现在真人演员的选取和妆容、服饰安排上,集中全力进行对真人演员的数学拟合,路线会更平坦些。

我们所面对的问题就是如何拟合现实,包括以下四个方面:

  • 形与色
  • 在光线下变化
  • 在视角下变化
  • 在动画中变化

03 /形与色:扫描重建与色彩科学

认知是物理和心理的交界点,形与色是一体两面的问题。

形可以通过3D扫描技术来解决。

3D扫描技术是一种比较成熟的技术,尤其是相机阵列进行模型重建的技术。理想情况下,与真实物体的误差可达到1mm以内。关于3D扫描模型形状的具体技术细节, 包括提取关键点->配对->稀疏点云->稠密点云->三角化等,与SLAM等技术差别不大,在此不做赘述。

为了渲染出真实物体,需要得到真实的"颜色",所以将重点阐述关于"色"的内容。

先来考虑这样两个问题:

  • 如何确定我感觉到的颜色,和别人眼中的颜色是同一个?
  • 色彩感受能数据化么?

对于这两个哲学般的问题,可能很多人都会说,第一个问题没有办法确认,第二个问题可以用RGB值来表示。而其实这两个问题是同一个问题,却难以让国人产生联系。这就是我国近现代科技发展断层的表现。

对于国内的环境来说,由于近现代的各种原因造成的科技与文化的发展断层,导致输入到我们手中的是一些终端舶来品。我们直接就接触到了光的三原色、PBR渲染等概念,仿佛这些概念没有由来,本身就是原子性的。但其实它们有着一些重要的前置学科,比如色彩科学,在国内的普及度不高,通常仅限于对线性和Gamma空间的认识。

色彩科学的研究是一个被忽略的科学。它来自于现代物理学和现代艺术的一个交界点,即银盐摄影。

1931年,有科学家进行了观察者色彩匹配实验。观察者通过一个挡板上面的洞看到后面的两个白板;右边的白板被某个测试光源照亮,左边是被RGB 三个基色混合照亮。要求观察者,通过调整RGB 三个光源的强度,使得左右两边的颜色看起来一样。

比如上图中,左边是580nm绿光,右边是三基色以(0.5,0.81,0.4)的比例调配,可以看出,右边会更亮一些。

将右边三基色比例调整为(0.5,0.79,0.4),这时右边看起来又暗了一点。

再调整比例为(0.5,0.80,0.4),这时左右两边看起来完全一样,连接缝都看不到了。

这时记录下这个比例,对于这一观察者来说580nm绿光就可以用这样的RGB组合来表示。

国际光照协会(CIE)的科学家们对每一个被测者从380nm到780nm光源逐一进行实验。这个实验进行了多轮,总计49名被测者,上万次实验。每做一次实验就在这个图像上画一个点。每一纳米都有五十个样本,几乎都在同一个点上,最后再求一个平均值,就绘制了这样一条曲线。其中有一段曲线变成了负数,是因为这一段曲线的波长无论怎么调都没法变成一样的,最后只好在左边也加了一盏红灯后,才让左边和右边平衡。因此认为左边是一个负的红灯。

对这个数据进行一定的转换,就形成了色彩空间。而在显示器发展的历程中,由于不同的需求,以及成本和技术的限制,诞生了各类色彩空间子集。这其中包括我们非常熟悉的sRGB。而建立在这种实验手段上的认知科学,就被称为色彩科学。

同时人们还将色彩这种心理感知,通过光学与物理学中最本质的现象之一------黑体辐射联系在了一起,诞生了色温、显指、可见光谱等概念。把色彩科学变成了一门可以只凭数学推理存在的形式系统。

科学家们发展了用于得到物体真实反照率的卢瑟条件。而这正对应了此前只存在于艺术家脑海中的一个概念,物体的固有色。凭借色彩科学,绝对色感从一个天赋,变成了一个可以普及给更多人的技术。

这里简单介绍一下色彩空间三要素。

**色域:**首先是sRGB 规定了RGB 三个色度坐标,也就是由此确定了三个顶点。三个顶点一旦确定,那么形成的三角形也就确定下来了。

**白点:**sRGB 也规定了白点,也就是规定了三角形的中心。

**gamma:**sRGB 的gamma ≈ 2.2。也就是说切分这个三角形,开始切分的很细,后来越来越粗。

色彩空间的标准不同,就诞生了色彩管理这个需求。为了让画面在不同的环境下看上去一致,并且不同的素材能够很好地融合,需要对素材的全流程进行管理。在扫描、拍摄、渲染、直到显示的所有环节中,都需要考虑色彩处于哪个空间中,如何正确地转换空间而不失真,使得颜色在不同的坐标系下代表的含义一致。Scene Refer、Tone Mapping等。这些看似完全是科学技术的操作,就是现代影视艺术行业的标准技法。这在超写实虚拟人的实现中有着关键的作用。接下来就将介绍关键在哪里。

04 /远不止于引擎内:Lookdev与原教旨主义PBR

1.什么是Lookdev

Lookdev是一套方法论和流程,是PBR渲染的重要组成部分。

PBR渲染是基于物理的渲染(Physical Based Rendering),即借助物理学, 尤其是光学的一些形式、方法和结论,来呈现逼真画面的方法。完整的PBR渲染,包括:基于物理的光学数学模型、基于物理的表面光学数据、基于物理的光照环境、成像原理与渲染、色彩科学。其内核与科学仿真的有限元拟合方法别无二致。

渲染依然是一种借助科学手段的创作,创作的是虚构事物。Lookdev就是搭建一座从现实到虚拟的桥梁,通过采集光照、拍摄参考等方式,控制材质、成像、色彩管理体系等诸多变量,提供一个可靠的素材审查环境和可靠的制作标杆,使得人为创作的虚拟事物依然有高度可信性。

绘画是使用自古以来总结的大量经验性的方法论,比如明暗调子、冷暖对比等相对主观方式,以及画法几何、透视关系等相对客观方式,还有笔触、色彩等运用技法,呈现并操控画面。

而PBR渲染则是利用光学、物理学、数学、色彩科学等科学体系化和理性的手段,从自然界深刻的基本原理开始,尽可能构建一个虚构但可信的"世界",即一段包含形体、光照质感、动画、视角的复杂的时空关系。

2.为什么需要做Lookdev

既然PBR渲染是在计算资源有限的情况下尽可能模拟物理光照的结果。其原理基本是可信的。那么就可以在虚拟世界中构架一个和现实世界一样的光照环境,一样的拍摄参数,一样的物体外形。如果能把渲染的物体在控制这些变量的情况下,通过调整一些物理的参数,使得它跟照片尽可能接近,那么以假乱真也不再是可望而不可及的事。

3.如何做Lookdev

首先是确定中心点和方位。

我们不妨假象一个位置和高度,是虚拟的模特所站的位置,也是现实的模特参考拍色的位置。我们可以把这个点称为中心点。Lookdev的所有操作都是围绕这个中心点展开的。接下来的(1)、(2)、(3)便可构成一组参考素材。

(1)获得场景光照信息

获得中心点主光方位、照度等信息。方位信息可以对场景进行全景激光3D重建获得。照度信息可以通过光谱仪或者光度计测量,再带入各类灯光的能量模型中。为了简便起见,主光应尽可能满足卢瑟条件。

获得中心点出的环境球。一般是通过安装短焦镜头的相机,和多轴云台的配合,在不同的角度和不同的曝光时间下进行曝光,形成一个360x360的曝光包围盒。在这个过程中,所有素材都需要在合适的色彩空间下。

这样就可以获得环境中真实且正确的主光源信息,以及环境光信息。

(2)获得场景光照辅助信息

拍摄中心点处的灰球和铬球,以及色卡。灰球是用Munsell N5涂料涂的一个哑光圆球, 其涂料在可见光谱上几乎是一条直线,反照率均接近18%,也叫18灰。

18灰有三种物理意义:

  • RGB相等,可看为白色,可用于标定色温。
  • 且已知每吸收100份能量返回18份,可用于标定照度和曝光。
  • 18%是日常绝大多数物体反照率的几何平均(自然界中最暗的是煤灰,最亮的是太白,反照率分别为4%和96%,几何平均为18%),可以认为是心理学上的中性灰。

而色卡通常有几十个颜色。全部都是调配过的染料,有着特定光谱。

灰球主要用来展示环境的漫反射情况,比如下图中可以明显看出主光源来自右侧。铬球用来展示环境中的高光情况。高光和漫反射加在一起基本上就是一个物体受到的全部光照。色卡则可以通过其实际演色构成的矩阵,反向校准主光源。

(3)拍摄身处中心点的参考模特

在环境光照和在此光照下的灰球、铬球都拍摄完毕后, 如果在引擎中摆放一样的虚拟灰球和虚拟铬球,在严格的色彩管理和严格的光照计算下,如果虚拟灰球和虚拟铬球的渲染结果,呈现出和实拍的灰球、铬球很接近的时候,就可以认为虚拟场景的光照已经和现实的场景一致。这里就是要拍摄用于调整虚拟模特的真实模特照片。扫描出的虚拟模特模型,在此光照环境下, 可以调整各种参数,直到与真实模特的实拍照片几乎一致为止。此时以假乱真的目的就达到了。这里需要注意的一点是,最好是固定机位,方便引擎内部摆放和调试。

(4)多视角多光照

为了能让物体在不同视角下都可信,参考通常也是按照不同的视角拍的。比如围绕中心点位置拍摄8组机位的参考素材,然后拍摄多个光比多个角度的灯光下的参考素材,还可以拍环境光较强的环境下的一组参考素材作为印证参考。这样就可以形成多个维度的参考,无论是视角还是光照,就彷佛模特所有可能出现的情况都被离散性地穷举了。如此一来,哪怕虚拟模特在虚拟世界里自由行动,光照不停变化,他脸上的渲染表现都可以一直保持高度的可信性。这就是Lookdev的作用。

4.皮肤的渲染

接下来介绍一些细节的处理,比如皮肤的渲染。决定皮肤质感的因素主要有以下六点:

(0)SSS(次表面散射)

(2)Dual Lobe(两层微表面法线,一层比较锐利,一层比较粗糙,这样可以更好地描述皮肤质感)

(3)Normal和Roughness的Pattern match

(4)MicroNormal和MicroRoughness的Pattern match

(5)Normal-Roughness Variance

(6)Cavity对Pattern的打破以及对光照角度的变化(毛孔)

不怎么影响皮肤质感的因素就是模型面数。

在面数达到一定程度后(比如面部2-3w左右),增加面数对光影结构几乎没有贡献。实时光影系统本质上是一种视觉欺骗,每一个像素都会按照光源的位置,完整地计算受光颜色,然后再利用几何阴影,将被遮蔽的颜色压暗。而几何阴影不会像现实世界中的光线一样,计算逐级弹射。几何阴影只会简单地计算一次性的遮蔽结构。所以过高的面数对光影结构和质感,没有贡献。

这样的问题在实时渲染中广泛存在,而实时渲染中由于理论和算力的限制,通常会用分情况讨论的脏方法处理。在狭小的腔洞,如眼睑与眼球的融合部分,复杂的皱纹、口腔、毛孔、包括泪腺这样的地方,会导致漏光。一般情况下,会将错就错地忽略。

在超写实虚拟人这样的问题上,就需要针对性解决。眼睑和眼球的融合部分用Occ层压暗。口腔面积比较大,会配合Shader和后处理整体解决,如异教徒中的口腔Anchor对Shader进行Decal投影。复杂的皱纹上的结构,一般使用Cavity贴图来补充二次结构。毛孔更加夸张,几乎是一个山洞,一般会用另一种光照模型来单独处理。

5.逆向PBR与LightStage

PBR渲染是一个表面微元对方向角进行的半球积分。输入是表面参数和光照,输出是渲染结果。如果把现实世界当作一个渲染器,倒换输入和输出,那么能否通过拍摄不同角度、不同光照情况下的模特的照片,而得到其表面参数,比如表面极其细微的微表面信息?

这种算法就叫光度立体法,所衍生的设备叫Light Stage。是一个用离散的哥德堡多面体模拟连续的球面,从而对物体的表面进行可控的半球辐照,以捕捉普通的3D重建无法达到的细节。在长焦镜头的放大下,重建精度是可以达到微米级的。

05 /4D绑定与动画

对于绑定和动画,我们采用了一种基于数据驱动的面部动画制作方式。直接演员的4D序列,并逐帧用Blendshape参数拟合。4D序列拟合的平均误差基本在1mm以内。

以上就是本次分享的内容,谢谢大家。



本文地址:https://www.6aiq.com/article/1686140421448
本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出