大家好,我是EpicGames中国的技术美术孙丹璐,明天为大家带来的分享是Metahuman原理及流程浅析。
当初数字人是个十分炽热的题材,不论是游戏、影视、直播、工业、广告等畛域都有着大量需要。然而传统数字人的制作在设施,人力和工夫老本上都十分昂扬的,每个流程,每一个环节比方扫描角色、绑定,动捕和面捕进行驱动,也都须要肯定的技术门槛能力达到的。所以在市面上的大多数案例中,比方大家看到的AAA游戏中,基于老本,个别只有无限的配角会采纳残缺的高精度数字人成果,其余角色的精度都绝对低很多。
基于此,咱们提供了一套计划叫做MetaHuman Creator,疾速和容易地创立独特高保真的数字人类的工具,你能够间接操纵面部特色,调整肤色,并且从预设的身材类型、发型、服饰等范畴中抉择,在metahuman中甚至能够编辑角色的牙齿,在角色制作实现后,你的角色会蕴含残缺的绑定并能够间接在空幻引擎或者maya中制作动画。
为了达到零门槛创立数字人,可见即所得的指标,咱们提供了基于Epic生态的三个套件进行协同工作,通过MHC疾速在线制作数字人,利用Quixel Bridge导出数字人,在空幻引擎中利用到游戏或者影视当中。
https://v.qq.com/x/page/s3312...
我想先为大家展现下通过MHC进行捏人,MHC依靠于网络,通过Pixel Streaming在网页端交互应用,在这个视频演示中,我捏出一个全新的数字角色理论只用了4分钟,大家能够看到操作也很直观易懂,上手门槛非常低。在捏脸的局部,面部混合提供三种模式 。
第一种是混合模式,最粗粒度的捏脸,通过左上方的混合圈,增加3~6个角色区进行插值,你每管制一个特色点进行捏脸,就是采样这几个预设角色的特色点去做插值。
第二种模式是挪动模式,依照五官划分了特色点,在这个模式下能够疾速的批改五官。
第三种模式是雕刻工具,是Creator提供的最细粒度的工具,能够针对最小特色点,比方鼻尖,来区进行细节调整,Creator中大家须要留神到这里的雕刻和Zbrush中的雕刻是存在一些不同,MHC中的雕刻, 是通过你冀望雕刻的状态,在基因库中索引一组面部特色点再进行交融。另外Creator中常见的一个误区是,挪动和雕刻工具,实际上与你左上角预设好的几个角色是无关的。它挪动和雕刻都是在整个基因库中进行索引,并不依赖于左上角预设好的角色。
另外,其实挪动工具和雕刻工具,是能够一一对应起来的,比方挪动模式的眉弓处控件,对应的是雕刻工具下 ,眉心、眉头、眉峰、眉尾、这四个特色点。
另外在Creator中也能够调整肤色和纹理细节,皮肤的纹理选项岂但能够减少脸部外表的细节,也会对面部的状态产生影响,比方皱纹对于面部状态其实是有一个形变的。
Creator中也提供了绝对灵便的妆容设置,比方粉底,眼影和眼线,各部位的腮红、口红,可能进一步缩小用户对于数字角色进行二次批改的需要和开销。
在身材的塑造上,MHC提供了预设好的18种体型进行抉择,头部目前并不会随着身材的高度或体型抉择主动的产生扭转。所以其实有的时候你抉择体型之后,可能看起来身材和头的比例有些奇怪,所以咱们提供了头部缩放性能。
头部的缩放并不是齐全等比缩放,而是会更符合人体特色,你能够看到,你当初缩放头部的时候,你的脖子并不会随之有限的增粗,这样缩放也能较好的解决头颈和身材的连接。
咱们来看下MHC背地的技术,首先咱们会通过4D扫描大量的事实人类面部,通过人工和ML解决数据,提取出每个角色的特色点信息,存入一个叫做DNA的数据格式中,而DNA用于形容角色的外观、骨骼绑定,最初咱们把这些信息寄存到GenePool中,GenePool是咱们的一个数据库,用户每一下捏脸操作,实际上就是在GenePool的数据库中进行索引,混合,最初基于你捏好的数字角色,也会生成一份举世无双的DNA数据。
在体型方面,采纳了传统流程制作的体型。次要是目前咱们还没有较为欠缺的身材数据库,所以没有方法和头部一样能够交融不同体型的特色点来捏体型,另外当初咱们也不提供利用缩放进行任意的体型调整的设置,次要起因是整体成果不能达标,比如说部分调整过体型之后,你的身材和脖子的接缝处并不是一个很好解决,另外服饰也是很大的问题,部分放过的身材很难做到布料贴合。
在纹理方面,皮肤的纹理是通过扫描数据中的纹理进行合成来生成制作,以确保达到更实在的成果,扫描的纹理拆散成低、中、高频率的细节纹理,用于在Creator中自定义的混合,而其余中央应用的纹理,则应用更传统的管道去进行制作。
另外MHC是一个基于云端的APP,咱们把MHC放在了云端。次要是因为以上数据量,尤其是面部GenePool和纹理数据的数据量十分十分微小的,而且将来会不停裁减,单就数据量和运算压力恐怕不太适宜放在个人电脑上进行运算,所以咱们采纳了基于云端的计划,同时云端还有个益处,更新迭代很快,很多问题和改善能够间接后盾实现,不须要每一位用户都进行频繁的更新。为了把云端的MHC输送到浏览器,咱们采纳了Pixel streaming,Pixel streaming是一个基于空幻引擎的流送技术,在云端服务器上运行空幻引擎应用程序,通过WebRTC将渲染的帧和音频流送到浏览器和挪动设施,不晓得大家有没有意识到,应用了pixel streaming意味着,后盾跑的也是空幻引擎,在云端的空幻引擎中制作数字人,导出到本地的空幻引擎里进行应用,所有参数,模型,毛发,布料,纹理,材质,LOD参数都能够一一匹配,这是真正的所见即所得。
从MHC捏好之后,就能够通过Bridge下载你制作的数字角色了,关上Bridge能够看到Metahuman的分栏,外面会实时更新你捏的MH,在Bridge须要配置你心愿下载的纹理分辨率。在点击download的时候,会有一个主动步骤是生成,生成是依据捏人时候设置的数据,比方皮肤,以及download设置的参数,基于这些数据生成纹理和LOD,因为后盾跑的是空幻引擎,所以模型以及骨骼的LOD,都是基于规定,应用引擎内LOD减面和骨骼LOD剔除达成的,而对于毛发的LOD,为了保障成果,是手动生成的插片和模型LOD,MetaHuman的资产生成可能须要一点工夫来解决,这次要取决于所抉择的资产是什么,它们的纹理分辨率以及你当初的网速,还有就是会思考到你当初的Bridge队列中有多少资产须要生成,均匀来说,如果你下载的是一个有1K纹理的MetaHuman,须要大概20分钟来生成和下载。
在下载的时候抉择的纹理分辨率,并不是一个相对分辨率,而是一个指引的分辨率,也就是说如果抉择下载8K的,实际上只有奉献最大的normal和cavity纹理是8K的,而皮肤albedo是2K的. 这其实和皮肤自身的个性无关,个别SSS皮肤散射的成果靠近于低频的滤波,成果有点相似于blur之后的纹理,所以albedo的高频细节自身就会被SSS的shading个性抹掉,咱们对albedo的奉献做了成果和效率上的评估,发现8K 4K的albedo绝对于2K的成果改善简直是肉眼不可辨别的,所以在这里应用了2K的分辨率。而roughness纹理,是应用空幻中一个自带流程将法线转换为粗糙度,通过Bridge导出能够导出到maya和空幻引擎中,接下来咱们来剖析在空幻引擎中的MH。
导入引擎后,会有一个专门的Metahuman文件夹,对于所有Metahuman生成的数字角色来说,无论是男性还是女性,有些资产内容都是共通的,咱们把这些存储在MetaHuman/Common文件夹中,而每个人特有的资产则存储在相应名字的文件夹下。
位于Metahuman文件夹下,Metahuman的身材各部件会以一个蓝图组合到一起,蕴含躯干,面部,面部各种毛发,出于性能和成果的均衡,并且为了适配不同的平台,不论躯干还是毛发,都有本人的LOD信息。
比方头部咱们设置了8层LOD,咱们为每层LOD设置了肯定规定,每层LOD都有独立的,顶点量、blendshape,、关节数、动画纹理、蒙皮影响等区别,blendshape因为性能开销比拟高,所以从LOD1开始就没有在应用,而纹理动画则是因为须要读入的纹理十分多,所以LOD2开始没有在用,当然从屏幕上看这些头部,可能LOD3或者LOD4开始 ,之后的成果会显得有点毛糙,然而LOD的抉择肯定是要综合思考到屏占比来去掂量成果的。
比方我在对应LOD的屏占比下来截了这三张图,别离是拉到最近时候的LOD0,中距离看到全身时候会切换到的LOD3,以及远距离切换到的LOD7。
我在雷同间隔下,把模型强制按LOD0渲染作为比照,也就是图上当初新增的LOD3和LOD7旁边的对应的头部和全身,能够看到两者的区别并不是特地大,也就是在这样的间隔下,在这样的屏占比下,LOD切换对于画面的成果并不会影响太大,LOD其实不光是对于性能有晋升,对于画面成果也是会有肯定改善的,比方大家常见的画面失真摩尔纹,引入LOD就能够改善这种状况。
这是身材模型的LOD数据,身材只有4层LOD,以画面上的裤子为例LOD0是有一万五千面左右,而LOD4 大略是一千五百面左右。
对于骨骼而言,骨骼模型的LOD能够大量缩小skinning的开销,然而他还须要骨骼的LOD,骨骼的LOD能够很大缩小动画Evaluation中采样、插值、混合的开销。那么身材骨骼LOD0是150根骨骼,LOD4是55根骨骼。
大家其实留神到,每个不同的局部可能LOD层数不统一,比如说方才的头部是8层LOD,而身材的LOD只有4层,同时要思考到,因为身材和头部的屏占比不统一,所以计算出来的LOD也会不统一。那就会导致成果上呈现一些不匹配的问题,比方身材和头部的接缝处没有方法齐全匹配,或者说,咱们思考毛发的话,屏占比很小的眉毛groom可能永远没有方法渲染到LOD0,而只有很近处才须要的汗毛groom,却因为突围盒是整个面部,所以会在中距离处也会渲染到LOD0,这是一个性能上的节约。那么为了解决这个状况,引擎退出了LODSync component,通过配置LODSync component在这外面配置不同部位的奉献和计算形式,能够让不同部位也能够做到共享一套LOD。
因为工夫关系,可能没有方法剖析引擎中metahuman每一个细节,上面我会以绝对动态和动静资产为辨别,联合可伸缩性,次要介绍上面几个次要的局部。
首先是毛发,毛发包含:头发,眉毛,面部的绒毛,睫毛以及胡子。
...