长期从事Valve VR编程的Joe Ludwig以个人身份正在构建一个开源平台,将AR般的实用功能引入虚拟现实。这个项目名为Aardvark,是VR仪表板的一种演进和扩展,带来了新功能,可以在任何VR应用程序内部运行交互式的和对空间感知的‘小工具’。
Joe Ludwig是一位Valve程序员,从早期以来就密切参与该公司的VR工作。最近,他在自己的开源项目Aardvark上进行工作,基本上是希望将增强现实引入虚拟现实,即在虚拟现实空间内运行轻量级空间应用的‘层’。
与其他VR环境一样,SteamVR已经有一个仪表板,用户可以在任何应用程序内部调用该仪表板以访问有用的信息,例如浏览游戏库或更改设置。
虽然VR仪表板提供了有用的核心功能,但它们实质上是浮动的大屏幕,出现在您当前的虚拟现实应用程序上方。另一方面,Aardvark旨在允许称为‘小工具’的小型AR类实用工具在现有的VR应用程序内部运行,以提供额外的功能。
例如,您可能希望构建一个以虚拟相机形式存在的截图工具,玩家可以使用该相机拍摄虚拟世界的照片。这样的工具可能不仅仅可以构建为单个游戏的组件,而可以作为Aardvark小工具构建,可以在任何VR应用程序内操作。类似地,简单的实用工具,如计时器、网络视频播放器、Twitch聊天框、绘图板、好友列表等,可以作为Aardvark小工具构建,玩家可以在任何游戏中使用。
Aardvark目前仍处于早期开发阶段,目前仅包含一些基本示例小工具,但Ludwig解释了它们可以做什么以及在VR环境中运行时是什么样子的。
在去年12月将Aardvark在Steam上推出早期访问后,Ludwig在最新一期的Voices of VR播客中与我们的朋友Kent Bye交谈,解释了该平台设计的方法。
有趣的是,Aardvark小工具在某种程度上可以说是作为‘Web应用程序’编写的,其中小工具的功能类似于网页,而Aardvark是将其渲染到虚拟空间中的‘浏览器’。但这并不像WebXR,后者实际上直接渲染自己的完整场景。Ludwig表示,这种方法主要是为了性能和可扩展性。
[…] Aardvark在某种程度上就是我的白皮书[…]我认为正确的方法是,JavaScript已经在声明性环境中非常有效。当您打开一个网页时,您看到的是一些HTML、一些CSS和一些由JavaScript生成的图像。而这个JavaScript并不是每次需要生成一个像素时都运行,因为您的显示器刷新率是60Hz,而是要么在一开始声明,要么在操作声明的HTML元素时运行,然后这些元素经过一个用C++编写的布局引擎快速处理,计算出所有框的大小、所有字体的大小,最后渲染所有东西[…]所有这些 feeding进入您的显示器上的那个矩形中,JavaScript只在您点击一个东西、拖动一个东西或者将鼠标悬停在一个东西上时运行。
因此,这个JavaScript是在以人类时间尺度或交互时间尺度发生的事件上运行,它们每秒发生几次,而不是VR头显的渲染速率,即每秒90次或144次。而原生代码,即C++代码,用于平滑动画视频或在鼠标悬停在一个东西上时控件的平滑动画,在几帧内完成,这一切都是用C++完成的。通过HTML和CSS这些声明性方法表达您的意图,然后原生代码——Web浏览器的系统——实际上负责将其渲染给用户。
Aardvark做了类似的事情。在Aardvark,在整个过程中并没有采取WebXR方法——即询问系统“手在哪里,加载一个模型,将模型绘制在手的位置”。Aardvark不是这样做的。它做的是“绘制手的这个模型”,然后将其传递给Aardvark,Aardvark说“哦,我正在根据手绘制这个模型”[…] 但你表达的意思是“将其绘制在手上”。这意味着11毫秒后,当你的手移动几毫米时,Aardvark知道它在手上,并将其绘制在新的手位置上。
因此,Aardvark需要以帧速率运行,但是没有一个小工具需要以帧速率运行。如果一个小工具很慢,也没有关系,因为它不需要以帧速率运行。因此,在以声明的方式进行操作的性能影响和使用场景图进行合成而不是使用深度缓冲区和像素映射进行合成的视觉保真度影响之间,我认为Aardvark采取了一种在很多方面都更具可扩展性的方法,并最终会在很多方面获得更高质量和更高保真度的结果。但是,我构建和开发它的一部分原因是为了证明这个论点。我认为还没有定论。[…] 最终我们会发现答案的。
“浏览器”方法也带来了其他好处。首先,小工具可以具备您期望在任何网站上看到的功能,比如绘制文本、加载图像和从网页的其他部分提取信息。基于网页的方式还意味着小工具的分发和维护很简单,因为小工具基本上是任何人可以通过URL访问的网页。只要你知道如何编写小工具,分发它的方法就像托管网站并发送URL给他人一样简单。
在Ludwig对Voices of VR的讨论中,他指出该平台的开发仍在进行中,许多功能定义仅仅是最基本的,这样Aardvark就可以自然演化以适应小工具构建者设想的用例。
Ludwig说,目前,该项目主要寻找参与者来尝试构建自己的小工具。如果你有兴趣构建小工具或为底层平台做贡献,请查看Aardvark的GitHub页面。
0