WebXR Multi Apps
By utilizing a specific stack of software, you can experience, create and share XR multi apps on the web using the power of WebXR. The terms you’ll want to familiarize yourself with are Metachromium, XR Packages, Sandcastle (optional building framework) and The Pluto App Launcher. As you'll note below, you can also use third party tools such as Blender and Unity to create multiapps that are powered by this stack.
Metachromium is a free, SteamVR-based spatial app browser that runs side-by-side with OpenVR.
It lets you open any WebXR page as a spatial overlay app that runs on top of any other VR game. Metachromium is based on the open source Chromium browser as well as web standards like WebXR. It is one of the only ways to currently experience the power of VR multi apps all running at the same time, via XR Packages and WebXR webapps like the Pluto App Launcher and https://xrpackage.org.
XRPackages are creative spatial apps that run everywhere, and are part of the Webaverse initiative.
Unlike traditional 2D applications, XRPKs exist in three dimensions and can be experienced with a desktop browser or any SteamVR compatible headset.
To learn more about experiencing and developing XR Packages, keep reading, or check out the Webaverse docs.
Sandcastle is a friendly framework for creating spatial-first, multi-user WebXR apps and XR Packages. It is powered by vanilla threeJS, made for WebXR, features built-in Physics & Collision Detection as well as basic networking. It also features a build pipeline designed explicitly for XR Package creation and as such, is possibly the easiest way available to get started creating XR Packages.
You can learn more about Sandcastle on GitHub, and check out its wiki for a closer look at Sandcastle's Networking API, Physics API, event handling and state management, asset pipelines and more. If you want to get a head start in a more structured learning experience, check out the entry-level Sandcastle Multi App tutorial
The Pluto App Launcher
The Pluto App Launcher is a WebXR multi-app web-based runtime, based on XR Packages (also referred to as XRPKs). The App Launcher enables the instantiation and removal of XR Packages in VR, as well as sharing them with anyone via Pluto conversations.To experience the power of Pluto-powered XR Multi Apps, go to https://chimera.pluto.app/ in Metachromium and try adding XR Packages, either from the default list or a custom one. Immediately upon creating a new XR Package you will see it appear in your browser - or, if SteamVR is running, in VR. Since XR Packages are multi apps you can add as many XR Packages as you wish.
To learn more about creating XR Packages, see the tutorials below or read more at https://xrpackage.org.
Pluto App Launcher + XR Packages
One of the features of the Pluto App Launcher is out-of-the-box multiuser capabilities via Pluto: If you start or join a Pluto conversation while running the launcher, any other participants who are also running the launcher will automatically see your XR Packages as you add them, and be able to add their own. This is possible because a unique app ID is created for your XRPK and is shared with others so they run the same instance of it.
The Pluto App Launcher also makes this unique app ID accessible in your XPRK by passing it as a query parameter with the key
appid. You can access this app ID in your XRPK by searching the query parameters with URLSearchParams.
const params = new URLSearchParams(location.search);const appID = params.get("appid");
The app ID can be useful in your app as a session ID for networks, such as when creating up a Croquet session or when you need a session ID for logging purposes.
To learn how to export XR Packages from Unity, see this Webaverse developer guide. Once you export a .wbn from your Unity project, you can import it into the Pluto App Launcher.
To learn how to create XR Packages using Blender, see this Webaverse developer guide. Once you export a .wbn from your Blender project, you can import it into the Pluto App Launcher.