|
3 | 3 |
|
4 | 4 | [PsychOpenXR](PsychOpenXR) - A high level driver for [OpenXR](OpenXR) supported XR hardware. |
5 | 5 |
|
6 | | -Copyright (c) 2022-2023 Mario Kleiner. Licensed to you under the MIT license. |
| 6 | +Copyright (c) 2022-2025 Mario Kleiner. Licensed to you under the MIT license. |
7 | 7 | Our underlying [PsychOpenXRCore](PsychOpenXRCore) mex driver builds against the Khronos [OpenXR](OpenXR) SDK public |
8 | 8 | headers, and links against the [OpenXR](OpenXR) open-source dynamic loader, to implement the |
9 | 9 | interface to a system-installed [OpenXR](OpenXR) runtime. These components are dual-licensed by |
@@ -326,8 +326,7 @@ runtime. The info struct returned by info = [PsychVRHMD](PsychVRHMD)('GetInfo'); |
326 | 326 | about hand tracking capabilities as a bitmask in info.articulatedHandTrackingSupported: |
327 | 327 | A value of +1 means that basic [OpenXR](OpenXR) hand tracking of finger and hand joint poses, |
328 | 328 | typically for both hands of a user, is supported. A value of zero means lack of |
329 | | -any support. NOTE: Current Psychtoolbox releases do not yet support hand tracking, |
330 | | -this help text is preparation for future use and subject to incompatible changes! |
| 329 | +any support. |
331 | 330 |
|
332 | 331 | If hand tracking is requested via the keyword, and supported, then the user |
333 | 332 | script can request return of hand tracking sample data by calling the |
@@ -380,25 +379,47 @@ handle = Driver internal handle for the specific device. |
380 | 379 | driver = Function handle to the actual driver for the device, e.g., @[PsychOpenXR](PsychOpenXR). |
381 | 380 | type = Defines the type/vendor of the device, e.g., 'OpenXR'. |
382 | 381 | modelName = Name string with the name of the model of the device, e.g., 'Rift DK2'. |
| 382 | + |
383 | 383 | separateEyePosesSupported = 1 if use of [PsychOpenXR](PsychOpenXR)('GetEyePose') will improve |
384 | 384 | the quality of the VR experience, 0 if no improvement |
385 | 385 | is to be expected, so 'GetEyePose' can be avoided |
386 | 386 | to save processing time without a loss of quality. |
387 | 387 | This \*always\* returns 0 on this [PsychOpenXR](PsychOpenXR) driver. |
388 | 388 |
|
389 | | -eyeTrackingSupported = Info about eye gaze tracking capabilities. A value |
390 | | -of +1 means at least one gaze vector is reported. A value of +2 means |
391 | | -reporting of binocular per-eye tracking data is supported. A value of |
392 | | -+1024 means that HTC's proprietary [SRAnipal](SRAnipal) eyetracking is available for |
393 | | -more extensive gaze data reporting. |
394 | 389 |
|
395 | | -articulatedHandTrackingSupported = Info about hand tracking capabilities. A |
396 | | -value of +1 means that basic articulated hand tracking is supported, usually |
397 | | -for both hands. Zero means no support for articulated hand tracking. The hand |
398 | | -tracking methods could be based on cameras and computer-vision markerless optical |
399 | | -tracking, or on marker based tracking, or it could be, e.g., with some sensor |
400 | | -glove input device, or with any other suitable future modality supported by your |
401 | | -[OpenXR](OpenXR) runtime. |
| 390 | +[VRControllersSupported](VRControllersSupported) = 1 if use of [PsychVRHMD](PsychVRHMD)('GetInputState') will provide input |
| 391 | + from actual dedicated VR controllers. Value is 0 if |
| 392 | + controllers are only emulated to some limited degree, |
| 393 | + e.g., by abusing a regular keyboard as a button controller, |
| 394 | + ie. mapping keyboard keys to OVR.Button\_XXX buttons. |
| 395 | + |
| 396 | +handTrackingSupported = 1 if [PsychVRHMD](PsychVRHMD)('PrepareRender') with reqmask +2 will provide |
| 397 | + valid tracked hand controller info, 0 if this is not supported |
| 398 | + and will just report fake values. A driver may report 1 here but |
| 399 | + still don't provide meaningful info at runtime, e.g., if required |
| 400 | + tracking hardware is missing or gets disconnected. The flag |
| 401 | + just aids extra performance optimizations in your code. |
| 402 | + |
| 403 | +hapticFeedbackSupported = 1 if basic haptic feedback is supported in principle on some controllers. |
| 404 | + 0 otherwise. A flag of zero means no haptic feedback support, but |
| 405 | + a flag of 1 may still mean no actual feedback, e.g., if suitable |
| 406 | + hardware is not configured and present. Flags higher than 1 can |
| 407 | + signal presence of more advanced haptic feedback, so you should |
| 408 | + test for a setting == 1 to know if [PsychVRHMD](PsychVRHMD)('HapticPulse') works |
| 409 | + in principle, which is considered basic feedback ability. |
| 410 | + |
| 411 | +eyeTrackingSupported = Info about eye gaze tracking capabilities. A value of +1 means at least one |
| 412 | + gaze vector is reported. A value of +2 means reporting of binocular per-eye |
| 413 | + tracking data is supported. A value of +1024 means that HTC's proprietary |
| 414 | + [SRAnipal](SRAnipal) eyetracking is available for more extensive gaze data reporting. |
| 415 | + |
| 416 | +articulatedHandTrackingSupported = Info about hand tracking capabilities. A value of +1 means that |
| 417 | + basic articulated hand tracking is supported, usually for both |
| 418 | + hands. Zero means no support for articulated hand tracking. The |
| 419 | + hand tracking methods could be based on cameras and computer vision |
| 420 | + markerless optical tracking, or on marker based tracking, or it |
| 421 | + could be, e.g., with some sensor glove input device, or with any |
| 422 | + other suitable future modality supported by your [OpenXR](OpenXR) runtime. |
402 | 423 |
|
403 | 424 |
|
404 | 425 | The returned struct may contain more information, but the fields mentioned |
@@ -792,8 +813,6 @@ VR session status: |
792 | 813 | +8 = Request return of articulated hand tracking information on suitable [OpenXR](OpenXR) |
793 | 814 | systems. |
794 | 815 |
|
795 | | - NOTE: This feature is NOT YET IMPLEMENTED in current Psychtoolbox releases! |
796 | | - |
797 | 816 | Returned information may represent the latest available measured hand and |
798 | 817 | finger configuration data, or it may be predicted configuration information |
799 | 818 | for the specified 'targetTime', computed via interpolation or extrapolation |
|
0 commit comments