I recently submitted a talk to a conference that proposed an open call for action within the developer community to take a look at open source VR and to hopefully inspire people to help collaborate with the growing field of virtual reality. Unfortunately, my session was rejected with the statement that it was “too technical” for the conference attendees (a sentiment I heartily disagree with, but I digress – no hard feelings!) and as of right now, it doesn’t have a home. In the interest of open source (software, ideas, etc.) I figured I’d go ahead and share the proposal freely so that it can be recycled by the community, if anyone finds it interesting.
If you’re already familiar with OSVR, this is probably a bit too basic for what you may find interesting, but if you’re just joining in the community and want my overview of OSVR as a developer platform, read on!
Virtual and augmented reality technologies are taking off in the consumer space, and numerous hardware and software companies have begun creating devices and content to take advantage of the sci-fi staple becoming reality. In order to make content creation open and simplify overhead development costs, Open Source Virtual Reality (OSVR) aims to provide a common platform that supports the variety of VR devices and their respective platforms.
Anyone interested in understanding more about the field of virtual reality and the open source movement in the area of VR, including developers, designers, hardware engineers, and writers interested in contributing to open source virtual reality or building an application using the OSVR libraries and tool set.
Web developers looking to adapt existing applications for virtual reality.
Open source virtual reality (OSVR) is a platform built on the principles of FOSS to serve as a location to provide developers with a library that serves as an abstraction layer over individual virtual reality devices. The benefits of open sourcing an abstraction layer for virtual and augmented reality technologies allows developers to build device-agnostic VR solutions. This supplements the “build once, run everywhere” mentality that is the cornerstone of current web development, and allows for a richer ecosystem of virtual content that is not locked to any particular head mounted display (HMD) or motion-tracking device.
OSVR also provides an open-source schematic for a head-mounted display, which allows creators to build their own custom headsets. The collective contribution to OSVR is led by Sensics, and is backed by other industry partners in both the hardware and software spaces. In addition to their software and hardware components, OSVR also provides additional tools, utilities, and plugins to common game engines.
The Open Source Virtual Reality project consists of a number of software components that can be used to create VR experiences that run cross-platform.
Figure 1: The OSVR Architecture, OSVR.Github.io
At the root of OSVR is the OSVR-Core project, which serves as the middleware between the client software code and the binaries that are created by device manufacturers. When building a client project that utilizes the OSVR libraries, the OSVR-Core runs a local instance of the OSVR_server and connects the client components in a given game engine to the hardware attached to the device. (OSVR, 2015).
OSVR Utilities provide lightweight software programs to help with troubleshooting and debugging virtual reality hardware. At present, there are two utilities that OSVR provides: OSVR-Tracker-Viewer, which visualizes the positions and orientations of connect hardware, and Distortionizer (OSVR, Distortionizer, 2015), which estimates correction parameters for visual distortion based on the type of virtual reality device connected to the OSVR-Core server. OSVR will automatically adjust the specific distortion and positional tracking to the connected hardware, but this tool gives developers a way to view the adjustments made by the OSVR-Core.
The OSVR Utilities also provide a model for how to integrate read data from the OSVR-Core server into client applications.
OSVR currently supports several plugins that are used for both hardware devices and for integration into game engines. OSVR supports development in Unity and Unreal Engine, and currently has plugin support for the Oculus Rift and Vuzix headsets.
Development Strategies & Components
The skeletal components for using the OSVR platform for virtual and augmented reality development involve initialization of the OSVR Engine through OSVR_core and library, including the OSVR update method within your game’s update mechanism to handle changes in the hardware through the core library, and closing the connection to the OSVR_core server when your application ends. (Boger & Pavlik, 2014) Generally, within your application, you will need to handle additional tasks and communicate with the OSVR engine for events such as enumerating the connected devices, getting information about the device’s display, and sending your own data to the device.
Figure 2: Example structure for an application built on the OSVR platform, from OSVR.com
Spearheaded by Razer, OSVR provides a fully supported headset of their own with a launch date tentatively set for summer 2015. The OSVR Hacker Dev kit provides an HMD similar to the Oculus Rift that comes preassembled and ready to use out of the box, and is designed to support custom modules to make adjustments and customizations. (Razer, 2015) As part of OSVR, Razer has also made the 3D files and schematics available for interested parties to download and create themselves.
Figure 3: OSVR headset, OSVR.com
Hardware engineers are also able to create customized add-ons, such as input devices, by downloading the HMD files for specifications.
OPEN SOURCE ONLINE WITH WEBVR
When developing in WebVR, an OpenGL canvas created by Three.js is transformed with a special rendering library that applies distortion effects and positional tracking to the camera based on the hardware attached. This then calls a specific redraw when the position is changed, and the view on the screen of the canvas is updated accordingly.
After attending this talk, attendees should have an understanding of the current open source movement in the virtual reality space, and will have the knowledge required to get started with working on open source virtual reality projects.
Boger, Y., & Pavlik, R. (2014, December). An Introcution to OSVR. Retrieved from OSVR Developer: https://osvr.github.io/whitepapers/introduction_to_osvr/
Bringing VR to the Web. (2015). Retrieved from WebVR: http://webvr.info/
OSVR. (2015, March 9). A Brief Overview of the OSVR Software Repositories. Retrieved from www.osvr.com: http://www.osvr.com/blog/?p=35
OSVR. (2015). Distortionizer. Retrieved from GitHub: https://github.com/OSVR/distortionizer
Razer. (2015). OSVR Hacker Dev Kit. Retrieved from RazerZone: http://www.razerzone.com/osvr-hacker-dev-kit