▌Project Siren Episode 1
-坏的开始
Siren是一个虚拟数字人项目,名字取自北欧神话,女妖塞壬。相传她拥有天籁般的歌喉,常用歌声诱惑过路的航海者而使航船触礁沉没。
黎叔(沈黎,腾讯互动娱乐新体验与技术部理副总经理)起这名字的时候,光注意了名字的调性,英文不错的我们,也都纷纷叫好。古有贞子破屏而出,今有塞壬让宅男破幕而入,这个愿景激励着我们努力。
不曾想,今后的宣传中,无数人跳出来说,起什么代号不好,偏偏要起一个“死人“的代号。所有的能力,都会遮蔽双眼。英文不错,反是负担,我们都忽略了Siren还能被解读成死人。
好在当时,我们并不知道这一切。倘若不然,想必在研发的过程中,大家会多了些许负担。而对于这样一个艰巨复杂的项目,没有信心的我们,若非无知无畏,若非轻装上阵,早已落荒而逃。
-真正的开始
这个项目来源于一次合作。Epic和腾讯希望找机会做技术合作,于是我们和Epic CTO开会交流。
会中各种方向讨论,都不算靠谱,或者是太鸡毛蒜皮,或者是太虚无飘渺。最后他抛了一个想法,想要合作做虚拟音乐会,也就是一段超高质量的MV,大家觉得还不错,于是匆匆结束下午的会议,进入了大家喜闻乐见的晚餐环节。
晚上商务宴请,一顿潮汕火锅涮完,CTO碎碎念着,说大家不太喜欢这个想法,闲谈中聊到这个项目,没有那种眼中有光、心中有火的状态。
然而这并不重要,一肚子牛肉要消化,明天总要到来。所谓方向,即使一开始并不起眼,也许熬着熬着,做着做着,也就柳暗花明了。
但事实是残酷的。大多数想法,都不会做着做着才变得惊艳。一个好的想法,自然有打动人的力量,即使一开始那么不起眼,当你听到它,就会觉得,就是它了。虚拟演唱会的想法,还缺一点意思。
第二天,Epic的CTO同学又带来新的想法,这次的方向,就是虚拟人。所谓虚拟人,就是高质量的CG人物,能够乱真,可以交互。
这是一个有趣的想法。
并不是每个有趣的想法,都有价值,我们又该如何判断它的价值呢?
-决策
对于未知领域,究竟什么想法靠谱,什么想法不靠谱,很依赖于人的直觉,但也有一些客观的方式可以判断。依我看来,有四个维度可以帮助做决策。
你先要看可行性,再好的想法,做不出来也是白搭。我们可以承受适当的风险,风险越大,越看不清的方向,就越需要控制投入的规模。虚拟人这个想法,有不错的可行性,电影行业特技已可乱真,而游戏行业静态画面也能媲美照片,在这个飞速发展的时代,的确孕育了实时渲染的数字人技术的可能性。PC消费级硬件的性能突飞猛进,已经奠定了基石。
可行性不光看大环境,自己团队是不是适合做这个事情,也是一个重要的考虑因素。我们团队有不错的游戏开发经验,也能胜任高级渲染技术的开发,而更重要的是,Epic的CTO Kim Libreri,来自电影行业,从事电影特效多年,赢得过两次奥斯卡奖项,有足够的行业洞见和人脉资源,是一个最佳的带头人。
看完可行性,再要看它有没有技术壁垒。如果投入做一个很简单的技术,其他团队很容易就能复刻,那么投入的价值就不那么大。既然是探索新领域,我们希望“用时间换空间”,投入更长的时间,获得持续的积累,而我们也希望这个积累,能产生一些壁垒,让别人很难轻易复制。虚拟人很符合技术壁垒的定义。这个项目在多个领域需要做出突破,在建模精度、RIG质量、渲染效果、实时表情捕捉等各个方面都有巨大的挑战。这里有相当多的领域,横跨了游戏和电影行业。而所有跨越边界的技术,都不好做。游戏谈起渲染质量,电影乐了;电影聊起实时交互,游戏笑了。陌生行业的鸿沟,那些越过边界的不确定性,那些遇到难题的不知所措,就是技术的壁垒。
The brick walls are there for a reason. The brick walls are not there to keep us out. The brick walls are there to give us a chance to show how badly we want something. Because the brick walls are there to stop the people who don’t want it badly enough. They’re there to stop the other people.
Randy Pausch
网上广为流传的“最后一课”的教授,也讲过,墙并非无缘无故而来,墙把我们挡在外面,只是要给我们一次机会,一次证明自己的机会。它在那里,只是想把那些意志不够坚定的人阻挡在外面。这堵墙,就是技术的壁垒,它不仅仅是努力的目标,也是努力的信心。因为我们知道,当我们翻过这堵墙,它就是我们的壁垒,阻挡那些不够坚定的竞争者。
然后要看它有没有技术价值,这个技术,会不会产生有价值的积累,应用到其它产品中。实验室的前沿技术,大多不能应用在实际的产品中。而能用在产品中的技术,往往有不够高端。我们要寻找的,是那些略高于目前技术水准的技术,可以在2-3年后,应用到产品开发中。
虚拟人技术,跨越了多个领域。其中渲染质量的提升,相当多的理念都可以受益于电影行业的技术。在渲染领域,电影行业的今天,就是游戏行业的明天。提前了解一些更高端的技术,对未来的游戏研发技术,也有实质性的提升。而研发过程中,也能产生大量的副产品,这些副产品,同样可以用于游戏研发,提升研发的过程技术。比如AAA游戏以及一些叙事游戏,类似《底特律—变人》、《Hellblade》等,早已开始用类似的制作管线生产过场。而更基础的照相建模、动作捕捉,也在游戏开发中越来越广泛使用。在国内行业中,大量外包公司也已经提供类似的服务,如果自己拥有这样的设备,可以大大加速迭代的速度,也能深入研究,开发更多有趣的功能。
最后看它能不能吸引眼球,能不能被外部认可。再好的技术,做出来无人关注也是不行的。一个团队的可持续发展,需要吸引人们的注意力。而这个项目,定位在跨越恐怖谷,如果能做出来,一定会非常吸引眼球。
为什么说恐怖谷会是一个吸引人的价值点呢?需要了解这一点,必须要讲一下恐怖谷理论。恐怖谷理论在1970年由日本机器人专家森政弘提出:
森政弘的假设指出,由于机器人与人类在外表、动作上相似,所以人类亦会对机器人产生正面的情感;直到一个特定程度,他们的反应便会突然变得极为负面。哪怕机器人与人类只有一点点的差别,都会显得非常显眼刺眼,整个机器人显得非常僵硬恐怖,使人有面对僵尸的感觉。可是,当机器人和人类的相似度继续上升,相当于普通人之间的相似度的时候,人类对他们的情感反应会再度回到正面,产生人类与人类之间的移情作用。
Wikipedia
https://zh.m.wikipedia.org/wiki/%E6%81%90%E6%80%96%E8%B0%B7%E7%90%86%E8%AE%BA
在电影行业,已经非常接近跨越恐怖谷的阶段,大量计算机视觉作出的虚拟人,在场景中和真实演员一起演出,粗看并无破绽。但电影毕竟拥有海量的资源,计算资源接近无限。而在实时渲染领域,并没有类似的技术,在计算能力受限,成本不高的消费者领域,缺乏同等级别的技术。如果通过这个项目能在实时内容领域产出足够高质量的技术,那么吸引眼球这个目标并不难做到。
综上,虚拟人这个想法,非常理想,符合上述所有条件。我们马上热血沸腾,和Epic一拍即合。
我们对项目目标的定义,是非常简洁的一句:Crossing the boundary。跨越影视和实时渲染边界,制作可实时交互的数字人物。
---
▌Project Siren Episode 2
-合作
于是,一个跨国合作项目就开始走出了艰难的第一步。谁也不曾想到,日后的研发和合作过程是多么困难。
这次的合作,相比过往项目,更为艰难,我们想要建立一个跨国团队。显而易见的是,我们跨越了文化,也跨越了时区,不那么明显却同样重要的是,我们跨越了行业,一起工作在陌生的领域。
这个项目的团队来自四个公司,分属四个国家。
美国的Epic是整个项目的发起人和协调人,它是领路人,带领整个团队,跨过影视和游戏行业的鸿沟,它也是整个项目的整合者,负责把所有的工作整合到一起。塞尔维亚的3Lateral是高精度模型和Rig的开发商,负责制作高精度的人物模型,同时制作高精度的Rig来驱动模型。英国的Cubic Motion,负责实时的表情捕捉和还原。NEXT Studios则作为整个项目的Owner,在其中负责Unreal引擎的渲染增强和性能优化,提供基于Unreal引擎的高质量的人物渲染,我们也积极参与各个研发的全过程,学习流程。
由于四个国家跨越四个时区,这让每次周会成为一个痛苦的经历,总有一个或者两个地区的人们,在一个很尴尬的时间参会。而因为一些不可明说的原因,在国内经常无法访问一个常用的视频会议服务。但这些,都不算太大的困难,真正的困难,始终在人身上。
2017年2月,项目成立,NEXT第一批研发团队开工。
我们尽可能把内部最好的渲染人才都投入了这个项目,但这个方向还是比较前沿,实时渲染真实的人像,自COD的Paper开始,已经持续进步了很多年,主流AAA游戏,都能做到非常真实的人像渲染了。但对于这个项目,还嫌不够,我们还需要研究更好的渲染算法,开发更多的特性。
原定的方式,是Epic找一流的技术专家,给予我们指导,建议方向,我们来做研究。开发团队开始研读Paper,频繁交流。早期的几次周会,都是从论文出发,进行讨论。渲染领域的同学,用公式和想象,进行隔空过招;非渲染领域的同学,听得昏昏欲睡,恨不得夺门而逃。
然而我们很快就遇到了瓶颈。
远端的资深专家,工作繁忙,只是抽空给予指导。可是前沿的渲染领域,大量细节,除非对方直接参与深度研究和实现,否则很难仅凭印象,来做讨论和指导。当我们做出代码实现,如果结果有争议,遇到具体问题需要解决,无论是多牛的专家,没有深入一起做实现,投入足够的时间,就不能判断究竟实现错误,还是论文方向错误。而一周一两次的远程沟通,信息密度和频度都不足以弥合信息的Gap。于是,一些图像特性的开发,陷入了胶着,谁也不能说服谁。我们徒劳地做着各种各样的尝试,或是自发的,或是来自远程的建议,但始终没法有突破。
此外,前沿的渲染,也很难从纯技术侧予以推动,具体来说,大多数时候,一个特性的实现,也需要和技术美术(TA)一起把最终的效果做出来,才能有说服力。我们这里的团队,也有一定的技术美术能力,但还没有到能领导方向的程度。
随着合作进一步进行,大家逐渐意识到,依赖纯程序、低频度的交流,已经很难推动特性研发了。
合作问题的最终解决,是Epic侧换了接口人,由技术美术专家主导,和我们渲染程序员交流。大家很快就发现,在更好的合作性下,两个互补的工种推动工作,一切都顺利了很多。程序的实现,也更快有了美术侧的应用,技术美术给出针对性的意见,也会推荐其他的实现方式,继续让程序员尝试。
有些工作,依赖工种能力的互补,会胜于同类能力上的增补。
-模特
眼看时间一点点过去,过了两个多月了,其他几个团队还没有开工,他们有不同的档期安排。
我们理应非常恐慌,恐慌来自于自信的不足,从没做过的业务,不知从而入手,不知进度如何。可是,我们却有谜一样的自信,自信来自于Epic的胸有成竹,同类的事情他们做过多次,只要不出问题,一定能做到更好。
2017年的GDC过后,Epic的团队也开始更多投入Siren项目。Epic有一个精英团队,专攻各种特殊技术,他们的项目节奏,围绕各种展会,交付种种黑科技。Siren也是他们下一个重要的目标。
因为是远程项目,信息交流不畅,多方一起开工,就发现了很多问题。
比如,我们要渲染人,就需要选一个模特去做3D建模扫描。之前我们得到的所有信息,就是找一个漂亮的女孩子,参与2-3天的全程扫描,后续再有2-3天的配合工作,就能完成目标。于是NEXT的筹备工作,打算从公司内部找人参与,物色了一些不错的人选,也和对方Leader谈好了,需要支援一段时间,大家相谈甚欢。
可是,很快我们就发现,要做的事情,似乎超过了2-3天的全职时间。一会要模特去做一下牙齿数据采集,一会要模特去拍个参考照片,一会要模特去选适合的衣服。这还没开始正式扫描,就已经有那么多琐事了,正式开工以后,肯定会有更多的事情。
我们面临了一个困难的决策,继续用已经选好的模特,还是换一个专业和全职的模特。
其时离需要拍LookDev的参考照片时间已经不足3周,临阵换人,时间有点紧。但一次次让公司内部其他部门同事请假来支持我们,并不是长久之计。本来是一个线上的业务,一不小心,跟线下打起了交道,活活做成了O2O(online to offline)的项目。
无奈之下,我们只好在最后关头换模特。我们找了外部公司,找到了日后的合作演员:姜冰洁。
-曲线-中间节点
从2017年GDC,到我们2017年底的节点,还有很长的时间,因为整条数据生产的Pipeline非常长,从扫描到生产,有很多的步骤流程,有多家公司合作。
作为一个团队,我们也不能一直没有产出。于是Epic团队找了一个中间节点。7月底的Siggraph是一个不错的节点,时间上比较合适,有机会产出一些成果。
Epic团队定了个方向,做一个VR的面对面Show,他们扫描了Mike Seymou,Fx Guide的创始人。用一套完全一样的Pipeline,把Mike模型导入了Unreal,一路趟了很多坑,把引擎流程中不适合的地方一一走通。NEXT这里做的一部分渲染特性也被整合进版本,进行了一轮验证。
做这些功能的时候,NEXT的小哥哥们心里还是有点抵制的。本来说好了做一个美女,突然中间加入了一个新目标,去做一个老爷爷… 大家可以看一下照片,感受一下画风的突变。
新的目标造成了巨大的心灵创伤,但我们的程序员还是非常敬业的。他们调整心态,把不同代码分支的特性,整合进了Mike的分支。
Mike的演示在VR中进行。团队进行了性能的优化,确保有尽可能高的帧数。Epic团队重用了当年做Hellblade的所有流程,加上各种新功能,做成一个1.5的版本,就直奔Siggraph了。
我们的谜样自信,在这次展会被小小打击了一下,知道此事并不简单。
可能是艺高人胆大吧,今后的合作中,每次有重要展示节点之前,版本总是一塌糊涂的,但合作各方居然也能欣然前往会场。在Siggraph展出前夕也是如此,各种优化效果需要调整,性能不达标,Cubic Motion的表情捕捉又不能稳定工作,甚至忙到Siggraph的第二天展示,还陆陆续续有新的修正被加入现场版本。
好在Siggraph展出非常成功,在Hellblade的整套管线上,技术又得到了进一步的升级,人物渲染的质量、捕捉和建模的精度,都有了不少的提升。如果说Hellblade的人物,还有一点数字痕迹,那么Siggraph中的Mike,已经很难识别出是一个CG制作出的人物。Mike在讲话的时候,口型还略有奇怪,看上去有些僵硬,但如果抛开口型不看,上半部分的脸,完全达到了最初的设想,真假难辨。
整体来说,这个中间节点是成功的。但我们也进行了深刻地反思,为什么展前如此狼狈,我们今后需要如何改良流程。改良的结果,是完全无效。一模一样的忙乱,在今后的研发中多次重现,我们经历了腾讯内部汇报的几天忙乱,经历了GDC前夕的通宵折腾,经历了后续Siggraph展出前的紧急突击。总是在展示现场奋战,直到最后一刻,才能最终搞定。
也许高科技就是这么矫情,轻易不肯展示它的魅力吧。
---
▌Project Siren Episode 3
-渲染
Siggraph这个中间节点的工作非常成功,验证了新的流程,Cubic Motion新的捕捉技术也慢慢成熟。
而另一头,我们的主要版本,也在缓缓推进。
我们先在5月前后拍摄了姜冰洁的Look Dev参考照片。所谓的Look Dev,就是指我们需要拍摄模特在各个光照方向下的照片,多角度捕捉,然后在后期Unreal渲染开发中,会尝试用引擎还原当时的光照情况,然后把数字模型放在一样的位置渲染,逐帧对比渲染图片和实际照片的区别,尽可能调到一摸一样。
这个做法可算让人大开眼界,因为游戏渲染其实没有要求如此精确,基于目测而不是精确的对比,渲染到大致差不多就行了。换一个角度看问题,的确会得出不一样的做法,游戏的画面和真实的差距太远,想不到要如此准确去评估渲染质量。而电影本就是要以假乱真,自然用最精确的方法去推动质量改善。
据说电影行业一直就是用这样去做测试,因为CG的制作过程非常长,有很多步骤,他们要不惜成本保证每一步质量都尽可能好。如果不这么做,那么经过多个步骤以后,误差就会累计和放大,结果就没有办法看了。
我手边没有标准Look Dev的对比照片,找了两张近似的。后面两张照片,一张是真实照片,一张是Unreal中的渲染照片,注意看头发部分,可以区分真实和Unreal渲染照片。实际Look Dev工作中,会精确找到光照一样、角度一样的两张照片,来做针对性调整。当然数字环境和真实毕竟还是不一样的,不可能100%还原。从上述照片来看,我们也的确尽力做到最好了。
有了科学的方法,也不代表我们就能做出一流的效果。高端渲染,后期的改动相当微妙,我们也不具备能力分辨细微的画面差别。所以我们还需要一个CG Supervisor。
CG Supervisor是一种非常神秘的职位,这个职位的术语,在影视行业用得较多,游戏开发行业往往称之为Art Director。他们对渲染差异非常敏感,很多时候我们只能模糊感知到画面有所不同,但他们却能精确定位问题,给出修改方向建议,告知如何调整。
The computer graphics supervisor, or CG Supervisor, is a person involved in the production of computer generated imagery, be it animation or visual effects. Due to the variety of productions and duties required, most CG supervisors are specialized in one area such as art , programming , or management.
Wikipedia
https://en.wikipedia.org/wiki/CG_Supervisor
来自电影行业的CG Supervisor和电影制作的TA,指导我们的渲染功能开发,指导整个项目的美术素材制作,帮助我们一步步把基础模型的品质提高,把渲染功能完善。整个Look Dev的过程,贯穿了项目的始终,直到后期,还在不停地进行修正,力图达到最好的显示效果。
-扫描
如果说程序的开发,还是我们力所能及,可以参与的,那么模型的制作,就不是我们能把控的。开工数月,还没有开始扫描模型,我们很惊慌,因为模型是后面所有制作的起点。
联合团队在6月份一起去了塞尔维亚,带着模特,去了3Lateral公司扫描高精度模型。
扫描的过程,是一个照相建模的过程。我们让女演员在场地中站好,按下快门,数百台高清相机同时启动,从全方位拍下模特儿的各个角度的照片。这个图是一个简单的示意,我们当时使用的设备,会更大更复杂。
整个使用过程并不复杂,复杂的是整套设备。在十几平方的扫描房,搭建各种架子,放入数百台相机,光是固定相机和完成连线,这就是一个极其巨大的工程。电源线、相机控制线,接入多台电脑的USB HUB,然后电脑又通过网络连接到一起,用一台电脑作主控。主控电脑上发出操作指令后,多台连接相机的电脑用合适的拍摄参数,同时操作数百台相机拍摄。数百台单反相机快门同时触发,汇成一声巨大的咔嚓。然后千百兆比特的照片在网络中传输,汇总到主控电脑,做进一步的处理。
捕捉脸部模型的设备,是在几周前才开始组装的。整个系统从结构上来看并不算复杂,但由于部件比较多,所以整体容易出问题。比如有一阵子,按下快门后,有几组相机没有随着其他相机一起拍摄。
这类设备的Debug过程,和电脑装机差不多,无非就是换换零件,插拔线头,重新启动。老外们忙了半天,开始怀疑到USB Hub。我们凑过去看热闹,发现整套设备各种高大上,但其中的USB Hub设备,用了中国的某流行的低端品牌。连我家里都嫌弃的品牌,他们居然用在工业级别的设备上?
我们赶紧告知他们,这个牌子质量一般,建议全换掉。只可惜,塞尔维亚体验不到早上下单晚上到货的服务。他们只好先从公司找了几个备用的USB Hub,换下出问题的几个Hub。但是这些Hub的问题不是不能用,而是不稳定,时好时坏。大多数时间是可用的。整个系统有上百个Hub,出问题概率就不低了,有某个Hub出问题了,就要重拍,大家在提心吊胆中进行着后续的拍摄。
几天拍摄很快过去了,我们一边帮忙,一边学习。期间采集了大量的数据,包括静态脸部数据,身体数据,牙齿数据,眼睛的特写数据和各种表情数据。姜冰洁一会摆成人字,一会摆成S字,一会瞪大眼睛,一会鼓起腮帮,做出多样的动作,满足着各种扫描需求。
完成采集数据后,Epic、Cubic Motion和我们各自回国,后续的建模工作,就全留给3Lateral了。
几周后,静态的模型逐渐交货。我们的团队也就开始了LookDev的过程。3Lateral团队继续忙着做后面的Rig系统,为面部表情做好准备。
-动作捕捉
有了模型,有了渲染,还少了一个重要的环节:如何让这个虚拟人物可以动起来。
受限于技术和精度要求,动起来这个任务,被分成两部分。一部分是动作捕捉,一部分是表情捕捉。外界也有些动补技术,可以合二为一,但对于这个项目,精度和效率都不能达到需求。
动作捕捉是相对成熟一些的技术。动作捕捉已经发展了挺多年,主流的技术都有不错的表现。在AAA游戏开发中,我们制作动画数据时候也一直在接触。只是这一次,需要实时响应,稍有麻烦。我们使用了Optitrack的技术,动补的数据,需要直接在电脑上采集,然后Streaming到Unreal中,再展现到我们的Rig中。好在这一块技术上也不算太复杂,主要就是很多工程上的细节需要去做。
贴完传感器,开始捕捉各种动作,先走通了UE里面的Live过程,再开始仔细根据动作捕捉,研究身体Rig应该如何改进。在模型的关节处总有各种问题,需要一一调整,但总体来说,还容易搞定。
最难的地方,无疑是脸部表情了。
---
▌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的故事还将继续。