VR Tech Tour系列之一 ——Reality Capture
作者:顾煜 腾讯公司 互动娱乐研发部 引擎技术中心负责人 专家工程师
未经允许,请勿转载发表
内容摘要:
VR的繁荣,离不开各种黑科技,它们或许并不成熟,或许非常昂贵,或许不为人知,但它们都在酝酿着改变世界的力量。Tech Tour(技术之旅)是一个新的系列,我们希望借助这个系列,帮助你用最少的精力和时间,了解VR相关的技术发展,获得不一样的技术视野。
本文介绍了一系列重要的现实捕捉技术,这类技术一直都在缓慢发展,借助VR这样的新型表现形式,在最近一年中有了飞速发展。现实捕捉技术借助摄像头,把大量现实中存在的物体采集到虚拟世界,对提高显示质量、灵活展现物体、高效生成模型等领域都有巨大的帮助。
VR Tech Tour系列下期预告:我们会介绍Holoportation的幕后技术。
1. 如何让VR社交更有沉浸感
VR发展的初期,社交是一个看上去很美好的方向,业界有不少公司在做基于VR的社交系统,比如altSpace、vTime、High Fidelity等等。更多分析详见:《多远都要在一起-VR社交初探》。
近半年来我们团队一直在做VR社交的工作,前两天和别人聊起这个方向,被问了一个终极问题,说有了QQ微信,我为什么还要在VR世界里面社交。QQ微信既可以碎片化社交,又可以做群体社交,应用场景多元化,群众喜闻乐见,而VR社交,难以回避的问题有装机量小,头盔闷热不舒适,体验过于重度,无法碎片化使用等等。
虽然没有准备,但我毫不犹豫作出胸有成竹的样子,行走江湖,当别人问你A,你要自信的回答B,别管A和B有没有关系,响应时间越短表情越坚毅,答案可信度便会显得越高。我便正色告知,你说的缺点都存在,短时间也很难解决,但是VR社交的沉浸性和临场感,是传统社交无法比拟的,我们总期望在某些时间能有比传统线上社交更高阶更多元化的体验,VR可以在这个维度上很好的满足大家。更多分析详见:《美妙的谎言:我在现场 —— 临场感,VR媒介的新维度》
这个终极问题引发了我们进一步的思考,VR本身有很好的沉浸性,但离开了VR给我们的第一印象的冲击,还有什么可以持续吸引我们投入呢?对社交本身来说,如果能有更好的Avatar呈现,就能带来身临其境的社交感。市面上VR产品,也在这个方向投入很多。常见的做法有这么几种:
- altSpace的虚拟avatar,做成简单的机器人样子,会有一些转头和手部动画来进行互动。当看见avatar转过身和你互动的时候,心里的确会有一点小感动。没体验过的人,是很难感受到这种感觉的。考虑到altSpace是虚拟社交的先行者,简化处理avatar换取更快的迭代速度,抢占时间先机无可厚非。
- vTime的avatar,卡通化的人形avatar,可以有更亲切、更自然的交互。这代表了目前主流的技术趋势,卡通模型制作成本适中,适应范围比较广。
- HighFidelity走了另外一条路线,稍有风险,从图中可以看出,它的avatar更像真人。真人类型的Avatar,如果做得不够好,就有可能引入恐怖谷效应。事实上,在体验版本的时候,由于IK的问题,avatar很难做出良好的肢体动画,时不时让我有摔手柄的冲动。但综合效果还可以,的确可以比卡通avatar更让人投入。
上述几个产品,在自己的领域做了很多的尝试,也能代表VR界目前主流的水平。它们在相关的领域解决问题,但都有一定的局限性。有什么办法可以在这个领域更进一步,达到更好的社交沉浸性呢?
让我们转换一下视角,看一下3D内容制作领域,也许能找到一些答案。
高质量的3D内容制作,一直是一个困扰开发者的问题,无论是在传统游戏开发中,还是在VR开发中,制作大量美术资源,一直是一个成本高昂、管理复杂的工作。即使对于简单的游戏,外包费用也相当不菲,如果是涉及到动画,就更会对美术的能力提出了巨大的挑战。很多画面一流的游戏,一旦涉及到动画,就会给人各种说不出哪里不好但这个游戏有点不太对劲的感觉,往往这个不太对劲的感觉,就来自于不够自然的动画。
搞不定动画,也不用死磕,行业发展出了Motion Capture,思路很简单,就是通过这个技术来对演员进行动画捕捉,再把高质量的动画数据应用到游戏中去。Motion Capture是一个理念上的进步,终于让我们足够高效的做出大量高质量的动画数据了。这是一个非常重要的思路转变,美术从直接进行抽象的动画制作,转向捕捉现实中的动画来,把现实的数据用到了虚拟世界中。
把现实映射到虚拟中,便于多快好省的产出高质量的内容,这个思路也可以应用在其他数字内容的制作中。于是在这一次的VR浪潮中,我们看见了大量的新技术,都打着Reality Capture的旗帜,解决着内容制作的问题。这个Reality Capture的思路,有可能更好的改善VR社交的沉浸感。
2. 模型的捕捉
首先可以想到的技术,是通过多角度多镜头来拍照,利用计算机视觉算法,合成出3D的模型。这个方向如果能实现,就可以快速进行建模工作,帮助美术降低工作量。当美术有了这类工具,就可以把大量建模流程加速,先用拍摄方法对真实生活中存在的物体进行初步的建模,然后在DCC类型的工具里面进行精细的修正。
这个技术方向听上去很可行,实际也已经被开发出来了,我们来介绍两个有趣的建模技术。
先来看CapturingReality公司开发的技术,他们开发了一整套捕捉和还原3D模型的技术,技术名字就叫做RealityCapture。
和我们这篇文章要介绍的其他产品不同,这个产品,已经是高度可用的状态,它提供编辑器,供美术使用。用户可以从多个角度拍摄一个物体,把这些照片一起导入软件,就会在数小时内根据这些照片,生成真实可用的模型,整个软件易用性很强,也做了良好的优化。
看一下图片来感受一下RealityCapture的效果:
- 先导入一批照片,从各个角度拍摄
- 初步生成模型
- 生成材质贴图,右边是生成的模型,左边是原始的某张照片(实际需要上百张),后续可以导出模型。
我们可以看到,用这个过程来生成3D模型,可以大大加速整个流程,生成初步可用的模型后,再由美术进行进一步修正。
更进一步信息,请移步youtube和官网
官网: https://www.capturingreality.com/
视频: https://www.youtube.com/watch?v=r3OF7LcmcaA/
转化腾讯视频地址: http://v.qq.com/x/page/n0323471wap.html
创业团队能想到的方向,传统厂商当然也不会落后。老牌DCC厂商Autodesk也做了非常多的工作,他们的一个相关的产品叫Autodesk Remake,思路和Capture Reality很相似。
- 先从各个角度拍摄物体
- 这是所有的照片
- 在3D空间计算照片的位置
- 最终合成,建模,效果如图
进一步信息见Youtube:https://www.youtube.com/watch?v=D7Torjkfec4
转化腾讯视频地址: http://v.qq.com/x/page/b0323sqz0w2.html
这是组内程序小伙伴用Reality Capture,给我们的公仔做了3D模型,第一次做,效果还不是很理想。但也能看出技术的潜力了。
当然,这类技术也是有很强的局限性。
- 需要有足够多的照片覆盖模型的每一个细节,autodesk视频介绍说对每一个可见点,需要2~3张照片覆盖,才能给软件提供足够的数据生成最终的模型。如果有缺失的话,就会造成模型上有洞,比如上面的企鹅公仔,就在帽子下方有漏洞。
- 其次是技术本身无法捕捉动态物体,只能捕捉静态物体,这给可用性带来了不小的问题,动画就无法捕捉。
- 最后是技术工作在image space,所以对半透明或者透明物体,就没有办法建模了。
即使有种种局限性,这类技术还是有非常大的价值,这类技术可以在1小时内完成一个常见模型的初步建模,对于美术效率提高不言而喻。
3. 动态物件捕捉
一切看上去都很美好,但这些技术还不完全是我们想要的技术。主要问题是在于它们的第二点约束条件,这是静态建模的技术,无法用在动态物体上,如果我们希望在社交过程中有更好的动画,更多的交互,这些技术是无法实现的。
设想一下,如果我们拥有了动态物体的捕捉技术,那么在这些场合,可能会有很好的应用场景:
- 我们可以捕捉一段偶像的3D全息MV,可以从多角度回放和欣赏。
- 对于远程社交聊天,如果能有朋友、爱人的虚拟形象,对于沉浸感会有很好的帮助。
- 再来一个毛骨悚然的应用案例,如果亲人患了绝症,最后要和家人告别,一段动态捕捉的全息视频,也会让他永远活在大家的记忆里。
可见,这样的技术对于我们要做更有沉浸感的VR是很有帮助的。
有了应用场景,我们再来想想技术该怎么做。很容易联想到,由于是多角度拍摄多张照片来重建模型,拍摄这些照片需要一定的时间,而动态物体在这些时间内,形态已经发生了改变,所以无法进行捕捉。
那么,如果我们在同一个时刻,就使用多个摄像头进行一次同时的拍摄,不就可以捕捉动态物体了吗?
8i是一个新的创业公司,他们就在做类似的工作。
8i建立了绿幕摄影棚和服务器集群,通过多个摄像头来拍摄中心的人,然后再进行进一步的处理,生成基于voxel(体素)的角色。一个摄影棚有50个以上的摄像机组成,采集巨量的视频进行后处理。
当体素角色生成以后,就可以很容易的整合进自己的程序或者游戏来使用了。进入VR世界后,我们也可以观察到’高质量’的人物。
Steam上的免费8iVR demo,大约有4段视频,容量是惊人的7G多。8i制作出来的人物,在VR HMD里第一观感,还是不错的,可以从各个角度观察人物,而且是真人采集,自然不存在恐怖谷效应,非常能让人融入,仿佛对面站着的就是真人。但看着看着,就有奇怪的感觉了,比如后面几张图:
这个技术的缺点在于:
- 人物边缘处理的不够干净,有很多artifacts,时不时会有抖动。如果拍摄头发或者蕾丝边缘的衣服,就更明显,大量高频细节对算法有很大的考验,8i在这样的传统难点问题上也没有突破。
- 性能开销非常大,我们团队曾经在Steam版本上看过实现,渲染方面完全没有优化,50万个点,即使在980级别的显卡上,也需要1.5ms才能渲染完。
- 由于是体素方式来呈现,而且体素极多,所以常见的3D渲染技术,阴影和光照,都没有办法做。这会导致人物和场景融合不够,也没有自投影,人物特别“平”,如果场景光照和摄影棚差不多,那还好,否则的话就是一个很假的人凸现在场景中,非常突兀。
- 容量太大,基本一分钟的视频需要2G容量,这个容量,就不用考虑网上Streaming了。
- 预处理时间非常长,需要用server阵列算很久。
8i的不足,在于它的体素呈现,无法应用到大量即时渲染的特性,同时很难在精度和容量之间取得平衡。我们继续技术旅程,于是发现了这两个公司的产品,Uncorporeal和4DViews。
UnCorporeal的思路和8i类似,也是用多个摄像头来拍摄人物或者场景,通过多角度的拍摄后,产生了大量视频,然后通过后期计算处理,来重建3D的人物或者世界环境。重建后,生成了3D的模型,这样在3d渲染世界里面,我们都可以看见更真实的人物和场景,和基于美术3d建模的内容相比,观感上会非常不同,更真实。
这个技术和8i的区别,主要在于,8i最终的输出,是体素的模型,比较简单,但缺点也很明显,由于没有使用polygon,多数成熟的实时渲染技术无法使用,很难处理阴影和光照等信息,导致渲染的人物画面很难和其他部分融合。
而Uncorporeal在最终的展示上,有一定的区别,它会把体素数据,最终转换成了多边形的模型,这样,渲染的时候,就可以用到所有的主流实时渲染技术,让光照和阴影成为可能。
我们体验的demo中,有一个demo是一个女孩在一个黑暗房间里面,htc vive手柄是一个手电筒,可以照亮这个房间的一部分,在移动手电筒的时候,可以发现光影变化很自然,能照亮女孩,背后的墙壁也会有自然的阴影投射,这些特性都是8i做不到的。
说到这个技术的缺点,有不少也是目前这类volumetric capture技术的无法规避的通病:
- 对于动画,这个技术并没有往游戏通用的骨骼蒙皮去做,而是暴力采用每一帧生成一个模型和一组贴图的方式来做,这导致了巨大的容量,他的容量和8i相比略少,但基本是在一个量级上。
- 预处理时间非常长,需要海量的存储空间,无法实现streaming和实时直播需求。
- 同时画面边缘也会有比较多的artifacts,几副画面拼接不光滑,头发这样的高频画面细节会有一定的闪烁。
但至少在小范围,让我们看见了新一代的技术的潜力,照片级别的真实性配合3D建模的灵活性,可以很好提高vr的呈现力。在运算性能提高后,也可以帮助我们更容易得生成vr可用的数据内容。
Uncorporeal已经可以在很大程度上满足我们的avatar需求,直到我们看到了4DViews。这也是和Uncorporeal类似的技术,把多角度的视频流转成了3D模型。但4DViews在人物边缘处理、容量上做了更多的改善,在可用性和可靠性上也走出了坚实的一步。
4DViews也展示了在影视作品中的应用,下面这些画面中的军队都是录好单个士兵,然后直接拼接进视频的。
容量方面,4DViews给出的Demo,154mb对应9.27秒,相对其他几个产品,已经小很多了。
总体来说,这是一个制作更精良的技术,更具有可用性。
4. 光场,捕捉一切
鱼和熊掌不能兼得,巨大的灵活性和效率提升,带来了质量上的不足。另外有了人物建模,场景怎么办呢?质量如何进一步提高呢?
之前的所有捕捉技术,都是利用计算机视觉做了大量的计算,然后生成模型。然而这个转换过程本身就是有损的,而且受限于精度和算法,模型的质量都还有很多提高空间。
对于一些对画面质量有极高要求的场合,比如电影制作,Lytro的光场摄像机技术带来了另一个思路。
Lytro的光场相机带来了很多不一样的技术,所以我们对他们光场摄像机也抱有很高的期望。但光场摄像机,和光场相机并不是一回事。
光场摄像机,使用了相机阵列,比如两百个摄像头放在一起,然后一起拍摄视频后,产生两百段视频,然后通过软件合成,做成了一个完整的视频。这个视频有如下特点:
- 由于阵列上每一个镜头都有微小的位置差别,所以拍摄到的画面有角度和位置不同,这就保证了人在一定的范围里面可以随意平移视角,观察到其他视角无法看见的东西,但是很遗憾,摄像头还是在那个位置上,所以视点往其他方向位移,无法看见不同的东西。目前位置平移的范围是在头左右各35Cm范围,整体是70cm,这个数字还在进行调整。
- 由于是在image space做的,所以每个点都有最高质量的精度,所有复杂的场景,角色和光照,都会被保留。
- 理论上也可以拍360度视频,只有把摄像头放一圈就可以,我们也看见了相应的视频Demo。
- 也可以和动画电影整合,只要渲染动画电影的时候,按照他们的camera位置,渲染多幅画面,就可以在后续由他们的软件系统,合成成多角度可看的视频。
然而这个技术的局限性也非常大:
- 数据极其巨大,相当于普通视频上百倍,虽然可以有很大的帧间压缩,但依然是一个很大的问题,完全无法做到可以streaming的级别。我们看演示demo的时候,所用电脑接在一个高端的硬盘阵列上,无数硬盘在狂闪。50G/min的数据量,普通机器很难承受。
- 生成这个视频的代价非常大,他们和google云服务合作,帮助生成数据,但计算量依然很惊人。
- 生成的图像依然有几幅图像融合的痕迹。人物边缘还有一些artifacts,不干净,他们解释是处理的精度不够,但更像算法上的问题。
Lytro商业模式比较灵活,他们可以提供完整服务,也可以提供计算能力、存储能力和软件的任何组合。总体来说,这样一个暴力的解决方案,不管是存储和计算能力上要求都极高,短期之内只能给商业客户使用,而且也很难快速达到一个高度可用的状态。
更多介绍见youtube:https://www.youtube.com/watch?v=kuN0lYeX0LA
转化腾讯视频地址: http://v.qq.com/x/page/x0323nh0qil.html
5. 总结和展望
看了这么多技术,简单做一个总结:
- 对真实静态物件的建模,Autodesk Remake和RealityCapture都是很不错的技术。
- 对于动态人物的捕捉,8i、Uncorporeal、4DViews可以通过多摄像头拍摄,合成带有动画的人物数据。
- 场景和电影方面,Lytro的光场摄像机有一定的应用前景。
但上述技术的计算量,和存储空间的要求,注定了它们在2-3年内还很难走进消费者的市场,更多是面向商业机构的内容生成。
6. 下集预告:
本篇我们介绍了静态模型扫描技术、动态模型扫描技术以及场景和光场的扫描。但Reality Capture的应用不止于此。
我们一直在思考,面向消费者的Reality capture技术,应该是一个什么样的形态呢?
用社交场景的视频通话案例来看,消费者需要用合理的计算量来生成数据,需要足够小的带宽来传输数据,需要足够高的精度来沉浸在VR中。这个要求并不容易满足,但是,微软的Holoportation在这个路上已经走了很远。集实时捕捉、环境感知、高效串流于一身的Holoportation,也许是VR社交的一个终极形态。
传送门:http://v.youku.com/v_show/id_XMTUxNTAxOTM4MA==.html
转化腾讯视频地址: http://v.qq.com/x/page/b03236awd81.html
在下一篇《VR技术之旅》,我们会介绍Holoportation的幕后技术。
我们也会进一步介绍捕捉模型后映射回模型以及衍生出来的相关应用。包括表情捕捉和重新映射以及3D Avatar重建等等。
注:以上文章仅代表个人观点
微信公众号-VR新观察