Rift
¶Rift ([fovType, trackingOriginType, …]) |
Class provides a display and peripheral interface for the Oculus Rift (see: https://www.oculus.com/) head-mounted display. |
Rift.productName |
Get the HMD’s product name. |
Rift.manufacturer |
Get the connected HMD’s manufacturer. |
Rift.serialNumber |
Get the connected HMD’s unique serial number. |
Rift.firmwareVersion |
Get the firmware version of the active HMD. |
Rift.resolution |
Get the HMD’s raster display size. |
Rift.displayRefreshRate |
Get the HMD’s display refresh rate. |
Rift.trackingOriginType |
Current tracking origin type. |
Rift.getTrackingOriginType () |
Get the current tracking origin type. |
Rift.setTrackinOrigin ([origin_type, recenter]) |
Set the tracking origin type. |
Rift.recenterTrackingOrigin () |
Recenter the tracking origin. |
Rift.shouldQuit |
Check if the user requested the application should quit through the headset’s interface. |
Rift.isVisible |
Check if the app has focus in the HMD and is visible to the viewer. |
Rift.isHmdMounted |
Check if the HMD is mounted on the user’s head. |
Rift.isHmdPresent |
Check if the HMD is present. |
Rift.shouldRecenter |
Check if the user requested the origin be recentered through the headset’s interface. |
Rift.setBuffer (buffer[, clear]) |
Set the active stereo draw buffer. |
Rift.absTime |
Get the absolute time for this frame. |
Rift.viewMatrix |
Get the view matrix for the current buffer. |
Rift.projectionMatrix |
Get the projection matrix for the current buffer. |
Rift.headLocked |
Enable/disable head locking. |
Rift.pollControllers () |
Update all connected controller states. |
Rift.flip ([clearBuffer]) |
Submit view buffer images to the HMD’s compositor for display at next V-SYNC. |
Rift.multiplyViewMatrixGL () |
Multiply the local eye pose transformation matrix obtained from the SDK using glMultMatrixf(). |
Rift.multiplyProjectionMatrixGL () |
Multiply the current projection matrix obtained from the SDK using glMultMatrixf(). |
Rift.setRiftView ([clearDepth]) |
Set head-mounted display view. |
Rift.setDefaultView ([clearDepth]) |
Return to default projection. |
Rift.controllerConnected ([controller]) |
Check if a given device is connected to the Haptics engine. |
Rift.getConectedControllers () |
Get a list of connected input devices (controllers) managed by the LibOVR runtime. |
Rift.getThumbstickValues ([controller, deadzone]) |
Get a list of tuples containing the displacement values (with deadzone) for each thumbstick on a specified controller. |
Rift.getIndexTriggerValues ([controller, …]) |
Get the values of the index triggers representing the amount they are being displaced. |
Rift.getHandTriggerValues ([controller, deadzone]) |
Get the values of the hand triggers representing the amount they are being displaced. |
Rift.getButtons (buttonNames[, controller, …]) |
Returns True if any of the buttons in button_list are held down. |
Rift.getTouches (touchNames[, edgeTrigger]) |
Returns True if any buttons are touched using sensors. |
Rift.isIndexPointing ([hand]) |
Check if the user is doing a pointing gesture with the given hand, or if the index finger is not touching the controller. |
Rift.isThumbUp ([hand]) |
Check if the user’s thumb is pointing upwards with a given hand, or if not touching the controller. |
Rift.raycastSphere (originPose, targetPose[, …]) |
Project an invisible ray of finite or infinite length from the originPose in rayDirection and check if it intersects with the targetPose bounding sphere. |
psychopy.visual.
Rift
(fovType='recommended', trackingOriginType='eye', texelsPerPixel=1.0, headLocked=False, highQuality=True, nearClip=0.1, farClip=100.0, monoscopic=False, samples=1, mirrorRes=None, legacyOpenGL=True, warnAppFrameDropped=True, *args, **kwargs)¶Class provides a display and peripheral interface for the Oculus Rift (see: https://www.oculus.com/) head-mounted display.
Parameters: |
|
---|
_prepareMonoFrame
(clear=True)¶Prepare a frame for monoscopic rendering. This is called automatically after ‘startHmdFrame’ if monoscopic rendering is enabled.
_resolveMSAA
()¶Resolve multisample anti-aliasing (MSAA). If MSAA is enabled, drawing operations are diverted to a special multisample render buffer. Pixel data must be ‘resolved’ by blitting it to the swap chain texture. If not, the texture will be blank.
NOTE: You cannot perform operations on the default FBO (at frameBuffer) when MSAA is enabled. Any changes will be over-written when ‘flip’ is called.
Returns: | |
---|---|
Return type: | None |
_setupFrameBuffer
()¶Override the default framebuffer init code in window.Window to use the HMD swap chain. The HMD’s swap texture and render buffer are configured here.
If multisample anti-aliasing (MSAA) is enabled, a secondary render buffer is created. Rendering is diverted to the multi-sample buffer when drawing, which is then resolved into the HMD’s swap chain texture prior to committing it to the chain. Consequently, you cannot pass the texture attached to the FBO specified by frameBuffer until the MSAA buffer is resolved. Doing so will result in a blank texture.
Returns: | |
---|---|
Return type: | None |
_startHmdFrame
()¶Prepare to render an HMD frame. This must be called every frame before flipping or setting the view buffer.
This function will wait until the HMD is ready to begin rendering before continuing. The current frame texture from the swap chain are pulled from the SDK and made available for binding.
Returns: | |
---|---|
Return type: | None |
_startOfFlip
()¶Custom _startOfFlip for HMD rendering. This finalizes the HMD texture before diverting drawing operations back to the on-screen window. This allows ‘flip()’ to swap the on-screen and HMD buffers when called. This function always returns True.
Returns: | |
---|---|
Return type: | True |
_updatePerformanceStats
()¶Run profiling routines. This just reports if the application drops a frame. Nothing too fancy yet.
_updateProjectionMatrix
()¶Update or re-calculate projection matrices based on the current render descriptor configuration.
Returns: | |
---|---|
Return type: | None |
_updateTrackingState
()¶Update the tracking state and calculate new eye poses.
The absolute display time is updated when called and used when computing new head, eye and hand poses.
Returns: | |
---|---|
Return type: | None |
absTime
¶Get the absolute time for this frame.
controllerConnected
(controller='xbox')¶Check if a given device is connected to the Haptics engine.
Parameters: | controller (str) – Name of the controller to check if connected. |
---|---|
Returns: | True if specified controller connected, else False. |
Return type: | boolean |
displayRefreshRate
¶Get the HMD’s display refresh rate. This rate is independent of the monitor display rate.
Returns: | Refresh rate in Hz. |
---|---|
Return type: | float |
firmwareVersion
¶Get the firmware version of the active HMD. Returns a tuple containing the major and minor version.
Returns: | Firmware major and minor version. |
---|---|
Return type: | tuple (int, int) |
flip
(clearBuffer=True)¶Submit view buffer images to the HMD’s compositor for display at next V-SYNC. This must be called every frame.
Parameters: | clearBuffer (boolean) – Clear the frame after flipping. |
---|---|
Returns: | |
Return type: | None |
getButtons
(buttonNames, controller='xbox', edgeTrigger='continuous')¶Returns True if any of the buttons in button_list are held down. All buttons are ORed together and tested. Edge triggering can be enabled by specifying either ‘rising’ or ‘falling’ to edge_trigger. When enabled, True is returned only when a button’s state changes. If button_list is empty, will return True when no buttons are pressed.
Valid button values are ‘A’, ‘B’, ‘RThumb’, ‘X’, ‘Y’, ‘LThumb’, ‘LShoulder’, ‘Up’, ‘Down’, ‘Left’, ‘Right’, ‘Enter’, ‘Back’, ‘VolUp’, ‘VolDown’, ‘Home’, ‘RMask’ and ‘LMask’.
Returns: | |
---|---|
Return type: | bool |
Examples
# check if the ‘Enter’ button on the Oculus remote was released isPressed = getButtons([‘Enter’], ‘remote’, ‘falling’)
getConectedControllers
()¶Get a list of connected input devices (controllers) managed by the LibOVR runtime. Valid names are ‘xbox’, ‘remote’, ‘left_touch’, ‘right_touch’ and ‘touch’.
Returns: | List of connected controller names. |
---|---|
Return type: | list |
getHandTriggerValues
(controller='xbox', deadzone=False)¶Get the values of the hand triggers representing the amount they are being displaced.
Parameters: | |
---|---|
Returns: | Left and right index trigger values. |
Return type: |
getIndexTriggerValues
(controller='xbox', deadzone=False)¶Get the values of the index triggers representing the amount they are being displaced.
Parameters: | |
---|---|
Returns: | Left and right index trigger values. |
Return type: |
getThumbstickValues
(controller='xbox', deadzone=False)¶Get a list of tuples containing the displacement values (with deadzone) for each thumbstick on a specified controller.
Axis displacements are represented in each tuple by a floats ranging from -1.0 (full left/down) to 1.0 (full right/up). The SDK library pre-filters stick input to apply a dead-zone where 0.0 will be returned if the sticks return a displacement within -0.2746 to 0.2746. Index 0 of the returned tuple contains the X,Y displacement values of the left thumbstick, and the right thumbstick values at index 1.
Possible values for ‘controller’ are ‘xbox’ and ‘touch’; the only devices with thumbsticks the SDK manages.
Parameters: | |
---|---|
Returns: | Left and right, X and Y thumbstick values. |
Return type: |
getTouches
(touchNames, edgeTrigger='continuous')¶Returns True if any buttons are touched using sensors. This feature is used to estimate finger poses and can be used to read gestures. An example of a possible use case is a pointing task, where responses are only valid if the user’s index finger is extended away from the index trigger button.
Currently, this feature is only available with the Oculus Touch controllers.
Returns: | |
---|---|
Return type: | None |
headLocked
¶Enable/disable head locking.
isHmdMounted
¶Check if the HMD is mounted on the user’s head.
Returns: | True if the HMD is being worn, otherwise False. |
---|---|
Return type: | bool |
isHmdPresent
¶Check if the HMD is present.
Returns: | True if the HMD is present, otherwise False. |
---|---|
Return type: | bool |
isIndexPointing
(hand='right')¶Check if the user is doing a pointing gesture with the given hand, or if the index finger is not touching the controller. Only applicable when using Oculus Touch controllers.
Returns: | |
---|---|
Return type: | None |
isThumbUp
(hand='right')¶Check if the user’s thumb is pointing upwards with a given hand, or if not touching the controller. Only applicable when using Oculus Touch controllers.
Returns: | |
---|---|
Return type: | None |
isVisible
¶Check if the app has focus in the HMD and is visible to the viewer.
Returns: | True if app has focus and is visible in the HMD, otherwise False. |
---|---|
Return type: | bool |
manufacturer
¶Get the connected HMD’s manufacturer.
Returns: | UTF-8 encoded string containing the manufacturer name. |
---|---|
Return type: | str |
multiplyProjectionMatrixGL
()¶Multiply the current projection matrix obtained from the SDK using glMultMatrixf(). The matrix used depends on the current eye buffer set by ‘setBuffer()’.
Returns: | |
---|---|
Return type: | None |
multiplyViewMatrixGL
()¶Multiply the local eye pose transformation matrix obtained from the SDK using glMultMatrixf(). The matrix used depends on the current eye buffer set by ‘setBuffer()’.
Returns: | |
---|---|
Return type: | None |
overlayPresent
¶pollControllers
()¶Update all connected controller states. This should be called at least once per frame.
Returns: | |
---|---|
Return type: | None |
productName
¶Get the HMD’s product name.
Returns: | UTF-8 encoded string containing the product name. |
---|---|
Return type: | str |
projectionMatrix
¶Get the projection matrix for the current buffer.
raycastSphere
(originPose, targetPose, targetRadius=0.5, rayDirection=None, maxRange=None)¶Project an invisible ray of finite or infinite length from the originPose in rayDirection and check if it intersects with the targetPose bounding sphere.
Specifying maxRange as >0.0 casts a ray of finite length in world units. The distance between the target and ray origin position are checked prior to casting the ray; automatically failing if the ray can never reach the edge of the bounding sphere centered about targetPose. This avoids having to do the costly transformations required for picking.
This raycast implementation can only determine if contact is being made with the object’s bounding sphere, not where on the object the ray intersects. This method might not work for irregular or elongated objects since bounding spheres may not approximate those shapes well. In such cases, one may use multiple spheres at different locations and radii to pick the same object.
:param originPose ovrPosef
: Origin pose of the ray.
:param targetPose ovrPosef
or: Pose of the target.
:type targetPose ovrPosef
or: obj:ovrVector3f’
:param targetRadius :obj:`float: The radius of the target.
:param rayDirection ovrVector3f
: Vector indicating the direction for the ray. If None is specified,
then -Z is used.
Parameters: | maxRange – The maximum range of the ray. Ray testing will fail automatically if the target is out of range. The ray has infinite length if None is specified. |
---|---|
Returns: | True if the ray intersects anywhere on the bounding sphere, False in every other condition. |
Return type: | bool |
Examples
# raycast from the head pose to a target headPose = hmd.headPose targetPos = rift.math.ovrVector3f(0.0, 0.0, -5.0) # 5 meters front isLooking = hmd.raycast(headPose, targetPos)
# now with touch controller positions rightHandPose = hmd.getHandPose(1) # 1 = right hand fingerLength = 0.10 # 10 cm pointing = hmd.raycast(rightHandPose, targetPos, maxRange=fingerLength)
resolution
¶Get the HMD’s raster display size.
Returns: | Width and height in pixels. |
---|---|
Return type: | tuple (int, int) |
serialNumber
¶Get the connected HMD’s unique serial number. Use this to identify a particular unit if you own many.
Returns: | UTF-8 encoded string containing the devices serial number. |
---|---|
Return type: | str |
setBuffer
(buffer, clear=True)¶Set the active stereo draw buffer.
Warning! The window.Window.size property will return the buffer’s dimensions in pixels instead of the window’s when setBuffer is set to ‘left’ or ‘right’.
Parameters: |
|
---|---|
Returns: | |
Return type: |
setDefaultView
(clearDepth=True)¶Return to default projection. Call this before drawing PsychoPy’s 2D stimuli after a stereo projection change.
Note: This only has an effect if using Rift in legacy immediate mode OpenGL mode by setting ~Rift.legacy_opengl=True.
Parameters: | clearDepth (boolean) – Clear the depth buffer prior after configuring the view parameters. |
---|---|
Returns: | |
Return type: | None |
setHudMode
(mode='Off')¶setRiftView
(clearDepth=True)¶Set head-mounted display view. Gets the projection and view matrices from the HMD and applies them.
Note: This only has an effect if using Rift in legacy immediate mode OpenGL mode by setting ~Rift.legacy_opengl=True.
Parameters: | clearDepth (boolean) – Clear the depth buffer prior after configuring the view parameters. |
---|---|
Returns: | |
Return type: | None |
setSize
(value, log=True)¶setTrackinOrigin
(origin_type='floor', recenter=False)¶Set the tracking origin type. Can either be ‘floor’ or ‘eye’. The effect of changing types is immediate.
Parameters: |
|
---|---|
Returns: | |
Return type: |
shouldQuit
¶Check if the user requested the application should quit through the headset’s interface.
Returns: | True if user requested the application quit via some menu in the HMD, otherwise False. |
---|---|
Return type: | bool |
shouldRecenter
¶Check if the user requested the origin be recentered through the headset’s interface.
Returns: | True if user requested the application recenter itself to reposition the origin, else False. |
---|---|
Return type: | bool |
size
¶Size property to get the dimensions of the view buffer instead of the window. If there are no view buffers, always return the dims of the window.
trackingOriginType
¶Current tracking origin type.
viewMatrix
¶Get the view matrix for the current buffer.