I’m excited about the potential of virtual reality, augmented reality, 360 degree video and related technologies. While the immediate consumer focus is around video games, movies and other types of entertainment (ahem), I don’t seem be alone in expecting VR and AR to revolutionize a wide number of industries over the coming years.
The leading platform for building VR experiences today is the game engine Unity, both because the company had the foresight to add support for the Oculus Rift development kit early on, but also simply because the early use cases from when Oculus Rift was still “just” a very successful Kickstarter project centered around video games. Today game engines Unreal Engine, CryEngine and Stingray also support Oculus Rift, and all of them along with more game engines are expected to support the consumer versions of the Oculus Rift, HTC Vive and Playstation VR when they become available during 2016.
Meanwhile, Google and Mozilla have been busy specifying and implementing support for virtual reality devices in a joint initiative dubbed WebVR. As of today, support for Oculus Rift and potentially other head mounted displays is only available in experimental or development builds of Chrome and Firefox (see the WebVR site for up-to-date download links), but an excellent polyfill for WebVR makes it possible to start building VR experiences today that can run in any modern browser.
Using the WebVR boilerplate project which includes the polyfill, it is possible to build a 3D scene using Three.js that can be explored on both a regular PC, on a mobile device — with or without a cardboard — and in a fully fledged head mounted display like the Oculus Rift. The mouse or trackpad is typically used to look around the scene on a PC. If a head mounted display is connected and a compatible browser is used, the WebVR polyfill redirects control to the actual WebVR API which renders the scene directly to the head mounted display. On a mobile device, the device orientation is used for this, and a stereoscopic mode can be enabled if a Google Cardboard compatible viewer is available to use with the phone.
READ MORE // What Facebook might look like, using Oculus Rift
While a nice side-effect, the major selling point of WebVR, however, is not the notion of “write once, run everywhere”.
Unity, for instance, is able to make native builds for all major platforms from the same code base, including PC, Mac, Linux, iOS, Android, Playstation and Xbox. When made by professionals, such native builds will undoubtably look better and run faster than a comparable VR experience built with WebGL and WebVR. At least when we are talking about AAA games or other experiences where high fidelity and performance are paramount.
The major selling point of WebVR over natively built experiences is the same as the web has always had over desktop apps and mobile apps today: No need to download and install anything. Click a link, type in a url, and the application runs directly in your browser. No app stores and no walled gardens. The consideration around walled gardens is an important one, and in the blog post Dreams of an Open Metaverse, Matthias McCoy-Thompson of AgoraVR discusses “Open vs. Closed” for VR with many great insights.
Another reason of why WebVR matters is that it provides a great entrypoint for the millions of web developers around the world to start building VR experiences. Sure, the game developers have many advantages with their understanding of building immersive 3D environments with compelling visuals, sound and storytelling, but web developers come with different set of advantages: They understand how to build software for businesses, they understand UX and they understand how to integrate with and draw data from many different sources of information.
Web developers have the advantage of living in a world where open source projects are sprawling and libraries for any conceivable purpose are readily available.
If they see something cool, they can simply view the source in the browser and reuse the code in their own projects. A-Frame is a great example of an open source project that makes building basic VR experiences or even just playing a 360 video in the browser really simple. And it even comes with support for ReactJS.