Cupola VR Viewer Released!



Get the Cupola VR Viewer app here from the Chrome Web Store

GitHub repository, including documentation and the Javascript client library you need to make your WebGL page work with Cupola

I just finished the initial release of the open-source project I’ve been working on for the past month. It’s a Google Chrome packaged app to make it easier and smoother to connect the Oculus Rift with browser-based VR environments on the Internet. Basically, you install the “Cupola VR Viewer” app, connect your Rift, and paste in the URL of a particular Cupola-supported VR webpage. The webpage needs to use the “cupola.js” Javascript library, which is available here.

In the app, I’ve provided links to a couple sample WebGL pages that support Cupola, that you can load in the Chrome app and get head-tracking working. You can also drag and drop the Oculus config files into the app to use your calibration data (still experimental, doesn’t persist on exit/restart).

My work here is similar to (and inspired by) vr.js and oculus-bridge, but with a couple of differences and improvements:

– vr.js is an awesome NPAPI plugin for Chrome and Firefox, but unfortunately Chrome is retiring NPAPI support. In fact, Chrome 32 beta was just released, which is getting rid of NPAPI.

– oculus-bridge uses a standalone application that interacts with the Oculus SDK, and then provides a WebSocket stream of orientation data that a website can connect to. However, WebSockets are kind of slow, and give about a 10-millisecond delay that I find noticeable and disorienting.

In contrast, Cupola VR Viewer uses Chrome’s USB API to get the raw sensor data from the Rift, and I’ve reimplemented parts of the Oculus SDK in Javascript to translate the sensor data into the orientation. I find that this approach provides lower latency than WebSockets, and is unencumbered by the loss of NPAPI plugins in Chrome.

If you’re interested in VR and the Rift when used with browser-based virtual environments, please check this out! I think that WebGL and three.js make it really easy to set up 3D environments and having a system like this will be really useful to the VR community.

Let me know if there are any questions, comments, feedback, bug reports, pull requests or anything like that. I really want to make something useful for all of you in the Rift community. Thanks!