案例研究 - HoloTour

HoloTour for Microsoft HoloLens 针对世界各地的标志性地点提供身临其境的 3D 个人游览。 正如参与该项目的设计师、艺术家、制作人、音频设计师和开发人员所发现的那样,为风景名胜创建令人信服的真实 3D 渲染需要独特地融合创意和技术魔法。 本案例研究将演练捕获和创建 HoloTour 所用内容的过程。

技术

我们希望人们能够借助 HoloTour,在他们自己的客厅里参观世界上一些最令人惊叹的目的地 — 例如秘鲁的马丘比丘遗址或意大利的现代纳沃纳广场。 我们的团队将 HoloTour 的目标定为“身临其境的真实感”。 仅凭图片或视频并不足以打造一款体验。 利用 HoloLens 独特的显示、跟踪和音频技术,我们相信可以将你虚拟传送到另一个地点。 我们需要捕获我们参观过的每个景点的风景、音效和三维几何图形,然后在应用中重建这些内容。

为做到这一点,我们需要一套具有定向音频捕获功能的 360° 相机装备。 它需要以极高的分辨率捕获内容,以便在 HoloLens 上播放时素材看起来很清晰。并且相机需要靠得很近,以最大限度地减少拼接伪影。 我们需要完整覆盖球体,包括上方和下方的景象,而不仅仅是地平线。 此外,装备需是便捷式的,可以带到世界各地。 我们评估了可用的现成选项,但发现它们根本不足以实现我们的愿景 — 无论是分辨率、成本还是尺寸方面。 如果找不到满足需求的相机装备,我们就必须自己制造一套。

制造装备

第一个版本由纸板、魔术贴、强力胶带和 14 部 GoPro 相机组成,是 MacGyver 引以为豪的成果。 在评审了从低端解决方案到定制装备的各种选项后,我们最终选择了 GoPro 相机,因为该系列机身小巧、价格合理且提供易用的存储器。 小巧的外形特别重要,这样我们就可以使定位的相机彼此十分靠近 — 相机之间的距离越小,拼接伪影就越不明显。 独特的相机排列使我们能够获得完整的球体覆盖加上足够的重叠,能够以智能方式对齐相机,并在拼接过程中消除一些伪影

利用 HoloLens 上的空间音效功能对于打造令人信服的真正沉浸式体验至关重要。 我们在三脚架上的相机下方使用了由四个麦克风组成的阵列,它可以从相机位置向四个方向捕获声音,为我们提供足够的信息在场景中创建空间音效。

Our 360° camera rig set up for filming outside the Pantheon.

我们安装的 360° 相机装备在万神殿外部拍摄。

我们测试了自制装备,把它带到了西雅图附近的响尾蛇岭,拍摄了远足地山顶的风景。 结果虽然明显不如目前你在 HoloTour 中看到的风景那么精致,但让我们相信我们的装备设计足以让你有身临其境的感受。

我们将装备上的魔术贴和纸板升级为 3D 打印的相机外壳,并为 GoPro 相机购买了外置电池组以简化电池管理。 然后我们进行了更广泛的测试,前往旧金山创建城市海岸和金门大桥地标的微缩导游。 你在 HoloTour 中参观的大部分景点的镜头都是使用此相机装备拍摄的。

The 360° camera rig filming in Machu Picchu.

360° 相机装备在马丘比丘拍摄。

幕后

在拍摄之前,我们需要搞清楚要在虚拟导游中包括哪些景点。 罗马是我们打算导游的第一个地点,我们想把它做好,因此我们决定提前来一次考察之旅。 我们派出了一个六人团队 — 包括艺术家、设计师和制作人 — 他们亲身前往了我们正在考察的景点。 这次旅行大约花费了 9 天时间 - 2.5 天是旅行,其余时间是拍摄。 (对于马丘比丘,我们没有安排考察之旅,而是提前展开研究,并安排了几天的拍摄缓冲时间。)

在罗马期间,该团队拍摄了每个区域的照片,并记下了有趣的物事以及实际的考虑因素,例如前往每个景点的难度,以及人群或管制造成的拍摄难度。 这听起来像是度假,但其实工作量很大。 我们每天从清晨开始,不停歇地工作到晚上。 每天晚上,镜头都会上传到西雅图的团队进行审阅。

Our capture crew in Rome.

在罗马的拍摄组。

考察之旅结束后,我们为实际拍摄制定了最终计划。 这需要制作一份详细清单,列出我们要在哪一天的什么时间去哪里拍摄。 在国外的每一天都开支不菲,因此这些行程必须高效。 我们在罗马预订了导游和搬运工来帮助我们,每天从日出之前到日落之后都充分使用了他们的服务。 我们需要尽可能捕捉最好的镜头,让观众感觉身临其境。

拍摄视频

在拍摄期间做点简单的事也能大大简化后期处理。 例如,每次将多部相机的图像拼接到一起时,最终都会出现视觉伪像,因为每部相机的取景略有不同。 对象离相机越近,取景的差异就越大,拼接伪影也就越明显。 下面是将此问题形象化的一种简单方法:将你的拇指举到你的面前,只用一只眼睛看着它。 现在换另一只眼睛看它。 你会发现,拇指似乎相对于背景移动。 如果拇指离面部更远并重复这种试验,拇指的移动距离看起来更短。 这种浅显易懂的运动类似于我们所面临的拼接问题:你的眼睛就像我们的相机,它们看到的不是完全相同的图像,因为它们之间有一点点距离。

由于在拍摄时防止最糟糕的伪影比在后期处理中纠正它们要容易得多,因此我们试图让人和物远离相机,目的是不必要拼接近摄的对象。 在相机周围保留一大块空地也许是我们在拍摄过程中遇到的最大挑战之一,我们必须发挥创意才能做到这一点。 与当地导游合作对于处理人群问题有很大帮助,有时我们也会使用小路锥或豆袋椅之类的标志来隔离我们的拍摄空间,这种做法相当有效,特别是因为我们在每个地点只需要拍摄较短的镜头。 通常,为了获得良好的拍摄效果,最好是在人群出现之前一大早就赶到现场。

其他一些有用拍摄技术直接照搬了传统的电影拍摄手段。 例如,我们在所有相机上使用了色彩校正卡,并拍摄了以后可能需要的纹理和对象的参考照片。

A rough cut of Machu Picchu showing the color correction card.

拼接之前的万神殿镜头粗剪画面。

处理视频

捕获 360° 内容只是第一步 - 需要进行大量处理才能将捕获的原始相机镜头转换为 HoloTour 中呈现的最终资产。 回来后,我们需要从 14 个不同的相机源中提取视频,并将其转换为伪影最少的单个连续视频。 我们的艺术团队使用了多种工具来组合和润色捕获的素材,我们开发了一个管道来尽可能地优化处理。 必须将镜头拼接在一起,进行色彩校正,然后进行合成以消除分散注意力的元素和伪影,或者添加生活和运动的补充情节,所有这些手法都是为了增强真实感。

A rough cut of Pantheon footage before stitching.

拼接之前的万神殿镜头粗剪画面。

为了将视频拼接在一起,我们使用了一个名为 PTGui 的工具并将其集成到了我们的处理管道中。 在后期处理中,我们从视频提取了静止帧,并找到了看起来很适合其中某一帧的拼接模式。 然后,将该模式应用于我们编写的自定义插件。视频艺术家可以使用该插件在 After Effects 中合成时直接微调和调整拼接模式。

Screenshot of PTGui showing the stitched Pantheon footage.

PTGui 的屏幕截图,其中显示了拼接的万神殿镜头。

视频播放

镜头处理完成后,我们得到了一个无缝视频,但它极其庞大 — 大约 8K 分辨率。 视频解码成本高昂,而且只有少数几台计算机能够处理 8K 视频,因此,下一项挑战是找到一种能够在 HoloLens 上播放该视频的方式。 我们制定了许多策略来避免解码成本,同时仍让用户感觉他们正在观看整个视频。

最简单的优化是避免解码视频中变化不大的部分。 我们编写了一个工具来识别每个场景中几乎或完全没有运动的区域。 对于这些区域,我们将显示静态图像,而不是解码视频的每一帧。 为此,我们将巨型视频分解成了较小的块。

此外,我们确保解码的每个像素都得到最有效的利用。 我们已尝试使用压缩技术来降低视频的大小;根据要投影到的几何体多边形拆分了视频区域;调整了 UV 并根据不同多边形包含的细节重新打包了视频。 这项工作的成果是,最初的单个 8K 视频变成了许多看似无法理解的块,直到它们被正确重新投影到场景中。 了解纹理映射和 UV 打包的游戏开发人员也许很熟悉这种情形。

A full view of the Pantheon before optimizations.

优化前的万神殿全景图。

The right half of the Pantheon, processed for video playback.

经过处理的万神殿右半部分,可播放其视频。

Example of a single video region after optimization and packing.

优化和打包后的单个视频区域示例。

我们运用的另一种技巧是避免解码观众实际上不会观看的视频。 在 HoloTour 中,在任何给定时刻你只能看到完整场景的一部分。 我们只会解码视场 (FOV) 范围内的或其外部较小范围内的视频。 当你旋转头部时,我们会开始播放现已进入你的 FOV 范围内的视频区域,并停止播放不再在 FOV 范围内的区域。 大多数人甚至察觉不到这种情况,但如果你快速转身,会看到视频在经过一秒后才开始 — 同时会看到一个静态图像,在准备就绪后,该图像会消隐并重新播放视频。

为使该策略起作用,我们开发了一个多功能的视频播放系统。 我们优化了低级播放代码,使视频切换极为高效。 此外,我们必须以一种特殊的方式对视频进行编码,以便能够随时快速切换到任何视频。 此播放管道需要占用大量开发时间,因此我们是分阶段实施它的。 我们从一个效率较低的较简单系统开始,但允许设计师和艺术家处理体验,然后逐渐将其改进为更强大的播放系统,使我们能够按照最终的质量标准交付该系统。 此最终系统包含我们在 Unity 中创建的自定义工具,用于在场景中设置视频和监视播放引擎。

在 3D 中重建近距空间对象

在 HoloTour 中看到的内容主要由视频构成,但也有许多 3D 对象出现在你的周围,例如纳沃纳广场的油画、万神殿外的喷泉,或者站在热气球中的航拍场景。 这些 3D 对象非常重要,因为人类的深度感知在靠近对象时非常良好,但在远离对象时则不是很好。 我们可以去掉远距视频,但为了让用户在他们的空间中走动并产生身临其境的感觉,附近的对象需有深度。 这种技术有点类似于在自然历史博物馆中看到的景象 — 透景画的前景是实物景观、植物和动物标本,但消退为背景中巧妙蒙版的绘景。

某些对象只是我们创建并添加到场景中以增强体验的 3D 资产。 这幅画和热气球就属于这一类资产,因为拍摄时它们并不存在。 与游戏资产类似,它们是由团队中的 3D 艺术家创建的,带有适当的纹理。 我们将这些资产放置在你站立位置附近的场景中,游戏引擎可在两个 HoloLens 显示器上渲染它们,使其显示为 3D 对象。

其他资产(例如万神殿外的喷泉)是存在于视频拍摄地点的真实对象,但要将这些对象从视频中取出并放进 3D,我们还要做很多事情。

首先,需要获取有关每个对象的附加信息。 在拍摄现场,我们的团队捕获了这些对象的大量参考镜头,使我们有足够详细的图像来准确重建纹理。 该团队还执行了摄影测绘扫描,从数十张 2D 图像构造了一个 3D 模型,为我们提供了完美比例的对象的粗略模型。

当我们处理镜头时,从视频中删除了稍后要替换为 3D 表示形式的对象。 3D 资产基于摄影测绘模型,但我们的艺术家对其进行了清理和简化。 对于某些对象,我们可以使用视频的一部分 — 例如喷泉上的水纹理 — 但现在,喷泉的大多数组成部分都是 3D 对象,因此,用户可以在体验中的有限空间内感知深度并在喷泉的周围走动。 这种近距空间对象极大地增加了真实感,有助于用户置身于虚拟位置。

Pantheon footage with the fountain removed. It will be replaced with a 3D asset.

删除了喷泉的万神殿镜头。 它将替换为 3D 资产。

结束语

显然,创建这些内容所付出的工作比上面提到的还要多。 有几个场景 — 我们称之为“意想不到的视角”,包括乘坐热气球和斗兽场的角斗士战斗 — 采用了更有创意的方法。 我们将在以后的案例研究中探讨这些技术。

我们希望,我们分享的在制作过程中遇到的某些较大挑战的解决方法对其他开发人员有所帮助,并启发他们使用其中一些技术来创建自己的 HoloLens 沉浸式体验。 (如果你也受到这样的启发,请务必在 HoloLens 应用开发论坛上与我们分享成果!)

关于作者

David Haley David Haley 是一名高级开发人员,他从 HoloTour 的工作中学到了超乎想象的关于相机装备和视频播放的知识 Danny Askew Danny Askew 是一名视频艺术家,他确保你的罗马之旅尽可能完美无瑕
Jason Syltebo Jason Syltebo 是一名音频设计师,他确保你可以体验到你所参观的每个目的地的音景,甚至历史音景 Travis Steiner Travis Steiner 是一名设计总监,负责调查和考察地点、制定旅行计划并指导现场拍摄

另请参阅