Class OSVR

java.lang.Object
com.jme3.input.vr.osvr.OSVR
All Implemented Interfaces:
VRAPI

public class OSVR extends Object implements VRAPI
A class that wraps an OSVR system.
  • Field Details

    • FIRST_VIEWER

      public static final int FIRST_VIEWER
      The first viewer index.
      See Also:
    • EYE_LEFT

      public static final int EYE_LEFT
      The left eye index.
      See Also:
    • EYE_RIGHT

      public static final int EYE_RIGHT
      The right eye index.
      See Also:
    • EYE_LEFT_SIZE

      public static final com.ochafik.lang.jnaerator.runtime.NativeSize EYE_LEFT_SIZE
      The size of the left eye.
    • EYE_RIGHT_SIZE

      public static final com.ochafik.lang.jnaerator.runtime.NativeSize EYE_RIGHT_SIZE
      The size of the right eye.
    • defaultJString

      public static byte[] defaultJString
      The default J String.
    • OpenGLString

      public static byte[] OpenGLString
      The default OpenGL String.
  • Constructor Details

  • Method Details

    • handleRenderBufferPresent

      public boolean handleRenderBufferPresent(OSVR_ViewportDescription.ByValue leftView, OSVR_ViewportDescription.ByValue rightView, OSVR_RenderBufferOpenGL.ByValue leftBuffer, OSVR_RenderBufferOpenGL.ByValue rightBuffer)
      Access to the underlying OSVR structures.
      Parameters:
      leftView - the left viewport.
      rightView - the right viewport.
      leftBuffer - the left buffer.
      rightBuffer - the right buffer.
      Returns:
      true if the structure are accessible and false otherwise.
    • 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.
    • grabGLFWContext

      public void grabGLFWContext()
      Grab the current GLFW context.
    • shareContext

      public boolean shareContext()
      Enable context sharing.
      Returns:
      true if the context is successfully shared and false otherwise.
    • initVRCompositor

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

      public com.sun.jna.Pointer 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.
    • 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.
    • getVRinput

      public VRInputAPI 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.
    • 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.
    • 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.
    • 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.
    • 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
    • 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:
    • 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).
    • getEyeInfo

      public void getEyeInfo()
      Read and update the eye info from the underlying OSVR system.
    • 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).
    • 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
    • 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.