Valve released a beta OpenVR package for the Unity game engine’s new XR plugin system. Unity is used to make the majority of VR games.
When the Unity 2019.3 publicly shipped in January, the engine deprecated support for the built-in VR support, including for OpenVR– Valve’s application programming interface (API) for SteamVR. This was replaced by a new modular XR Plugin system.
Under the new system, Unity ‘officially’ worked with 7 XR platforms: Apple’s ARKit, Google’s ARCore, Microsoft’s HoloLens & WMR, Magic Leap, Oculus, and PlayStation VR. Support for these platforms can be enabled with a few clicks. These platforms are “fully supported” by Unity, and the company is “directly” working with them on “deep platform integration, improvements to our engine, and optimizations to our XR tech stack for the platform”.
However, the engine also allows third parties to write their own plugins. At the time, Unity stated that Valve was working on such a plugin for OpenVR, which would be shipped separately from Unity by Valve.
That is what has now been released, and it’s available on Valve’s GitHub.
Input System Not Yet Complete
Valve describes this initial version as a Beta, and warns that developers should not release titles with it just yet.
Currently, the input system works by mapping specific buttons on a simulated per-controller basis. Games developed with this plugin cannot yet create OpenVR Actions.
That means players won’t be able to use SteamVR’s built in system for remapping controls. It also means developers don’t yet have access to the SteamVR Skeletal Input API.
Valve plans to rectify these issues in future versions. For now, Valve offers the following workaround:
We’ve created custom legacy bindings and hooked them up to the Unity Input System to give you individual access to as many controller sensors as possible. You can modify these bindings while in play mode by going to the SteamVR interface, Menu, Settings, Controllers, Manage Controller Bindings, and Custom. These are saved to a folder in your project at Assets/StreamingAssets/SteamVR/[bindings].json. We’ve included default bindings for a variety of supported SteamVR controllers.
If you would like your controller included in this default list please create an issue on our github with your preferred legacy binding and unity input system layout.