@Override
    public void render() {

        // Calculate the render pose (translation/rotation) for each eye.
        // LibOVR takes the difference between this and the real position of each eye at display time
        // to apply AZW (timewarp).

        OVRPosef.Buffer hmdToEyeOffsets = OVRPosef.calloc(2);
        hmdToEyeOffsets.put(0, hardware.getEyePose(ovrEye_Left));
        hmdToEyeOffsets.put(1, hardware.getEyePose(ovrEye_Right));

        //calculate eye poses
        OVRUtil.ovr_CalcEyePoses(hardware.getHeadPose(), hmdToEyeOffsets, hardware.getLayer0().RenderPose());
        hmdToEyeOffsets.free();

        for (int eye = 0; eye < 2; eye++) {
            IntBuffer currentIndexB = BufferUtils.createIntBuffer(1);
            ovr_GetTextureSwapChainCurrentIndex(session(), hardware.getChain(eye), currentIndexB);
            int index = currentIndexB.get();

            // Constantly (each frame) rotating through a series of
            // frame buffers, so make sure we write into the correct one.
            (eye == ovrEye_Left ? leftViewPort : rightViewPort).setOutputFrameBuffer(hardware.getFramebuffers(eye)[index]);
        }

        // Now the game will render into the buffers given to us by LibOVR
    }
Place the camera within the scene.

@param eyePos      the eye position.
@param obsPosition the observer position.
@param cam         the camera to place.
jme3-vr/src/main/java/com/jme3/input/vr/oculus/OculusViewManager.java