“Over the past year, VR has made major strides toward becoming the next computing platform,” said Andrew Imm on Oculus’s developer blog. “With Rift, consumer-grade hardware has reached the point where people can immerse themselves in virtual worlds from their own homes. Alongside that, 360 content has blossomed with the introduction of numerous consumer-level cameras and Facebook’s support of 360 photos and videos. However, for developers who have pioneered the way we experience the web, there’s no direct path to building 360 content without knowledge of game engines and 3D graphics. We want to change that.”
Experiences developed on React VR can be distributed across the web leveraging APIs like WebGL and WebVR to connect immersive headsets with a scene in a web page. React VR will also allow you to build compatible sites for mobile phones and PCs alike using accelerometers or the cursor for navigation.
“With React VR, you can use React components to compose scenes in 3D, combining 360 panoramas with 2D UI, text, and images,” said Imm. “You can increase immersion with audio and video capabilities, plus take full advantage of the space around you with 3D models. If you know React, you now know how to build 360 and VR content!”
The entire codebase for React VR is available today on GitHub.
Below are some of Oculus’s partners that have used React VR to create virtual experiences.
The British Museum
The New York Times
Learn Once, Write Anywhere
When we set out to build a framework for VR content on the web, we quickly agreed that React was a great starting point. React’s style of representing elements abstractly, independent of their actual implementation, is ideal for any hierarchical layout, and it’s already proven its flexibility with the React Native platform. Additionally, it means that anyone familiar with React can easily get started without needing to learn new concepts. If you’re comfortable laying out an application with React and understand how React manages data flow, you should have no problem developing in 3D. React VR continues to drive the mantra of the React ecosystem: Learn once, write anywhere.
Building upon React also means that the libraries and tools built by the broader React community are available for your use in React VR. Your favorite data management, routing, and navigation libraries will work out of the box. You can leverage existing testing frameworks and development tools as well—there’s no need to change your existing development workflow.
Under the Hood
As it turns out, React Native already addresses similar problems with its architecture. We followed RN’s pattern by running React and rendering in separate contexts, with an asynchronous bridge for communication between them. In the web browser, this separation is performed with a web worker—your entire React application runs in the worker, while the rendering code that turns scene update messages into actual pixels lives in the main window. This lets the renderer create a tight loop between receiving headset orientation updates and re-rendering the scene, increasing viewer immersion while decreasing the likelihood of motion-sickness.
In fact, more than just borrowing concepts from React Native, React VR is actually built as a true RN platform. This lets us reuse code and systems in some places, while extending other areas to make sense in both a browser and 3D space. If you’ve used React Native before, many things will be familiar to you, like the use of View and Text components, as well as the packaging server that keeps your compiled bundle updated with your latest changes.
We’ve seen first-hand how much React and React Native have benefited from being open source, and we believe that developing a project hand-in-hand with the community lets us better recognize and target the needs of everyone.