由Vision3联合国际保护组织使用Unity开发的Drop in the Ocean是一个10分钟的虚拟现实社交冒险体验,由Philippe和Ashlan Cousteau讲述。在该体验中观众可以乘坐水母,感受深海的神秘。最重要的是,参与者能够从海洋生物的角度体验塑料污染危机。
尽管将该项目开发为社交虚拟现实体验面临巨大的技术挑战,但将观众描绘成全身化身对我们的团队来说非常重要。当他们进入到Drop in the Ocean中时,四名参与者需要合作扫除他们周围的塑料碎片,这让他们对海洋正在面临的威胁及其在解决方案中的作用有了新的认识。正是出于这一目的Drop in the Ocean赢得了人们的喜爱,并受到了Unity环境和可持续发展资助计划的关注,Unity在2021年为项目提供了一笔资助。
在本文中,将深入研究Vision3团队如何使用Unity开发Drop in the Ocean,并分享一些得到Unity环境和可持续发展资助计划资助后Vision3团队的未来规划。
体验背后
当观众知道他们在身临其境的体验中与真人互动时,社交虚拟现实将人们带到不可能的地方的神奇能力就被展现了出来,它允许创作者创作独特的故事。
能够与朋友分享这样的时刻,并实时对他们的行为做出身体反应,是沉浸式娱乐的一个非常特殊的元素。在项目开始的时候,比如Drop in the Ocean,Vision3团队一直在想方设法让观众获得更有价值的体验。
Drop in the Ocean于2019年首次推出,作为PC-VR体验,需要通过有线电缆连接为每个参与者提供专用的高端工作站。随着项目的发展,一个定制的基于RGB摄像头的动作捕捉系统被开发出来,让观众在体验中能够看到彼此的全身化身。这个摄像机系统和高规格的本地网络由一台独立的基于Linux控制系统的PC控制。
动作捕捉系统给了无标记跟踪前所未有的运动自由,但受到当时艺术水平的限制。它还依赖于固定的照明条件,这些条件通常与我们的目标场地不兼容。
简而言之,我们的团队建立了一种极具创新性的体验,允许观众作为完全的化身彼此互动,代价则是巨大的设备要求和对体验场地的限制。
三年后,我们给自己设定了一个非常雄心勃勃的挑战:如何保留视觉保真度、科学上准确的海洋物种模型和全身虚拟形象,以便创建一个联网的、基实际位置的体验,可以在移动VR设备上实现。
动态分辨率和优化着色器
虽然有兴趣将项目移植到独立设备,降低成本,增加受众规模,但也同样有必要尽可能保持PC-VR版本的视觉质量。
原始版本的Drop in the Ocean列出了移动端开发面临的几乎所有挑战——水母模型上的多个半透明层、大型动物物种上极高的多边形数量、几个场景中的大量对象数量、固定的时间线构建以及大量的对象交互物理算法。VFX开发人员Conrad Hughes是移植团队的一员,他的想法是在保持项目正常运行的同时尽可能保持视觉保真度。在这种情况下,首先要做的是将Drop in the Ocean从高清晰度渲染管道(HDRP)运行切换到通用渲染管道(URP)。虽然URP牺牲了一些质量,但我们发现与PC版本相比,它运行速度要快得多,并支持独立设备。
为了是保持尽可能多的特写保真度,同时让观众感觉他们始终保持在海平面以下。我们利用FFR(固定凹进渲染)等全局性能增强器来降低设备屏幕中心的分辨率。一些设备拥有分辨率极高的屏幕,这意味着尽管显示器具有显示出色图像的惊人能力,但硬件可能难以推动所有这些像素。FFR会保证你正在看的东西的保真度和质量并以较低分辨率填充其余部分。
我们还在整个项目中使用了动态分辨率。当屏幕上有很多东西时,渲染比例会下降,当屏幕上只有几个主要对象时,渲染比例会上升。这样,当观众专注于注视一个目标时,他们会得到100%的质量。但是,当他们专注于一大群物体(即数百只水母)时,他们会获得一种真实的存在感和置身于一大群物体中的感觉。
为了描绘出玩家的手、化身和一些其他的VFX物体,我们需要访问VFX图形。这在一定程度上是因为这些资产最初是使用VFX图表创作的,并且使用了一些定制的脚本。从本质上说,重建整个VFX将是一个巨大的时间限制。为了让VFX图形在Open GL 3.1上工作,我们必须禁用软件包中的立方体贴图数组(GLES 3.1不支持该功能)。本质上,我们将VFX图表包从Unity 2022移植到2021 LTS,并做了一些调整以使其工作。最终我们成功了。一些最近实现的特性减少了对一些脚本和定制的小程序的需求,这对我们很有帮助。
除此之外,我们的开发人员禁用了阴影并修改了照明设置,以保持动态照明(但不要让太多的灯光同时影响一个表面),以降低成本。我们还将生成时间进行了交错,以防止GPU故障,并浏览了一系列标准做法,减少纹理大小,减少着色器复杂性和昂贵的ALU数学运算,减少纹理抽头,尽可能压缩纹理,使用顶点动画代替蒙皮网格,以使游戏在硬件上成功运行。为了让Drop in the Ocean在独立设备上运行,我们还使用了大量早期游戏机时代的技术。
总的来说,我们尽量节约使用昂贵的东西。但当我们使用它们时,我们能确保将其用在最重要的地方,这样就不会浪费性能与开销。
构建网络的新方法
通过转向独立设备,我们改变了网络的配置方式,并极大地改变了调节控制。以前,专用电脑一直通过以太网连接,现在我们面临的挑战是通过Wi-Fi 6网络监控连接设备(以及远程观察设备电池寿命并确保体验同时在所有设备上启动)。
在部署中,Drop in the Ocean需要无缝地持续引入团体观众流,而不能中断或重新校准。首席开发人员Gokhan Sivrikaya首先构建了一个单独的定制解决方案,支持多种类型的设备和应用程序。
这让我们有机会添加一个在平板电脑上运行的监管应用程序,以便管理员可以在该区域检查设备的状态。它还允许我们轻松地添加其他Wi-Fi设备,这些设备可以在玩家与游戏互动时提供触觉反馈。
Unity帮助我们以相同的代码在不同设备的不同操作系统上实现轻松切换。
使用空间锚点来确定玩家的位置以与反运动学方式交互
在移除动作捕捉系统后,我们在开发能够与其他玩家的动作和位置同步的全身化身方面仍然存在重大挑战。我们的团队使用反向运动学来模拟游戏中玩家的身体,游戏中玩家的位置需要与现实世界中的位置进行校准。
我们使用的设备有自己的方向(前进矢量),玩家的初始位置可以在坐标系中的任何地方。在普通的多人游戏中,当其他玩家在很远的某个地方——可能在他们的家里——出生点可以用来将虚拟世界中的玩家生成到他们指定的位置。对于这种体验来说,虚拟世界和现实世界(以及两个世界中人的位置)应该是匹配的,这样玩家就可以在现实世界中自由互动,而不会互相碰撞。
为了实现这一点,我们使用了空间锚。每台设备都在同一个真实世界的坐标上放置锚点,设备将玩家的相对位置从锚点发送到服务器。从那里,服务器将这些相对位置共享回设备,并且所有设备根据它们在它们的虚拟坐标系中与锚的相对位置来解决这个问题。这样解释,听起来很复杂,那我们换个简单的说法,Unity用它的核心库帮助我们解决了这个问题!
Unity环境和可持续发展资助
随着体验的完成,我们的下一个挑战是扩大Drop in the Ocean项目的访问量,以便让更多人有机会成为社交虚拟现实体验的一部分。这需要我们不断推动技术,寻找解决方案,使其更灵活、更实用,同时展望我们开发的未来内容,并在现有的坚实基础上寻找全新的方式将人们聚集在一起。
我们的团队得到了Unity的奖金,这让我们能够将Drop in the Ocean体验投入到不仅仅是我们当地的社区。从最初的构想开始,我们就一直将该项目的两个理想受众作为目标:一是更广泛的普通受众,他们将通过此体验更加了解海洋环境被破坏的现状,二是政府和企业内部的关键决策者。
为了更广泛地接触到公众,我们正在与北美和国际上领先的水族馆、科学博物馆和美术馆合作,使用Unity环境和可持续发展资助基金在人流量较大的文化机构和场所举办Drop in the Ocean项目体验,Drop in the Ocean将允许每次4-6名游客参观。我们相信当他们摘下设备时,他们将更加可能加入保护海洋的斗争中去。
与此同时,到2023年,我们会带着Drop in the Ocean参加一些重要的环境和气候行动会议,并支持国际保护组织的外展活动。
我们希望Drop in the Ocean可以在支持全球2030年保护至少30%海洋方面发挥重要作用。
我们很自豪能够推出Drop in the Ocean体验,他是一种灵活的、基于位置的活动体验。我们正在寻找一系列的目的地来举办这一项目。我们已经在探索如何将这种体验带给那些难以参与活动的群体,如教室中的学生们。
随着Drop in the Ocean成功移植到独立设备,我们下一步将期待在线迭代,保留我们喜欢的连接性的一切,那时Drop in the Ocean将支持北美和欧洲以外地区的人们进行访问。
Drop in the Ocean将来可能成为我们为来自世界各地的学校团体创造的一种在网上共同体验的方式,成为来自不同文化的学生分享他们保护健康海洋梦想的平台。
我们注意到,我们的许多观众可能是第一次接触VR,因此,在适当的时候,我们也希望删除可能限制交互的组件。当人们摘下头显时,他们会感觉到自己是海洋保护运动的一部分。
沉浸式体验的未来发展可以进一步推动这一概念,我们将继续寻找方法,让观众感觉他们在我们的故事中实现了价值。
领取专属 10元无门槛券
私享最新 技术干货