New OSVR developer resources and platform updates

A brief update on new features and major enhancements for the OSVR software platform.

Chat Rooms, Videos and other Resources

We’ve set up developer chat rooms at Gitter, and they are tied to the GitHub projects.

 

The list of all rooms is here: https://gitter.im/orgs/OSVR/rooms

Some existing rooms:

 

New video showing how to add OSVR to Unreal projects is here

 

New step-by-step guide for using OSVR in Unity is here

 

Explanation of RenderManager options for Unity and beyond is here

 

Ever-growing list of supported devices, operating systems and engines is here

 

Short blog post explaining the importance of OSVR’s role as middleware is here

 

New Repositories

Unity-VR-Samples (repository is here) includes the OSVR version of the samples shipping alongside Unity 5.3. This is a useful way to get started in Unity/OSVR.

OSVR Core
Features

  • Extensive stability, latency, performance, and reliability enhancements to the video-based (“positional”) tracking code.

  • New beacon pre-calibration application for use if you want the best performance from an  HDK from the start, every time, along with explanation about the various kinds of calibration involved in the video-based tracking – see https://github.com/OSVR/OSVR-Core/wiki/Video-Based-Tracking-Calibration

  • New option, enabled by default, to have the Video-IMU tracker fusion automatically reset orientation so that the camera is assumed to be forward.

  • New config files pre-set for the HDK 1.2 and 1.3 for use with RenderManager-enabled applications in direct and extended mode with optional positional tracking, and both front and rear panel trackers enabled by default. These configuration files can also be used with non-RenderManager applications.

  • New/enhanced support for the RenderManager config data to be supplied through the OSVR Server, with several sample config files bundled.

Bug fixes

  • Update display descriptors to correct projection matrices and improve distortion correction.

  • Fix video-based tracker build with some versions of the Windows SDKs.

  • Fixed compiling client applications using Visual Studio 2010.

  • Improved Video-IMU tracker fusion now requires the HMD to be held still in the camera’s view momentarily to provide a more robust determination of the camera’s pose.

  • Corrected transformation of video-based tracker pose into room space in the Video-IMU fusion, fixing mixed movement (e.g. moving sideways producing a sideways-and-down movement).

  • Fixed build system to enable building using system packages of jsoncpp on more non-Windows platforms (tested on Debian Jessie)

OSVR Render Manager
Features

  • Improved distortion correction for the HDK 1.3.

  • Additional unstructured-grid mesh-based distortion correction strategy supported.

  • Additional mono point-sample distortion mesh strategy supported.

  • Support added for systems containing multiple, different vendor GPUs with NVIDIA direct mode, as long as the HMD is attached to a display output directly connected to the NVIDIA GPU. (This supports some, but not all, laptop integrated+discrete configurations, as well as desktop configurations with multiple GPUs or that use an integrated GPU in addition to a discrete GPU. Tested on a laptop with 6th gen Intel Core processor integrated graphics plus NVIDIA 9xxM series discrete, as well as a desktop with a 4th gen Core i7 integrated GPU plus NVIDIA 635 GT OEM discrete.)

  • New direct mode debugging/test tool will check the NVIDIA whitelist, then try to take displays in then out of direct mode, with verbose messaging. Just run “DirectModeDebugging”, from a command prompt window if you want to see the messages produced.

  • Supports new “oversample” configuration parameter to have the application produce a render texture sized to be over- or under-sampled when being distortion mapped and time warped.

  • Updated multi-vendor whitelist.

  • Now works with unmodified configuration files from OSVR-Core in addition to configuration files bundled with the separate Render Manager installer.

  • Update to NVIDIA GameWorks VR SDK for Headsets v1.1 – NVIDIA direct mode reported to require driver 361.43.

Bug Fixes

  • Performance improvements in building distortion meshes.

  • Improved error messages in case of failure in NVIDIA GameWorks VR direct-mode codepath.

  • No longer causes screen flashes due to re-entering direct mode if the display is already in direct mode on application startup.

Known Issues

  • Particularly with a (recommended) “Clean Install” of NVIDIA drivers, application of the “Combined Whitelist” file and rebooting the computer seems required for most systems using the NVIDIA driver version 361.43 to successfully use direct mode. (Driver whitelist issue)

OSVR Unity
Features

  • New “Getting Started” guide for Unity developers: https://github.com/OSVR/OSVR-Unity/blob/master/GettingStarted.md

  • Moved the main “rendering loop” from DisplayController to VRViewer. The biggest change is that a VRViewer with a camera (tagged “MainCamera”) now exists in the scene before runtime (but doesn’t have to). This brings us closer to Unity’s VR setup, as Unity VR projects will always have a MainCamera in the scene, likely referenced by other objects in the scene. A Unity VR scene can be converted to an OSVR-Unity VR scene simply by adding a VRViewer component to the MainCamera (so long as there are also DisplayController and ClientKit components in the scene), without breaking existing references.

  • “DirectMode Preview” feature, but with an expensive implementation by way of leaving the VRViewer camera on during rendering. If performance suffers in DirectMode, the first optimization to make is turning this option off. It is configurable via a boolean in the editor on the DisplayController component. This is an upcoming RenderManager feature, so this will go away soon.

  • New Unity VR Samples project: https://github.com/OSVR/Unity-VR-Samples
    Good for seeing how to convert an existing Unity VR project to OSVR.

  • Updated to work with RenderManager v0.6.35, including functions for setting near and far clipping plane distances and IPD in RenderManager. The near and far clipping planes are copied from the MainCamera in the scene. The IPD is not being set from Unity code, but the functionality is there to pass to RenderManager… will remove this if the IPD value should come from a config file.

  • Also includes “SetRoomRotationUsingHead” and “ClearRoomToWorldTransform” functionality on the RenderManager path, and a “Recenter” prefab that demonstrates using a key to “recenter” the room based on the head’s current orientation.

Bug fixes

  • Fixed head-translation bug with positional tracking + RenderManager.

  • Rendering optimizations. Fixed a bug on the non-RenderManager path that caused an extra render.

  • Fixed bug where VREye was not inheriting initial rotation of VRViewer, causing incorrect rotations when parented to an object with non-zero rotation.

  • Fixed a bug where point lights were causing the display to turn white in some scenes on the RenderManager path.

 

Known Issues

  • Setting up the VRSurface cameras with Image Effects are a common request. There is a potential solution in the open pull request: https://github.com/OSVR/OSVR-Unity/pull/111
    We’d like some input from the community, especially someone with actual image effects in their game, to see if this actually works in-practice and meets the needs of developers.

  • White line or white rectangle outline on one half of the display in RenderManager, only in the Unity Editor. This does not affect builds.

  • Colored rectangle on one half of the display in RenderManager, only in the Unity Editor. This does not affect builds.

  • Slow “DirectMode Preview” implementation, until the feature is moved to RenderManager.

 

OSVR Unreal
Features

  • Added RenderManager support! When the game is run from Visual Studio or from the standalone package, the plugin will render the scene in direct mode on your HMD.

  • Updated documentation, including a link to a tutorial video for getting started.

  • Support for Unreal 4.10.

  • Improved error handling and logging when there are errors.

  • The plugin build file now properly copies runtime DLL dependencies (e.g. OSVR-Core DLLs) to the right output binary folder during build/packaging. Previously this required manual copying.

  • Updated FOV, IPD, and projection code to use corresponding APIs from OSVR-Core. Previously these values were calculated or hard-coded in the plugin itself.

  • Removed hard-coded engine module include paths in the plugin build file. This should allow the plugin to work regardless of your Unreal engine install path (or build, if you built the engine from source).

 

Bug fixes

  • The ImportFromSdk.cmd script now works when SDK paths have whitespace in them.

  • Plugin now reports that the “OSVR HMD” is not connected when the OSVR server is not running or there are errors during startup.

  • Fixed a viewport issue when r.screenpercentage was set to anything other than 100. The plugin now sets r.screenpercentage on startup.

  • Fixed an error when the plugin was shutdown.

SteamVR OSVR
Features

  • Updated to the latest OpenVR SDK, which is compatible with the latest release of SteamVR.

  • The plugin has now been verified to work with several SteamVR based games on Steam, including Half Life 2 (beta) and Elite Dangerous.

 

Bug fixes

  • The plugin now reports a suggested window position based on the corresponding render manager configuration. You can now adjust where the VR compositor window shows up based on your individual display configuration.

  • Fixed an issue where the plugin failed to report the correct IPD.

  • Fixed an issue where the SteamVR server failed to initialize if the VR Compositor window’s initial position was anywhere other than (0, 0).

Want to Participate?

Interested in contributing? Start here: http://osvr.github.io/contributing/

Any questions or issues? email support@osvr.com

Thank you for being part of OSVR!