This is yet another Oculus Rift block for Cinder, and a collaboration between Paul Houx & myself. Thanks Paul for all the initial work!
-
Basic Sample: Features the standard use case scenario, with all the most common functionalities.
-
Spherical Stereo: Maps a sample Arnold 360 texture to a sphere, in stereo. Useful for both live-action & pre-rendered CG content.
-
Instanced Stereo: Similar to the Basic Sample, only it uses instanced stereo rendering as described here.
First, initialize the rift manager in prepareSettings.
hmd::RiftManager::initialize();
Create an Oculus Rift instance:
hmd::OculusRiftRef mRift;
...
mRift = hmd::OculusRift::create();
The OculusRift class has two cameras: a convenience host camera controlling the overall head position & orientation, and an active eye camera which is updated by the SDK according to the tracked position & orientation. Their transformations are composed and can be queried via the hmd::OculusRift
interface.
In the draw() loop, call bind to render the scene to the rift's framebuffers. Iterate over each eye, drawing your scene as follows:
hmd::ScopedRiftBuffer bind{ mRift };
...
for( auto eye : mRift.getEyes() ) {
mRift.enableEye( eye );
drawScene();
}
To avoid judder, make sure you hit 90fps for the CV1 and 75fps for the DK2!