设计虚拟现实前,如何丈量真实世界?

之前在工作中遇到一个需求,是要将一些直播拍摄的场地以三维模型的形式复原至VR环境中去,于是花了一段时间研究了下三维激光扫描与摄影测量等方法。本文就是以VR设计师的视角对于这些技术的理解与整理介绍,可以结合到一些具体的案例场景给出推荐建议。

首先,做虚拟现实设计的前提是把现实世界把握好。现实世界在我们心目中是怎样的存在往往同时取决于外部世界的客观存在与个人主观认知的影响。但落到通俗的感知层面,就是“这个世界看起来怎样?”的问题。(听、触、闻等其他感知在现阶段可供设计的余裕不大,本文暂不涉及)

在传统3D游戏的美术设计中,玩家最终可见的视觉呈现效果一般是以原画/设定为基准,再由模型师进行模型的搭建、塑造(以及之后的渲染计算)。然而在同样需要3D虚拟场景设计的VR产品团队中,也许就不会需要有特定的原画师了——因为目前的VR产品设计一般更倾向于还原真实世界,而非充满艺术风格的虚拟世界。(在一些游戏中也会有类似情况)这种情况下,“逆向建模”成了最佳选择。


逆向建模,顾名思义就是“反过来建模”。传统的建模思路是:概念→建模→模型;而逆向建模可以概括为:实体→扫描(建模)→模型。

两种方法的最终产物都是三维模型,区别则是前者依据模型师/3D美术的想法进行创作、发挥;后者依据现实世界的实体进行扫描、还原。因此,逆向建模可以理解为“3D拍照”——普通拍照是将现实世界的信息输出成一个二维图像,3D拍照即是输出成一个三维模型。三维扫描与二维拍摄的最大区别之处在于三维扫描需要采集空间深度信息。也就是说,测量现实世界的“三围”数据(也就是获取空间深度信息)是三维扫描/逆向建模的关键。

常见的测量手段有TOF、结构光、双目视觉/摄影测量等。(如下图)


ToF:

ToF全称是Time of Flight。简单地概括它的工作原理就是:在传感器记录光线的同时,还会记录光线的“飞行时间”(Time of Flight)以计算物体到传感器的距离(即空间深度信息)。微软Kinect 2代使用的就是这种技术。

相较于结构光及其他几种技术,ToF在测量空间深度信息时受动态变化的光照强度影响较小(因为其数据来源是光线飞行时间而非光线本身),所以更适合进行动态、即时的测量,这也是kinect 2代改用此项技术的原因之一。(其实最重要的原因是kinect1代使用的结构光技术的来源公司被苹果收购了,这后面会提到:P)但ToF的缺点也很明显,在十几米距离外几乎无效(也就无法利用无人机高空飞行进行大范围的自然环境扫描了),而且分辨率也较低,注定难以真实再现现实世界了。

因此ToF更多的应用于即时、动态的人物动作捕捉等领域,对于玩家/用户的体验更加友好;然而对于VR设计而言,生产力则显得不够。


结构光:

顾名思义,结构光就是将特殊形式的光线(如条纹、点状光)投射至物体表面,通过捕捉光线形变量,来计算物体表面结构。(如下图所示)

原理如上图所示,即通过计算机编程产生正弦条纹,将该正弦条纹通过投影设备投影至被测物,利用相机拍摄条纹受物体调制的弯曲程度,解调该弯曲条纹得到相位,再将相位转化为全场的高度。

相较于“玩家友好”的ToF,结构光显然更适合用在精确、大批量的VR场景环境设计中。结构光扫描可以做到整个场景一次性扫描、录入并得到模型。其精度取决于扫描仪性能与扫描对象的距离。(理论上有效扫描的极限距离有数千米),并且扫描所得的点云数据能够存储不同时期同一空间位置的信息。

其实结构光只是一种扫描技术的原理,是一个很广泛的类别。具体的每种技术方案都各有区别(iPhone X前置的3D摄像头用的也是结构光的一种,该技术源自以色列PrimeSense,也就是为Kinect1代提供技术的那家公司),具体到产品形态就更加种类繁多(从小型手持式设备到大型三维坐标/扫描仪)。这些技术、设备在过去更多的被应用在了GIS、RS等地理、工程测绘领域,所以虽然听起来陌生,但已经是相当成熟的技术了,最近也开始被应用在了VR选房等O2O领域中。(如Matterport服务,下图)


双目视觉测距/摄影测量:

双目视觉测距是利用多视角捕捉到的图像信息进行视察计算来测量距离,摄影测量(photogrammetry)也就是应用这一基本原理的一项技术:通过对测量对象多个不同角度的拍摄,分析多张照片关键点,获取照片关键点在三维空间中的坐标,所以将照片输入至程序即可进行计算模拟出对象的3D结构了。

相较于ToF和结构光,摄影测量不需要特定的扫描硬件,数据输入端只需要若干照片(少则十几张,多则几百张),输出3D模型的质量好坏取决于作为输入源的照片的质量高低(清晰度、光线好坏、拍摄对象的特征点多少等因素)与数量多少,理论上输出模型质量的唯一瓶颈是计算机运算性能。在精度不足的情况下,通常采用zbrush等方法添加模型/纹理的细节。优势在于将每个独立物件建立完整的三维模型,因此可以保证输出场景模型后可以供用户/玩具自由移动位置、视角。。工作流程为:拍照——导入图片至项目——对齐——反复调整——输出结果。

摄影测量法的缺点在于需要的照片必须是外部环绕向同一中心拍摄的(即不能在空间内部向外进行三维重建);由于受可见光影响较大,在测量视觉特征较少的对象(如大面积纯色的平面物体)会有一定误差,同时对拍摄对象的材质也有限制,比如不可以是高反光(镜面)或高透明度(玻璃)。尽管有这些诸多的条件限制,但并不妨碍摄影测量技术在游戏设计中的大量应用。

游戏行业内最著名的摄影测量软件可能要属俄罗斯的Agisoft Photoscan了。在摄影测量、逆向建模这些环节应用photoscan的著名案例比比皆是:《星球大战:前线》(延伸阅读:用3D扫描创造出《星球大战:前线》的世界)、《生化危机7》、《合金装备5》、《神秘海域4》、《伊森卡特的消失》……可见此技术之成熟,除此之外还有RealitvCapture(代表案例有攻壳机动队真人电影)等其他的产品也都用过成功商业案例。

上图是生化危机7的三维扫描拍摄现场,同时架设了大量相机,就是为了同时记录下对象物体各个角度的信息数据,这样可以极大地提高photoscan计算生成的三维模型的质量。

有这种“土豪”的办法,自然也有很“经济实惠”的做法——下图是星球大战:前线的三维扫描拍摄现场。

可以看到,拍摄对象是一个身着军服的假人模特,为了获取它各个角度的信息,肯定是像前面生化危机7那样的海量相机完成得简单粗暴,但这个现场显然没有那么多相机,于是就在模特假人的下方安置了一个转盘——这样可以保证相机停在相同的位置规律的拍摄、记录对象的多角度信息。(题外话:我个人印象中,应该是EA这种美帝大厂更加大手笔一些,没想到扫描设备的规模竟然不如日系的卡表,也是有点出乎意料: P)


除开上述提及的,其实逆向建模还有其他一些大同小异的方法,但核心都是“还原这个世界本来的样子”。本文所写的,也都只是停留在一个初涉VR领域的交互设计师的理解,如果继续深入,还是需要有些计算机视觉等专业知识的积累。既然还是初涉VR,那么就暂且止步吧~

[译] 用3D扫描创造出《星球大战:前线》的世界

写在前面:最近因为工作原因开始接触到自动化三维重建技术,发现photoscan在游戏产业内应用不少但鲜有针对具体游戏项目案例的科普文,于是翻译了本文并放出。原作者为NICK LIEVENDAG,3D Scan Expert社区创始人, 阅读原文点击这里。(原文中有不少视频与网页链接此处不便放出,希望读者们去原站点浏览支持。)

 

文/NICK LIEVENDAG,译/Milton Wong

几个月前,我写了一篇帖子,是关于“3D 扫描是如何被用来为《哥谭市》(电视剧)制作视觉特效”的——因为我喜欢3D 扫描,同时又是蝙蝠侠系列的忠实粉丝。然而,还有另外一个故事甚至更加吸引我:星球大战。所以我在等有机会的时候,可以写一个关于3D 扫描技术和遥远的星系相结合的文章。

然后,就在上周,我发现了一个由瑞典游戏开发商DICE(代表游戏:《战地》系列、《镜之边缘》,和最新一代的《星球大战:前线》)撰写的文档。

将这款 “次世代”游戏(对应平台为PS4和XBOX ONE)与其前代作品形成鲜明对比的一点,是《前线》中惊人的视觉效果——尤其是对于星球大战粉丝们而言充满辨识度的那片广阔开放的世界。通过对行星霍斯、塔图因、恩多和萨卢斯非常真实的画面表现,这个游戏是让你自己互动、沉浸于星战宇宙中的最好方式。就像《连线》杂志(Wired)评价的那样:“玩《星球大战:前线》,就像是在看电影一样。”

在我继续介绍之前,让我们通过一张游戏内的截图来看看这意味着什么:(即本文题图)

可以说,上图看起来更像是恩多丛林,而非绝地武士归来。(原文这句话我也不是很理解。。)但开发者是如何让它看起来如此真实的?来自DICE的Keneth Brown 和 Andrew Hamilton 在今年游戏开发者大会(GDC)上带来的一小时长的报告“《星球大战: 前线》和摄影测量艺术”给出了这个问题的答案。

因为报告文档是为开发者准备的,所以它看起来技术性很强,并且涉及到各种编程细节。因此我决定着重介绍一些单纯的摄影测量内容,这样你就可以从中学到一些,并能应用到你那些富有创造性的3D扫描项目。

首先给那些不了解这门技术的读者简单介绍一下:摄影测量(或照片扫描,photogrammetry)是一个现实可行的图像信息捕捉技术,使用常规(2D) 照片和机器算法来生成带有贴图的3D模型。这与使用专用的3D扫描仪(详见《哥谭市》的帖子)相反,在入门级,你可以免费试用移动端的摄影测量APP。在专业层面上,有一些解决方案如Autodesk
ReCap(Reality Capture,我之前评测过) 和 Agisoft PhotoScan(我很快就会评测)。DICE的艺术家们主要使用后者,但也尝试过新的软件方案,如RealtyCapture。

报告中提出的第一个重要的问题是,基于摄影测量技术的3D扫描被用来结合 “传统的” 3D建模技术,以创造所有的资源素材和(游戏)世界。下面你可以看到一些角色道具的3D扫描(来自卢卡斯影业的档案):

这些道具被添加到传统3D角色模型:

但其实摄影测量主要是被用于创造环境素材资源。为此,开发小组去了之前提到的四个星球(萨卢斯星是一个特例,因为它不存在于原版电影中。在这个与《星球大战:前线》艺术总监Dough Chiang的采访中,你可以阅读这个星球的地点位置是如何被选中)的原型拍摄地点。(他们还拍摄了那段旅途的记录短片)

开发小组的工具组件非常简单: 只是佳能6D相机与24毫米镜头,一个三脚架和彩色图表而已。他们主要使用自然光以尽可能地避免投影。在某些情况下,比如冰冻洞穴内,他们也使用了照明设备。

他们细致规划了行程,并预先进行了素材细分,以便弄清楚哪些素材需要一次性完成捕获。由于(野外)摄影测量的工作可能会让你很容易迷路,以及拍摄过量或是不足的照片,因此大量的前期努力使得拍摄工作卓有成效。为了使这项技术能够有效地发挥作用,最最重要的事情是交叠(指记录一个对象的数据需要通过多个不同角度的拍摄相组合——译者注)。这意味着有很多张照片会存在着相同的视觉特征(看起来很像)。在这个项目中开发小组发现,拍摄照片时,从更远的距离来同时覆盖到拍摄对象更多的部分,会更加容易成功。他们还强调了“从所有可能的角度进行拍摄,以避免后期制作过程中过于耗时的润饰”的重要性。

下面的照片是一个例子——恩多星球所需捕获素材的细分:

为了将那些在不同地点拍摄的大量照片转换成可用的游戏素材,团队将经历与以传统方式制作游戏素材相似的阶段,但他们却花费了少得多的时间。在下面,你可以看到使用传统方法为过去的游戏(战地4) 相较于《星球大战:前线》制作素材耗时的管状对比图。

耗时主要的区别在于“高模” 阶段。我猜这一般包括在zbrush或类似软件中做数码精绘的时间。而使用了摄影测量的话,这一阶段主要工作是修饰——这个改变会让团队中的一些设计师因为感觉对创造性的缺失而抓狂。

创建可用的贴图纹理也会花费更少的时间,但仍然是工作流程中最耗时的阶段之一。其中一部分是去除阴影。这非常重要,因为游戏的环境是由游戏引擎即时演算的,所以游戏中的阴影可能在任何地方显示。

第一个去除阴影的技巧是用16位处理并简易地使用在Adobe Photoshop中的RAW相机通道内的特定功能,以去除尽可能多的阴影。然后他们使用了我个人认为非常聪明的技巧: 从3D 数据生成法线贴图,使用Photoshop 的黑白滤镜为法线朝向的不同方向创建遮罩。然后调整这些差异,以创建一个几乎没有阴影的结果。我决定做一个GIF小动画示意:

 

在我结束这个帖子以防止它花掉你们比看完整的技术文稿更多的时间之前,我想展示游戏内一个很cool的(双关语)摄影测量的应用。这可不是一个岩石或树桩,DICE团队利用从当地五金店淘来的东西做了一个AT-AT (你知道的,那些帝国步行机) 的脚,用以制作一个白色(雪地)粉末上的足迹。这是当时被3D捕获的,用来创建一个在游戏中生成足迹的置换贴图。

最后但同样重要的是,开发团队为游戏四大行星创造的摄影测量素材:

我原以为上面这些素材应该只是(游戏所用素材的)一部分,但是报告结尾的问答环节时,团队证实了这的确就是游戏所需的全部摄影测量素材。当然,它们被置入到一个更大的背景环境中去。开发团队的确也运用了激光探测仪扫描一些地方以用作基础地形的建模。此外,他们拍摄了非常非常多的照片用作传统的贴图。例如,树木只在可以转化为具有确定高度的平铺贴图的底部使用了摄影测量。并且一些植被是具有基础几何alpha通道的贴图——同样能够奏效。

为了合并所有的素材,DICE为每个行星创建了非常好看的“Level Construction套件”。显然,最初的想法是让用户易于使用,但最终它只用于内部开发。真可惜,因为就像你可以在下面这个视频(略)看到的一样,它合并摄影测量素材与其余的地形真的非常棒。

把最好的留到最后,这里有一个很好的《星球大战:前线》中各种场景的蒙太奇。伴随着John Williams的星球大战原声音乐,我建议把视频调至1080p 全高清,全屏,并将你的扬声器开到11——但希望是在你将本文分享给好友以及你SNS关注者之后。