近年来,随着虚拟技术的发展,虚拟人物及面部捕捉技术越来越受到科技大厂的关注,从Epic Games与数字王国合作开发的实时数字面部捕捉技术,到Facebook公布Codec Avatars技术,再到腾讯携手Epic开发虚拟数字人物。从技术方向来看,大厂们在虚拟人物上保持着高度的统一。腾讯、Facebook、数字王国以及国内众多游戏大厂都在不同程度的尝试这一技术。
近日,在腾讯游戏学院的栏目中,腾讯互动娱乐新体验与技术部助理总经理,专家工程师顾煜分享了他们此次与Epic Games合作研发虚拟数字人Siren的开发历程。本文为全文的下篇。
上篇请查看:
腾讯虚拟数字人“Siren”的开发历程(上)
Project Siren Episode 4
上回说到渲染开发和人脸建模。那两块虽然也复杂,但还不是整个项目中风险最大的部分。风险,总在于整个项目中的短板。
恐怖谷效应
真正的难点,在于脸部表情。
这么多年来,实时数字人技术,无法跨越恐怖谷,非常重要的原因,就在于脸部表情难以模拟。在静态画面层面,已经有很多游戏,做到极其逼真的人像渲染。而逼真的画面,在动起来以后,就有让观众微妙的不适感。这不适感,来自于表情动画。
下图来自Uncharted4。
人类太熟悉人类的表情,一颦一笑,即使是脸上最细微的表情,我们都可以感知到。而计算机视觉打造出来的表情,缺乏灵气。这个灵气,就是计算机视觉最难跨过的门槛。
如果对表情捕捉有了解,大家会说:不对啊,近年来类似的捕捉技术很多。相当多技术,可以做到实时捕捉真实表情,运用到卡通脸、甚至是动物脸上。比如Facerig的技术,就可以在消费级别的Webcam上,捕捉人脸表情,让画面中的卡通角色做出“一样”的表情。
我们日常使用的iPhoneX,也可以有Animoji,捕捉表情,应用在卡通角色。
如此看来,似乎表情捕捉也并不复杂?
其实不然。很多团队已经可以把表情用在卡通模型上,但他们还是需要很大的勇气,才能把类似的技术用到真人模型上。因为使用卡通或者是不精确的模型,这些技术都回避了难点问题:精准的表情识别。
卡通角色,由于和真人有巨大的差异,所以人类对他们表情有很大的宽容性。卡通脸的表情,如果和真人捕捉的表情有出入——事实上一直有巨大的出入,你也不会留心到,反正卡通角色的表情怎么做都可爱。但真人角色就不一样的,如果表情有差别,根本不需要把两个表情放在一起做两两对比,你也马上就可以感受到。当然你不会看出这个嘴角少上翘了3度,而是会觉得表情说不出的僵硬和古怪。
换句话说,这就是恐怖谷。
在上图中,横轴代表模型逼真度,左面是完全不像真人,右面代表完全真实。纵轴代表人类对这样模型的好感度,下面是没有好感,上面是有好感。
卡通模型处在坐标轴的左侧,所以表情的误差,并不会导致人类的好感度下降。随着卡通模型的越来越逼真,人类的好感度也在逐渐上升。
当模型质量开始逼近完美的时候,我们会发现,随着质量的微小提升,好感度反而出现了巨大的下降。而随着模型进一步完美,人类的好感度才会逐渐提升。这个曲线形成了一个小山谷,这就是通常意义上的恐怖谷。
我们项目的目标对象质量,已经接近真人,所以在虚拟世界中,微小的误差,也变得无法忍受,换言之,就是进入了恐怖谷。
表情捕捉
面对恐怖谷,并不是没有办法克服技术的不足。传统电影行业就做到了。他们依赖的是更高的采集精度,更多的计算资源,以及手工精修。电影的大量合成画面,都是经过动画制作人员手工一帧帧调整来做到的。
但具体到我们实时领域,就不能采用如此暴力的手段。相比于电影行业,实时是我们的优势,也是最大的诅咒。我们不能引入后期的手工精修环节,所有的计算都必须在当时发生。我们也缺少计算资源,虚拟人的程序以60帧每秒运行,而电影画面的渲染,一帧动辄几小时渲染,计算能力差距是天差地别。所有的计算都必须在16毫秒的时间段内做完,而且我们能依赖的也不是什么高端电脑,而是民用级别的电脑。
铺垫了这么久的技术难度,另一个重要的合作伙伴,Cubic Motion,也要开始它的表演了。它是脸部表情捕捉的负责方,提供了从硬件到软件的全部方案。
Cubic Motion在这个行业也已经耕耘多年。2016年,他们就和Epic有过合作,做出了Hellblade的动捕表情实时方案,当时质量已经相当惊艳,但可惜的是模型都还是游戏的质量。这次再度合作,他们希望挑战更真实的人脸捕捉。
Cubic Motion的第一个切入点,是从头盔开始。他们酝酿多时,思考了过往种种不足,展望未来各种可能。所有的技术,都要从“头”开始,于是,他们使用3D打印,按照模特的头型,打印了一个假头…...
这个逻辑有些奇怪,但也合理,打印假头是为了制作头盔,不知道头的尺寸,怎么制作精确尺寸的头盔呢?而且头盔也需要地方存放,有一个假头,岂不是上好的支撑架子?虽然这个架子有一点点小贵。
他们使用头盔上的摄像头,捕捉模特的各种表情,拍成视频,进行人工标注,生成Solver。这个Solver可以实时检测脸部表情,生成驱动脸部Rig的数据,驱动真实的人脸。
整套技术的核心问题,都已经走通多时,这次要做的,无非就是更精准,更高效。原理已经成熟,目标也很清晰,只是到达目标的路径,还是格外艰难。
显而易见的问题是,这套系统依赖于其他各个模块,并不稳定。如果我们修改了基本的模型,或者修改了Rig,那几乎可以想到,Cubic Motion的同学们又要熬夜训练Solver了,因为Solver高度依赖其他模块,所有的细微改动,都会引起他们的变动。偏偏可悲的是,整个研发周期中,所有的模块都在疯狂调整,没有什么东西是稳定的,这就总让他们在最后一刻拼死加班调整Solver。每次演示前,大家把所有模块都调试完了,所有数据都收集齐了,就留下Cubic Motion的人,在那里熬夜标注。
即使没有外部问题,这套系统的内部问题也不少,它本身也不稳定。Cubic Motion是一个上进的公司,每次演示,都在迭代自己的解决方案,每次都想玩出一些新的东西。Hellblade演示的时候使用了单目摄像头,到Meet Mike Demo时候使用了双目摄像头,Siren版本中,他们又尝试了Side Camera,就是从侧面再加一个摄像头去拍摄模特的侧面。每个新的模式,单独来看都不是大问题,但在一个复杂工程环境中,就成了巨大的问题。多地合作的时间延迟很大,每次他们调整技术,就需要重新采集表情资源去调试自己的Solver,偏偏3D打印的摄像头盔,并没有多余备份,我们这一侧没有设备,就很难及时提供测试数据。
抛开软件层面的问题不说,硬件层面问题也很大,头盔的舒适度有严重问题。为了保证脸部表情采样的绝对精准,这头盔需要非常精准的固定在头上,不能松动,每次的位置都要一样。为了防止头盔滑动,就要用力固定紧,这就造成了头盔的舒适度不佳,会造成头部疼痛,模特很难有长时间的续航。这个问题在后续导致了史诗级的灾难,暂时按下不表。
为了提高合作效率,在项目中后期,我们就尝试把几家公司的人,全部拉到Epic办公室,进行高强度的整合工作。每天节奏基本是半天进行各种系统调试,数据采集,然后反馈问题给远端的3Lateral,后面半天Cubic Motion调试他们的系统环境。
整合的过程并不顺利,由于模型也只是刚做完,3Lateral每几天都会发更新版本过来,于是Cubic Motion的工作被时时清零,随时要重做。我们的渲染工作倒是进展顺利,和Epic的高级TA一起工作,效率很高,我们也抓紧机会,学习了更多的技术和思路。
在美国的集中整合,很快结束了,效果还是不够理想,然而距离我们的内部汇报,时间所剩无几了。
最终整合
虽然不理想,但时间一分一秒过去,转眼就到了2017年底,约定好的汇报日子。
为了做这次汇报,我们要在腾讯内部办公室搭建一个动捕棚,把所有设备搬过去。我们团队先是买了十几个巨大无比的支架,做动捕镜头支撑,寄送到深圳,再买了无数的线材、电脑设备。看起来并不复杂,只是对于做惯软件开发的我们,突然去做各种布线工程,还是非常不适应。
Epic、Cubic Motion的同学们也早早到了深圳,开始了下一轮整合。
此时的基础模型和Rig已经相当完善,在我们分开的几周里面,Solver算法质量也得到了长足的进步,渲染增强等各方面都接近了最终的质量。
故人相见,分外激动,但闲话少说,大家三下五除二,便把系统调试完成。剩下的时间,自然还是要留给苦命的Cubic Motion,让他们进一步提升面部捕捉质量。
这次Cubic Motion非常给力,我们在临近汇报的前三天,已经看见了非常高质量的Solver,表情的精准度等都已经达到了很高的水准。姜冰洁的表演,可以很精准地被还原,明显质量已经超越了以往的所有版本。这已经是一个非常好的汇报备选版本,后面还有几天,可以慢慢调试,进一步增强效果,看上去这次汇报的质量可以保证了。
从这个联合项目开始算起,大半年已经过去。我们克服了各种困难,终于接近大功告成。
我们以为这就是全部挑战了,一切尽在掌握,但后续的问题,才真让人猝不及防。
Project Siren Episode 5
一帆风顺都只是幻想,通往目标的路途总有坎坷。
在项目将近尾声的时候,最大的挑战,不期而遇。
下马威
命运先给我们来了一个小的下马威。演示现场需要高质量的电视机做演示。我们在公司内部借了一台Sony 85‘的电视机。我们找人把电视机搬上来后,一开机,就傻眼了,电视屏幕坏了,应该是搬动过程中,碰到了什么地方,屏幕角落碎裂,画面糊作一团,液晶在屏幕内慢慢晕开。
大家当时就眼前一黑,不知如何是好。上网查查,这款电视要将近5万,怎么看都不是一个小数目,大家一边吃着晚饭,味如嚼蜡,一边讨论如何处理电视的问题,以及怎么再去搞一台电视。
好在我们很快发现,之前有误解,那个我们以为是85’的电视,其实只有75‘。于是我们有了一种赚了3万多的错觉。查好网上商店的同款电视备货情况,第二天一早冲到家电卖场,抢购了一台同型号电视,先应付汇报,再还给其他部门。
至于那台坏电视,也不能放过它。我们将它细心打包,寄回上海,修好以后继续为公司服务。
这是另一场修炼。我们经历过产品研发、上线流程,倒从来没有做过这样的系统工程,每个环节都会出错,每个硬件都会损坏,每个设备都会买错。虽然当时是身心俱疲,但的确也是从未经历过的宝贵体验。
热完身,终于,我们迎来了最大的挑战。
归零
临近汇报前两天,模特姜冰洁突发高烧,40度,浑身无力,无法再继续工作。
起因是复杂的。那几天工作繁忙,头盔舒适度低,她一直觉得头疼,但由于设备穿脱、校准特别麻烦,即使中场休息,她也不脱装备。外加欧美人喜欢把室内空调温度开到巨低,亚洲人不习惯,就着凉了。眼看到了最后一刻汇报关头,她就病倒了。
为了得到最好的精度,最大幅度还原真实演员的表现,我们一直打算用姜冰洁自己来驱动自己的模型,这样效果会最理想。然而模特临场病倒,即使她再敬业,发烧到站不起来,肯定是不能再用她来驱动模型了。
虽然我这个系列文章强调为了叙事,不惜歪曲事实,但这一次的事件确乎是事实无疑。只能说,真实的生活,比虚构的小说更无情。我们的几个月的数据积累,在最后一刻,被清零了。
我深深感到自己的无能为力,无数事情想做却又无从做起。从未觉得如此孤单,身边的一切都在加速远去,伸出双手想要挽留,却抓不住什么。命运开了个小小的玩笑,碾压过我们的希望,那些疲惫挣扎的夜,那些彷徨徘徊的路,又有什么意义。
老司机们之所以是老司机,主要还是心理承受能力够好。联合团队都有多年开发经验,经历过各种大风大浪,既然意外总难避免,大家也就只能从容应对。
临近汇报,已经不可能修改时间了,一方面高层领导时间不好约,另一方面联合团队要再凑到深圳,也很难,都是商务人士,行旅匆匆,分分钟几十万上下。
团队做两手准备,一面派人照顾模特,寄希望于她在最后一刻会康复,另一方面,开始考虑如何换模特,在最后两天训练新的Solver。
团队的PM妹子在最后一刻顶上,剩下的二天多的时间,配合采集数据,做动作捕捉。由于两人身材差别比较大,对动作捕捉等都造成了不少的影响,但最大的影响,还是在面部表情捕捉。
最高质量的表情捕捉Solver,在换演员以后,效果出现了退步。苦命的Cubic Motion又开始了训练新Solver的过程,采集数据,从头再来一遍。其中甘苦,不必多言,在过去大半年的合作中,脸部表情捕捉质量进一步,退两步,再进三步,始终呈现不规则震荡,但在那一刻,我们无路可退。
团队压力巨大,各种不同文化团队,出现了争执、争论和争吵。我们为每一个细碎的不顺利争吵,戴上放大镜看彼此的过失,团队远远没有磨合好,脆弱的信任和感情,支撑不起绝望的情绪。
极端的压力,造成至深的裂痕,大家的委屈、郁闷,都暴露出来,文化的差异,对项目的理解,甚至对食物的抱怨,都是一个个导火索,引燃一场场争执。不知为什么,相敬如宾的联合团队,在那几天,都把最不堪那一面展示给了合作伙伴。好在随着版本的一步步进展,大家又慢慢恢复了职业化的冷静克制,共同面对最大的挑战,追求最好的成果。
没日没夜忙了几天,效果被调整到了一个可以见人的水准,但还是没有恢复到之前最好的状态。
汇报
终于到了汇报那天。汇报的场景颇有戏剧性,充满了各种精心设计的过场,在一次性体验中,争取给别人最好的印象。整个流程经过了多轮设计,尽可能自然顺畅。
我们先播放视频,看虚拟人的各种渲染细节,以及一段预制视频。虽然画面质量不错,但大家平日见多了CG影视,也没啥感觉。
突然显示屏上,视频电话响起,虚拟人来电。于是我们假模假样接起电话,和实时互动的虚拟人进行视频会议。电视屏幕上的虚拟人,是由隔壁动捕房的模特实时驱动,我们会议室的一举一动,被摄像头同步到动捕房,而动捕房的模特反馈,则通过复杂系统,被实时捕捉、串流、编码、视频传输到我们房间。相当于我们做了个视频聊天系统,只是和我们聊天的对象,是一个被真人驱动的虚拟人。
这个概念很绕,但效果确实很震撼。那些不了解我们工作的人,开始以为屏幕上只是一个普通的CG制作的人,突然她就开口和你说话了。于是你修正了自己的判断,以为团队做了个视频聊天系统,和真人聊天。随后团队喊出了芝麻开门的咒语,隔壁线人得到指示,输入Cheat code,屏幕里面人物的衣服瞬间就变色了,怎么看都是视频游戏里面的Avatar换装。你定神再看,屏幕上的人又线框化,变成一个Sci-Fi感十足的线框人。大家正在诧异,不敢相信,突然视频窗口不争气的Crash了,大家恍然大悟,连连击节赞叹,须知程序崩溃,方是开发常态,又知演示瑕疵,才显技术本色。
视频对话期间穿插各种渲染细节展示,特性宣讲,隔壁动捕房有专业导播和主持,控制虚拟的Camera,进行直播,随时Zoom in到合适的细节,进行细致讲解。
聊了几分钟后,模特便邀请大家去动捕房看看幕后场景。一行人来到了动捕房,动捕现场网线如蛛网阡陌,模特仿佛钢铁侠转生,浑身缠满电线和装备。一整个好莱坞级别的工作团队严阵以待,介绍幕后技术细节。
参观完幕后,就开始进入传统的商务画饼,谈起技术定位,未来前景,自不必多言。
圆满结束汇报工作,但一切还没完。我们追查Crash原因,这么多天研发整合过程,从来没有出过问题,此事必有蹊跷。后来才知道,导播人员在现场切换各种Camera,纯熟使用快捷键,好不得意。只是他在切换Alt - 4镜头的时候,小手一抖,Alt - 4时手指伸远了一点,按到了Alt - F4,直接关闭了窗口。
真相水落石出,结果啼笑皆非,然而结果不错,大家一笑而过。
当晚月明星稀,团队相聚酒吧,一场豪饮,几声唏嘘,道声珍重,各奔东西。
尾声
数月后的GDC 2018,进一步打磨的技术得以正式发布,动捕技术尝试和Vicon合作,脸部捕捉进一步进化,找了英国的专业演员,尝试使用不同的模特驱动,达到了更好的效果。这也就是外部所知的Siren虚拟人。
而我们进行的人物渲染增强,也被整合进了后续4.20的Unreal官方库中,正式贡献给行业。
坚持过、奋斗过的每个团队,继续在自己的路上探索、前行。大路朝天,各走一方,也许,将来还会有再交汇的一天。
虚拟人部分全文终。NEXT Studios的故事还将继续。
第一时间了解XR资讯
关注VR陀螺官网(vrtuoluo.cn)
关注微信公众号:VR陀螺(vrtuoluo),定时推送,VR/AR行业干货分享、爆料揭秘、互动精彩多。
投稿/爆料:tougao@youxituoluo.com
稿件/商务合作: 六六(微信 13138755620)
加入行业交流群:六六(微信 13138755620)