数字人技术方案数字人、虚拟形象的开发逐渐成为了新兴的技术议题,除了用于虚拟真人类形象,数字人的开发技术也能让角色表情更加生动,并且与观众互动。在Unity技术开放日-上海站上,Unity技术美术团队和技术团队就为大家介绍了这套基于Unity的数字人生产流程。本文截取了其中的重点内容,如果你对数字人感兴趣不妨继续读下去。有关虚拟人创作主要分为两个主题,一个是渲染,一个是流程。接下来让我们看看渲染部分的内容。虚拟人头发渲染渲染这里首先要做的第一件事,就是用机器扫描一位真人。Unity最近发布了全新的头发系统。基本头发制作流程是用MayaX-gen来做头发,X-gen主要工具也是现在很多影视团队的选择。之后再导到Unity里,生成tfx文件并在Unity里做头发的渲染。这套头发工具集成了AMD的头发技术,所以格外逼真。在设置我们可以将不同的配置进行分组,每个配置文件都可以调细节。头发工具共分三个主要区,一个控制头发生成,一个控制头发动态,最后一个控制头发颜色,美术师可以设计自己的组,另外发尾部分的宽阔度也是可以动态调整的。Unity将头发系统集成到HDRP(高清渲染管道)的头发材质里,用头发黑色素物理参数调出喜欢的发色,也可以用DyeColor直接加入一个你想要的任何颜色。虚拟人制作流程整个过程很简单,首先要根据FaceCode标准扫描极限表情,由模特在光场设备里做出那些表情,并被拍摄下来。剩下的事就是关于模型清理工作了,目前这部分也可以交给AI算法来做从而实现节省人力的目的。当我们清理出模型之后便需要开始做BlendShap(以下简称BS)拆分,关于这一部分方法有很多。FACS在理论上人支持60个极限表情,从解剖学上讲,这60个表情可以非线性地组合出任意表情。但是我们做表情对话时,没办法只用60个表情就做出所需的所有表情。因此,这就涉及到BS拆解过程了。拆解的数量,与用户想追求的精度相关,也跟成本相关。在此项目中仅仅扫描了45个有代表性的极限表情,并拆分出了300多个BS。有些算法有可能会进行重复拆解。实际上BS和BS不是完全叠加而回归到极限表情,它可能有些加和减的关系。如果AI将BS拆解成这样时就可能需要人为进行修正。比如一个嘴唇往下的动作是几个BS的组合,但是有一个BS是凹进去的,那么这个凹进去的就需要人为进行修正。因为这些极限表情和别的表情组合的时候会出问题。出现这种问题的时候,就需要人为进行修正,因此自动拆的算法还需要演进。我们可以把表情贴图简单地划分为表情和微表情。表情上结构性的变化需要做在模型上,有些因为结构性变化而产生的挤压的纹理性变化的话,则需要做成贴图。贴图是WinkleMap,它是一Normal的表情贴图,在不同表情间可进行切换,一张脸上往往会有五六张WinkleMap。其实在扫描之后的数据是要把眉毛和一些眼睫毛从Map上去掉的,因为在做重拓扑和修模型时,这些都是噪声,是不需要的;但这些东西又在渲染时会用到。因此需要先进行删除,然后后面再把这些部分给加回去。像在此项目中,眉毛是用插片的方式来做的。流程上还有修贴图,除了WinkleMap,还有一个BloodFlowMap(血流图),当你脸皱起来后,因为收挤压,某个地方的血流图会发生改变,那么这个地方的颜色会变深,这个表现在微表情中,也算在贴图中。所以关于微表情的贴图有两套,Winkle和BloodFlow,这是比较常规的操作。这里是我们发现可以继续迭代的地方,修模型的部分,如果有足够的美术资源,其实是不用考虑算法的问题。修完模型,拆完BS之后一般会做Rigiging和模型Capture,因为用户最后想要的是快速生产高质量的表情动画。在Rigging中,相信大家一定会遇到一些这样的情况,比如Retargeting,这是因为不是模特去驱动他自己,而很可能是别人去驱动他,所以一定会有Retargeting;还有就是SecondaryGeometry、DynamicWinkle与BloodFlow,但是现在Unity目前还没做到Dynamic。目前本项目是在Shader中实现的,有关需要哪些贴图,让贴图对应表情等等一系列工作目前都是由用户自己来处理的,但这些简单枯燥的工作后期相信会有一些以AI的方式来实现。关于模型Capture,目前有两个方案,用一些第三方提供的高精度结果去驱动模型。在这个项目中,Unity...