Oculus Rift Output with AppOculus Plugin
An AppOculus plugin is used to support the Oculus Rift head-mounted display. For the correct work of the plugin Oculus Rift PC Runtime is required. Note that your customers must have runtime installed as well. The plugin supports all HMD types supported by the latest Oculus Rift PC Runtime (including Oculus Rift CV1 (Consumer Version).
- Since Oculus VR has stopped supporting Linux, the plugin is available only for Windows.
- This plugin cannot be used in a Qt-based application.
The AppOculus plugin provides the VR mode that allows for rendering to both the Oculus Rift head-mounted display and the PC display. When the VR mode is disabled, the image is rendered only to the PC display. The mode can be toggled by using the engine.oculus.setEnabled() function.
Both the windowed and the full screen modes are supported. On the PC display the image is rendered as follows:
- engine.oculus functions
- app_oculus_00 sample for additional details
- OVR_CAPI.h File Reference
- The Oculus Best Practices document and the Oculus Developer Guide document that can be downloaded from the official web site.
To run the plugin sample from the UNIGINE SDK Browser, go to the Samples tab, choose UnigineScript -> App and run the app_oculus_00 sample.
Implementing Unigine Application with Oculus Support
To use the Oculus Rift virtual display with Unigine, perform the following:
- Get and set up the latest Oculus Rift PC Runtime.
- Create a new project with AppOculus support via UNIGINE SDK Browser: click Video Output Options, check the Oculus support (AppOculus plugin) option in the form that opens and clickOk.
To add Oculus support to an existing project, in UNIGINE SDK Browser, click Other Actions ->Configure Project -> Video Output Options -> Oculus support (AppOculus plugin) -> Ok.
- Implement the application logic by using functions of the AppOculus plugin API. You can also change the plugin API functions or add new ones and then recompile the plugin.
- Plug in the Oculus Rift virtual display.
- Launch the AppOculus plugin on the application start-up.
To launch the plugin, specify the extern_plugin command line option on the application start-up:
main_x86d -extern_plugin "AppOculus"
If you run the application via UNIGINE SDK Browser, set the Stereo 3D option to Oculus Rift in the Options tab and click Apply:
The following CLI options can be specified on the application start-up:
- oculus_density - the render target pixel density. In other words, this is the ratio of the number of render target pixels to display pixels at the center of distortion. The default value is 1.0 (the render target pixel density matches the display surface at the point on the display).
- oculus_scale - the world scale. The default value is 1.0.
main_x86d -extern_plugin "AppOculus" -oculus_density 1.0 -oculus_scale 8.0
Plugin compilation is required if you change its source code (for example, add new API functions).
Oculus SDK is required for recompiling the AppOculus plugin:
- Get the Oculus SDK for Windows.
The 1.10 version is required.
- Set the path to the <Oculus Rift SDK>/LibOVR folder in the OCULUSROOT environment variable:
OCULUSROOT=<Oculus Rift SDK>/LibOVR
- Compile the plugin in one of the following ways:
Since version 1.10, Oculus Rift SDK library (LibOVR) is compiled with the /MT flag set for the runtime library. For the plugin to work correctly, you can:
- Compile the plugin with the /MT flag (see details below) or
- recompile the libovr.lib library with the /MD flag.
- Via Microsoft Visual Studio: go to the <UnigineSDK>\source\plugins\App\AppOculus, open the appoculus_vs2013.vcxproj or appoculus_vs2015.vcxproj project and build it.
To change the flag set for the runtime library, go to Project -> Properties -> Configuration Properties -> C/C++ -> Code Generation and set Multi-threaded (/MT) for Runtime Library.
- Via the command prompt by using the build script or Scons:
C:\UnigineSDK\source>build.py --plugin AppOculusTo change the flag set for the runtime library, go to <Unigine SDK>\source\plugins\App\AppOculus\SConscript and add the following code before calling BuildPlugin('AppOculus',Split(sources)):
env.Append(CPPFLAGS = Split('/MT'))