Joe Ludwig, a Valve VR programmer, is working on an open-source platform called Aardvark that aims to bring AR-like practical functionality into virtual reality. Aardvark is an evolution and extension of the VR dashboard, introducing new features that enable interactive and spatially-aware "gadgets" to run within any VR application.
Similar to other VR environments, SteamVR already has a dashboard where users can access useful information such as browsing game libraries or changing settings within any application. While VR dashboards provide useful core functionalities, they essentially appear as floating screens above the current VR application. On the other hand, Aardvark is designed to allow small AR-like utility gadgets, referred to as "widgets," to run within existing VR applications to provide additional functionalities.
For example, one may want to build a screenshot tool in the form of a virtual camera that players can use to capture photos of the virtual world. Such a tool could be built not just as a component for a single game but as an Aardvark widget that can operate within any VR application. Similarly, simple utility tools like timers, web video players, Twitch chat boxes, drawing boards, friend lists, etc., can be built as Aardvark widgets that players can use in any game.
Aardvark is currently in its early development stage and includes only a few basic sample widgets, but Ludwig explains what they can do and how they appear within the VR environment.
In an interview with Kent Bye on the Voices of VR podcast, Ludwig explains the design approach of the platform. Interestingly, Aardvark widgets are somewhat like "web applications" in that their functionality is similar to web pages, and Aardvark serves as the "browser" rendering them into the virtual space. However, it is not like WebXR, which directly renders its complete scene. Ludwig states that this approach is primarily for performance and scalability.
[...] Aardvark is somewhat like my whitepaper [...] I think the right way to think about it is that JavaScript is very efficient in a declarative environment. When you open a web page, what you see is some HTML, some CSS, and some images generated by JavaScript. And that JavaScript isn't running every time it needs to generate a pixel because your display refresh rate is 60Hz; it either runs when it initially declares or when it is operating on declared HTML elements and then flies through a layout engine, written in C++, that quickly figures out sizes for all the boxes and fonts and renders everything[...] All of this can be doneAardvark是一个基于WebXR的项目,它以一种不同于传统的WebXR方法的方式运作。通过HTML和CSS表达意图,然后使用原生代码来渲染给用户。与传统的WebXR方法不同,Aardvark通过绘制一个模型并在手的位置上进行绘制来处理交互。这种方法使得Aardvark能够在用户交互事件发生时运行JavaScript代码,而不是根据VR头显的渲染速率。这个项目的目标是探索一种基于浏览器的方法,使小工具具备类似网页的功能,并可以轻松分发和维护。该项目正在积极寻找参与者来尝试构建自己的小工具或为底层平台做贡献。如果您对构建小工具或参与贡献感兴趣,请访问Aardvark的GitHub页面了解更多信息。