作为构建元宇宙内容的基石,数字人是最早可落地且可持续发展的元宇宙细分成熟场景,目前,虚拟偶像、电商带货、电视主持、虚拟主播等商业应用已被大众认可。在元宇宙世界中,最核心的内容之一非数字人莫属,因为数字人不光是真实世界人类在元宇宙中的“化身”,也是我们在元宇宙中进行各种交互的重要载具之一。
众所周知,创建和渲染逼真的数字人类角色是计算机图形学中最困难的问题之一。近日,在由51CTO主办的MetaCon元宇宙技术大会《游戏与AI交互》分会场中,Unity大中华区平台技术总监杨栋通过一系列的Demo演示,在《Unity数字人技术—开启元宇宙之旅》的主题分享中详细介绍了Unity高清渲染管线技术。
一、Unity介绍
Unity目前在世界范围内是支持最多的计算平台,现在支持将近30个计算平台,包括PC、Mac、Linux、iOS、安卓、Switch、PlayStation、Xbox以及所有的AR/VR、MMAT这些设备。如果是制作三维互动式内容,Unity目前来讲确实是最好的一个选择。我们知道高画质渲染,在一些配备独立显卡的机器上去渲染高画质的内容,现在所说的写实类的数字人的技术是要依托高画质渲染技术的。
目前Unity中国团队拥有300多名全职员工,全世界将近7000人,70%以上是工程师。总部在上海,在北京跟广州都有办公室,也有相应的员工在那里办公。
二、Unity引擎的强大之处在哪些方面?
目前Unity虽然不是一个开元的引擎,但模块是高可定制化的。
图中是Unity目前支持的平台,可以在这些图标上找到最常见的一些平台。这些可能是这些年最火的一些游戏,这些图标有些比较熟悉,像王者荣耀、CALL DUTY、英雄联盟、原神、糖豆人、闪耀暖暖……。实际上在国内、国外全球的安卓及iOS榜单上,前1000位最赚钱的游戏,70%以上都是由Unity创作的。超过一半的switch游戏都是由Unity制作的。大家可能无法相信一款高画质看起来非常复杂的游戏,而且是在Xbox上首发的爆款游戏竟然是一个人开发的,充分说明Unity引擎的灵活性、工具链的强大之处。
Unity在向性能高效的方向进行发展,分别说明一下三个主要的dots系统的组件,C#Job System、ECS、Burst Compiler。C#Job System实际上是可以让开发的游戏或者应用去充分利用综合CPU的并发运算的算力,因为现在面向对象的编成模式是制作的内容,是运行在主线程上面。第二个是Entity Component System(ECS),通过Entity Component System可以把数据跟系统,也就是游戏逻辑进行分离,更易于维护,对于内存上的使用也更友好。Burst Compiler可以针对目标平台去生成运行运行更高的机器码。
另外一方面,高画质也是Unity非常好的特征。如果仅仅说要去使用很贵的PC或者是Xbox、Play station很贵的机器才能渲染精美的画面的话,实际上游戏的通用性就太差了。Unity通过XRP,就是所谓的可变量渲染管线,为大家做了两套开箱即用的渲染管线,一套是通用渲染管线URP,第二套是HDRP(高清渲染管线)。顾名思义,URP所谓的通用渲染管线就是所有的平台都是支持的,不管是开发VR游戏、AR游戏还是像移动端的游戏,都是可以用URP来进行渲染方面的工作。HDRP是指PC mac Linux、Xbox1跟basestation4及以上的这些平台,它也支持实时光线追踪。
三、高清渲染管线如何实现数字人的高画质渲染?
《异教徒》数字人实际上并不是Unity制作的第一个数字人,但是《异教徒》这个数字人有它的独特之处,因为这个数字人是非常逼真的,而且是形成了一套完整的工作流。要想实现像《异教徒》的高画质渲染,高清渲染管线是必不可少的。
《异教徒》这个数字人实际上是有原型的,他是英国在伦敦的一个戏剧演员,叫Jack,通过扫描他的数据,这是他全身的数据,重点需要扫描他的头部数据,然后做成了整个数字人,表情是非常逼真的,使用到的是一个4D的Volumetric Video的技术来制作表情动画,其实用这种技术虽然可以制作非常逼真的表情,但是它也有一个缺陷,就是并不能进行实时的驱动,它可以做影视类的角色表情动画是没有问题的,却无法做到实时地驱动。
在一些成功的案例中,可以看看眼睛的渲染和皮肤渲染,我们分别来看一下。
为了提升皮肤的质量,加入了以下几项技术,Detail Map是细节贴图。Secondary Specular Lobe是第二层的高光,Cavity Specular Occlusion是指凹陷处,可以遮蔽掉高光,Screen Space Subsurface Scattering指屏幕空间的次表面散射。
第一个细节贴图主要是用于模拟皮肤表面的细节等纹理,这张纹理并不大,是1K的纹理。
第二层高光Secondary Specular Lobe,它是用于模拟皮肤表面的油脂层,因为皮肤要出油,甚至皮肤看上去干巴巴的,所以需要用这个方式来增加一个第二层的高光。
第三个是凹陷高光,是为了遮蔽凹陷中央的高光。在加了第二层高光以后,皮肤凹陷的地方也出现高光,显然是不真实的,需要把它的高光遮蔽掉,凹陷处不出现高光。
第四个是屏幕空间的次表面散射,用于制作皮肤本身的效果。我们知道皮肤本身是有一个所谓的3S效果,这就是所谓的次表面散射效果。皮肤显然是需要用到次表面散射的,但是传统的当我们用MAYA或3Dmax这样的离线渲染的软件去模拟这个皮肤的时候,如果是渲染次表面散射的效果是非常耗时的。在Unity,实际上有两种渲染次表面散射效果的技术。第一个是Screen Space Subsurface Scattering的技术,它渲染得比较快,第二种是通过光飞的方式,显然光飞的方式更真实。
这个角色是《发条乐师》短片里面的小女孩的角色,小女孩的这个角色也是用到了屏幕空间的次表面散射的效果。右边的树叶,其实也是用到了次表面散射的效果。
接下来说说针对眼睛的渲染。实际上眼睛是一个非常复杂的物体,它由很多部分组成,在实时渲染里面去模拟真实的眼球,模拟4个部分:角膜、瞳孔、虹膜、巩膜,就已经能够获得非常真实的效果。
如图所示,我们的眼球本身是一个非常复杂的物体,正面看跟侧面看实际上是有区别的,特别是虹膜视角折射现象,如果是正常地去渲染,这张图是非常有名的GDC上的数字人的角色。
数字人眼球实际上是按照真实的眼球的形状来建模的,它会有一些特殊的涂色器来表现这个眼球的各个参数。包括它的反射,巩膜跟虹膜上的法线贴图,分别应用不同的法线的数值能够呈现的效果,甚至也做了眼睑的遮挡,通过一个单独的控制器来进行控制,就可以控制眼睑的效果。
总结一下,通过真人的扫描数据,经过blend shape、Wrinkle Map、Colour Map、Facial Rigging的方式进行表情制作,用控制器来驱动这个表情。当然我们也知道有很多其它的方式可以来驱动这个表情,其实当我们去渲染皮肤、眼睛或者是毛发的时候,相对来说是比较容易的,但是表情驱动实际上是一个非常大的难点。
经常会听到开发者说使用的Unity为什么做不出来Unity能够做的效果?因为Unity呈现的demo的效果都是由一群人通过很大的精力打造出来的,而且他们所用的技术在他们制作这个版本里面其实还没有,做完这个demo,有了这些技术之后,会慢慢合到下个版本里,最终形成所有人都能使用的一个功能版本。
四、数字人制作过程是怎么样的?
在做完《异教徒》以后,Unity中国团队实际上也做了一个自己的数字人,应用《异教徒》的技术,坐姿4D扫描等技术。
这是一个实际的项目,过程实际上跟《异教徒》的过程是一模一样的。包括做数据的清理,做相应的blend shape,做Wrinkle Map,做Rig,然后驱动表情,在ASSETStore里的控制器,用Animation Clip、用BlendShape的方式来呈现表情动画。当然了面部捕捉实际上有更多的方式,比如说用Market来跟踪,用ARKit来跟踪,用图像数据驱动。
在做实际开发的时候,用相机捕捉表情来做人头的表情的测试,还有另外一种方式,用图像数据驱动。有一个非常巨大的区别就是她有一头飘逸的长发,这个飘逸的长发是Unity中国团队自己研发的一个解决方案,它是适合于URP、HDRP,既适用于通用的渲染管线,也适用于高画质的渲染管线来制作头发。头发的渲染跟传统的插片式的方式是很不一样的,是可以非常柔顺的,甚至感觉像海飞丝广告的效果。表情实际上是通过AR cade来实时驱动的,当然用AR cade来驱动表情。
Unity的一个数字人叫艾玛,这个数字人的表情是完全用Ziva Dynamics的技术来动态驱动的,核心技术实际上是去模拟模型下面或者是生物皮肤下面的这些肌肉群,既可以去模拟恐龙真实的身体肌肉的移动,也可以把这套技术应用到比如说非常逼真的数字人脸部表情动作的模拟。传统来讲一个模型就是一个空壳,它外面就是一层壳,但是在Ziva Dynamics的技术里,后面实际上是有真实的基于解剖学的肌肉在那里,当真实地移动这些肌肉的时候,外面的这些皮就可以比传统的用blend shape或者是用骨骼绑定的方式获得另一个或者是更高层次的真实感。
今年3月份,Unity在GDC上发布的《Enemies》的最新数字人的预告片,这个数字人的表情是非常非常真实的。值得一提的是她的头发是一套Unity即将公开的毛皮渲染技术,应用于HDRP高清渲染管线的一套毛发。
欢迎查看MetaCon元宇宙技术大会官网,了解更多元宇宙和数字人相关内容信息。地址:https://metacon.51cto.com/
来源: MetaCon元宇宙技术大会