Class OculusVR

java.lang.Object
com.jme3.input.vr.oculus.OculusVR
All Implemented Interfaces:
VRAPI

public class OculusVR extends Object implements VRAPI
Oculus VR (LibOVR 1.3.0) Native support.

A few notes about the Oculus coordinate system:

  • Matrices should be transposed
  • Quaternions should be inverted
  • Vectors should have their X and Z axes flipped, but apparently not Y.
  • Constructor Details

  • Method Details

    • getVRinput

      public OculusVRInput getVRinput()
      Description copied from interface: VRAPI
      Get the input provided by the underlying VR system.
      Specified by:
      getVRinput in interface VRAPI
      Returns:
      the input provided by the underlying VR system.
    • getName

      public String getName()
      Description copied from interface: VRAPI
      Get the name of the underlying VR system.
      Specified by:
      getName in interface VRAPI
      Returns:
      the name of the underlying VR system.
    • getDisplayFrequency

      public int getDisplayFrequency()
      Description copied from interface: VRAPI
      Get the Head Mounted Device (HMD) display frequency.
      Specified by:
      getDisplayFrequency in interface VRAPI
      Returns:
      the Head Mounted Device (HMD) display frequency.
    • initialize

      public boolean initialize()
      Description copied from interface: VRAPI
      Initialize this object from a VR system. All the native bindings to underlying VR system should be done within this method.
      Specified by:
      initialize in interface VRAPI
      Returns:
      true if the initialization is a success and false otherwise.
    • updatePose

      public void updatePose()
      Description copied from interface: VRAPI
      Update Head Mounted Device (HMD) pose internal storage. This method should be called before other calls to HMD position/orientation access.
      Specified by:
      updatePose in interface VRAPI
    • isInitialized

      public boolean isInitialized()
      Description copied from interface: VRAPI
      Check if the VR API is initialized.
      Specified by:
      isInitialized in interface VRAPI
      Returns:
      true if the VR API is initialized and false otherwise.
      See Also:
    • destroy

      public void destroy()
      Description copied from interface: VRAPI
      Close the link with underlying VR system and free all attached resources.
      Specified by:
      destroy in interface VRAPI
    • reset

      public void reset()
      Description copied from interface: VRAPI
      Reset the VR system. After a call to this method, the current position of the HMD should be the origin (i-e the observer without any combined transformation).
      Specified by:
      reset in interface VRAPI
    • getRenderSize

      public void getRenderSize(Vector2f store)
      Description copied from interface: VRAPI
      Get the size of a Head Mounted Device (HMD) rendering area in pixels.
      Specified by:
      getRenderSize in interface VRAPI
      Parameters:
      store - the size of a Head Mounted Device (HMD) rendering area in pixels (modified).
    • getInterpupillaryDistance

      public float getInterpupillaryDistance()
      Description copied from interface: VRAPI
      Get the Head Mounted Device (HMD) interpupilar distance in meters.
      Specified by:
      getInterpupillaryDistance in interface VRAPI
      Returns:
      the Head Mounted Device (HMD) interpupilar distance in meters.
    • getOrientation

      public Quaternion getOrientation()
      Description copied from interface: VRAPI
      Get the Head Mounted Device (HMD) orientation.
      Specified by:
      getOrientation in interface VRAPI
      Returns:
      the Head Mounted Device (HMD) orientation.
    • getPosition

      public Vector3f getPosition()
      Description copied from interface: VRAPI
      Get the Head Mounted Device (HMD) position.
      Specified by:
      getPosition in interface VRAPI
      Returns:
      the Head Mounted Device (HMD) orientation.
    • getPositionAndOrientation

      public void getPositionAndOrientation(Vector3f storePos, Quaternion storeRot)
      Description copied from interface: VRAPI
      Get the Head Mounted Device (HMD) position and orientation.
      Specified by:
      getPositionAndOrientation in interface VRAPI
      Parameters:
      storePos - the Head Mounted Device (HMD) position (modified).
      storeRot - the Head Mounted Device (HMD) rotation (modified).
    • getHMDMatrixProjectionLeftEye

      public Matrix4f getHMDMatrixProjectionLeftEye(Camera cam)
      Description copied from interface: VRAPI
      Get the Head Mounted Device (HMD) left eye projection matrix.
      Specified by:
      getHMDMatrixProjectionLeftEye in interface VRAPI
      Parameters:
      cam - the camera attached to the left eye.
      Returns:
      the Head Mounted Device (HMD) left eye projection matrix.
    • getHMDMatrixProjectionRightEye

      public Matrix4f getHMDMatrixProjectionRightEye(Camera cam)
      Description copied from interface: VRAPI
      Get the Head Mounted Device (HMD) right eye projection matrix.
      Specified by:
      getHMDMatrixProjectionRightEye in interface VRAPI
      Parameters:
      cam - the camera attached to the right eye.
      Returns:
      the Head Mounted Device (HMD) right eye projection matrix.
    • getHMDVectorPoseLeftEye

      public Vector3f getHMDVectorPoseLeftEye()
      Description copied from interface: VRAPI
      Get the Head Mounted Device (HMD) left eye pose (position of the eye from the head) as a vector.
      Specified by:
      getHMDVectorPoseLeftEye in interface VRAPI
      Returns:
      the Head Mounted Device (HMD) left eye pose as a vector.
    • getHMDVectorPoseRightEye

      public Vector3f getHMDVectorPoseRightEye()
      Description copied from interface: VRAPI
      Get the Head Mounted Device (HMD) right eye pose (position of the eye from the head) as a vector.
      Specified by:
      getHMDVectorPoseRightEye in interface VRAPI
      Returns:
      the Head Mounted Device (HMD) right eye pose as a vector.
    • getSeatedToAbsolutePosition

      public Vector3f getSeatedToAbsolutePosition()
      Description copied from interface: VRAPI
      Get the seated to absolute position.
      Specified by:
      getSeatedToAbsolutePosition in interface VRAPI
      Returns:
      the seated to absolute position.
    • getHMDMatrixPoseLeftEye

      public Matrix4f getHMDMatrixPoseLeftEye()
      Description copied from interface: VRAPI
      Returns the transform between the view space and left eye space. Eye space is the per-eye flavor of view space that provides stereo disparity. Instead of Model * View * Projection the model is Model * View * Eye * Projection. Normally View and Eye will be multiplied together and treated as View. This matrix incorporates the user's interpupillary distance (IPD).
      Specified by:
      getHMDMatrixPoseLeftEye in interface VRAPI
      Returns:
      the transform between the view space and eye space.
    • getHMDMatrixPoseRightEye

      public Matrix4f getHMDMatrixPoseRightEye()
      Description copied from interface: VRAPI
      Returns the transform between the view space and right eye space. Eye space is the per-eye flavor of view space that provides stereo disparity. Instead of Model * View * Projection the model is Model * View * Eye * Projection. Normally View and Eye will be multiplied together and treated as View. This matrix incorporates the user's interpupillary distance (IPD).
      Specified by:
      getHMDMatrixPoseRightEye in interface VRAPI
      Returns:
      the transform between the view space and eye space.
    • getType

      public HmdType getType()
      Description copied from interface: VRAPI
      Get the Head Mounted Device (HMD) type.
      Specified by:
      getType in interface VRAPI
      Returns:
      the Head Mounted Device (HMD) type.
    • initVRCompositor

      public boolean initVRCompositor(boolean set)
      Description copied from interface: VRAPI
      Initialize the VR compositor that will be used for rendering.
      Specified by:
      initVRCompositor in interface VRAPI
      Parameters:
      set - true if the use of VR compositor is allowed and false otherwise.
      Returns:
      true if the initialization is a success and false otherwise.
    • printLatencyInfoToConsole

      public void printLatencyInfoToConsole(boolean set)
      Description copied from interface: VRAPI
      Set if latency information has to be logged.
      Specified by:
      printLatencyInfoToConsole in interface VRAPI
      Parameters:
      set - true if latency information has to be logged and false otherwise.
    • setFlipEyes

      public void setFlipEyes(boolean set)
      Description copied from interface: VRAPI
      Flip the left and right eye.
      Specified by:
      setFlipEyes in interface VRAPI
      Parameters:
      set - true if the eyes has to be flipped and false otherwise.
    • getCompositor

      public Void getCompositor()
      Description copied from interface: VRAPI
      Get the object that wraps natively the VR compositor.
      Specified by:
      getCompositor in interface VRAPI
      Returns:
      the object that wraps natively the VR system.
    • getVRSystem

      public Void getVRSystem()
      Description copied from interface: VRAPI
      Get the object that wraps natively the VR system.
      Specified by:
      getVRSystem in interface VRAPI
      Returns:
      the object that wraps natively the VR system.
    • findHMDTextureSize

      public void findHMDTextureSize()
    • setupLayers

      public void setupLayers()
    • setupFramebuffers

      public void setupFramebuffers(int eye)
      Create a framebuffer for an eye.
    • matrixO2J

      public static Matrix4f matrixO2J(org.lwjgl.ovr.OVRMatrix4f from, Matrix4f to)
      Copy the values from a LibOVR matrix into a jMonkeyEngine matrix.
      Parameters:
      from - The matrix to copy from.
      to - The matrix to copy to.
      Returns:
      The to argument.
    • quatO2J

      public static Quaternion quatO2J(org.lwjgl.ovr.OVRQuatf from, Quaternion to)
      Copy the values from a LibOVR quaternion into a jMonkeyEngine quaternion.
      Parameters:
      from - The quaternion to copy from.
      to - The quaternion to copy to.
      Returns:
      The to argument.
    • vecO2J

      public static Vector3f vecO2J(org.lwjgl.ovr.OVRVector3f from, Vector3f to)
      Copy the values from a LibOVR vector into a jMonkeyEngine vector.
      Parameters:
      from - The vector to copy from.
      to - The vector to copy to.
      Returns:
      The to argument.
    • getSessionPointer

      public long getSessionPointer()
    • getChain

      public long getChain(int eye)
    • getFramebuffers

      public FrameBuffer[] getFramebuffers(int eye)
    • getLayers

      public org.lwjgl.PointerBuffer getLayers()
    • getLayer0

      public org.lwjgl.ovr.OVRLayerEyeFov getLayer0()
    • getFovPort

      public org.lwjgl.ovr.OVRFovPort getFovPort()
    • getHeadPose

      public org.lwjgl.ovr.OVRPosef getHeadPose()
    • getEyePose

      public org.lwjgl.ovr.OVRPosef getEyePose(int eye)
    • getEnvironment

      public VREnvironment getEnvironment()