VR绘画模拟器《Vermillion》是一款备受欢迎的作品,曾入选QuestStore年度榜单系列和Steam最畅销VR游戏100。在日前的一次更新中,开发者汤玛斯·范登伯格(Thomas van den Berge)表示《Vermillion》现在可以作为叠加层支持任何VR游戏。简单来说,你现在可以在诸如《半衰期:爱莉克斯》这样的游戏中启动《Vermillion》,然后在“半衰期”世界中成为一名悠然自乐的油画家,比如就在角色旁边临摹他的一切。
当然,这一功能目前只是Beta阶段,目前Vive和Index的效果最好,WMR尚存在问题,而Quest +Link的组合依然会有抖动情况发生。
值得一提的是,范登伯格是在不到一周的时间内编程了这项功能。它是一个SteamVR的叠加层,可以在游戏中单独交互。换句话说,当你在游戏进行过程中看到一幅绝佳的美景,或者对特定角色有感而发,又或者单纯作为中途休整的手段,你可以拿出画板和颜料,并开始自己的油画创作。
如果期间出现联合军或猎头蟹呢?不用担心,你随时可以撤下画板,并切回到游戏的控制,然后重新开始自己的冒险。
显然,这个实验展示了元宇宙概念尚未开发的潜力。扩展虚拟现实世界、组合和嵌套虚拟现实应用程序的可能性在过去很难想象,而范登伯格的有趣实验为我们提供了这样一个未来的一瞥。
对于这项技术,他给出了具体的原理解释:
关于VR渲染如何工作的一点技术背景:游戏世界为每只眼睛渲染。但在这之后,每只眼睛的输出被扭曲以抵消透镜失真。这会拉伸渲染图像,使其变得模糊。这就是为什么你需要以比头显像素量更高的分辨率进行渲染才能获得清晰的图像,或者为什么没有性能预算的VR一体机游戏看起来比PC端更模糊。
VR运行时能够将纹理直接叠加到发送到头显显示器的最终图像上,无需扭曲以匹配透镜。它们必须是特定的形状:矩形、圆柱体或360度全景。这就是当你打开VR仪表板时,你可以看到非常清晰的菜单面板的原因。游戏同样使用叠加方式来获得更清晰的游戏内菜单。
有了SteamVR背后的VR运行时OpenVR,你可以更进一步:你可以将应用程序纯粹作为一个叠加层,而不是作为单独的游戏启动,这样你就可以同时运行一个游戏和一个或多个叠加应用。迄今为止,LIV或Desktop+等应用程序已使用所述功能来在VR内显示补充信息。OpenVR同时支持捕捉叠加中的输入,这样你就可以叠加来自游戏的输入,并防止在你实际想要与叠加层交互时发生游戏动作。
但对于《Vermillion》,我需要将整个3D场景显示为叠加层,而不仅仅只是浮动面板。叠加功能几乎没有书名文档,从我在Twitter看到的内容来看,没有办法可以令3D叠加层平稳运行。但在我正要放弃的时候,有人向我提到了乔·路德维希(Joe Ludwig)。他是SteamVR的开发者之一,并且曾在2020年创建了可以绘制完整3D场景的叠加应用《AardvarkXR》。Aardvark开源,而尽管它是一个本机C++应用,《Vermillion》是用Unity制作,但它拥有我所需要的所有组件,可以帮助我了解如何创建3D叠加场景。
它利用360全景叠加模式,将叠加的眼睛输出扭曲为立体全景。下一个挑战在于确保camera位置和旋转与正在渲染的游戏匹配。叠加层与游戏完全分离,不知道游戏内camera的位置。如果游戏中的camera移动与叠加层中的camera运动不匹配,叠加层就会看起来“抖动”或延迟。一旦叠加层的帧率与游戏的帧率不匹配,这就会变得非常明显。
到目前为止,我已经能够在SteamVR头显(如Vive和Index)中实现了非常稳定的结果,做到了《Vermillion》画架是游戏一部分的错觉。遗憾的是,在Quest +Link进行游戏所需的额外步骤似乎会引起混乱,因为目前依然会存在抖动。但愿我能把这件事处理好。
有兴趣的用户可以尝试一下《Vermillion》,它在Steam和Quest Store分别售价人民币79.9元和19.9美元。