April 2016 Developer Updates

I wanted to provide a brief update on new repositories and features and major enhancements for the OSVR software platform.

Highlights

  • New augmented reality plug-in OSVR-ARTookit
  • New initial release of interactive configuration utility OSVR-Config
  • One-click installers for end-users and developers
  • Updates to HDK firmware and OSVR Control software to support persistence modes and tracking modes.
  • Many improvements and bug fixes in the Github repositories

Details below.

OSVR-ARToolkit

In collaborator with DAQRI (see annoucement here), a new plugin has been created that connects the popular ARTookit open-source augmented reality library with OSVR. The OSVR-ARToolkit repository is here.

ARToolKit is a tracking library for creation of augmented reality applications. It uses video tracking capabilities that calculate the real camera position and orientation relative to square physical markers or natural feature markers in real time. ARToolKit was acquired by DAQRI which then open-sourced what used to be called the professional version of ARToolkit. Tho OSVR plugin receives imaging reports from video plugins, such as OpenCV, and performs marker detection. This initial implementation tracks one pattern, patt.hiro (located in the Data folder), and sends a tracker pose showing the position and orientation of the marker on the path /me/hands/left, which can then be used in all the OSVR-supported game engines.

Community contributions on connecting additional features of ARTookit with OSVR are very welcome.

OSVR-Config

The OSVR-Config utility (binaries can be downloaded from the “Get OSVR” page, source code respository is here) is an interactive utility that builds the JSON configuration file for the OSVR server as well as other implements features such as:

  • Enable/disable manually loaded plugins.
  • Look through and select one of a number of sample configurations.
  • Select a display configuration from a list.
  • Configure common RenderManager settings
  • Launch the currently selected OSVR Server.
  • Enable/Disable direct mode.
  • Launch the Tracker Viewer utility to test your configuration.

This is an early release and we would very much welcome feedback.

osvrConfig

One-Click Installers

A key area of improvement we identified in the recent developer survey (see here) was to simplify the installation and configuration procedures. In addition to the OSVR-Config utility, we are introducing new one-click installers for 32 and 64 bit for both developers and end-users.

The installers can be found here for the runtime version and here for the developer version. Both include the RenderManager files, so a separate RenderManager install is no longer necessary.

Firmware and OSVR Control Improvements

  • Added the ability to set persistence levels. Use the OSVR Control software which you can download from here. The persistence level (see image below) is automatically stored in the HDK until changed again. This feature requires upgrading the HDK firmware which can also be done with the OSVR control software
  • Added the ability to choose Rotation Vector or Game Rotation Vector for tracking mode. Rotation Vector senses the magnetic north and does not drift. Game rotation vector is similar to the Rotation Vector except it does not use the geomagnetic field. Therefore it does not point north and drifts a bit over time. The advantage of using the game rotation vector is that relative rotations are more accurate, and not impacted by magnetic field changes. If using the Rotation Vector, it is recommended to calibrate the HMD any time it is moved to a different environment. To calibrate, move the HMD in a figure-eight motion for a few seconds and then put on a flat surface (e.g. desk) for 10 seconds. This will cause the calibration to be stored in the HDK.

OSVRControl

Improvements and key bug fixes

OSVR-Core

  • Improved error handling/messages in case config files can’t be loaded or parsed.
  • Added new server auto-start API. This black-box style API will start the currently selected OSVR server, if it is not already running.

OSVR-Unity

  • Fixed anti-aliasing bug in Unity where AA quality setting was not being applied by default.
  • Fixed bug where Unity was crashing when switching scenes in the editor.
  • RenderManager preview window off by default, for substantially improved performance.
  • Added RenderManager and Android dependencies to OSVRUnity.unitypackage.

OSVR-Unreal

  • OSVR initialization is now more robust with longer time-based timeouts when context initialization fails.
  • Preliminary support for Android added.

See also the announcement regarding native support for OSVR in Unreal 4.12

OSVR-RenderManager

  • Added client-side predictive tracking in RenderManager, with different interval for each eye. Predictive tracking can be performed on the server side or on the client side. Client side is better because the client knows best at what time the prediction needs to be run.
  • Added black borders during time warp rather than texture clamping. This was seen when the overfill ratio was fairly small – smaller than the movement required by time warping.
  • Changed default configurations to ones that reduce tearing and judder
  • Fixed structure returned from OpenDisplay to not send unused/unset fields
  • Fixed DirectMode to work with nVidia driver version 364.72 on at least some GPUs (other GPUs may still need a 362.xx series driver)
  • Fixed aliasing in second render pass when using Direct3D. This works together with a similar fix in the Unity plugin.
  • Added ability to use built-in distortion mesh for OSVR HDK 1.3. Generic distortion meshes are planned for the near future.
  • Much faster loading of unstructured grid distortion correction
  • Mac OpenGL Core profile support is now working
  • Builds and links (not yet tested) on Android
  • On Windows, snapshots now include the redistributable version of d3dcompiler_47.dll, easing Windows 7 compatibility.
  • Improved DirectModeDebugging tool for NVIDIA-based systems: now checks to see if hybrid graphics (“Optimus”) systems have a directly-connected external video port that can support direct mode, and also performs driver version compatibility checking.
  • Fixed multiple heterogeneous GPU support on Windows.
  • Added GLES 2.0 sample program
  • Removed all legacy OpenGL function calls from RenderManager
  • Fixed #define collision on Linux/X11
  • Installer stored shortcuts in sub-folders by type

OSVR-Oculus-Rift

  • No longer relies on a VRPN driver.
  • Builds with multiple pre-1.0 runtimes.
  • Auto-detects Oculus Rifts on Windows, Linux, and OS X.

SteamVR-OSVR

  • Updated to work with the latest OpenVR 0.9.19.

Chat Rooms, Videos and other Resources

As a reminder, 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:

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

The OSVR documentation repository is here

VR tutorials on key topics such as time warping, foveated rendering, binocular overlap and more are here. To only see the tutorials, click on ‘key concepts’ on the right side of that page.

Want to Participate?

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

Current areas of high-priority “help wanted” are here for OSVR-Core and here for RenderManager

Any questions or issues? email support@osvr.com

Thank you for being part of OSVR!

Leave a Reply

Your email address will not be published. Required fields are marked *