XR Gaze Interactor - Quest Pro Support

Maybe a fairly straight-forward question, since I don’t have much experience here yet.
Switching from XRI 2.5 to 3.0.3 has been difficult for my projects requiring Eye Gaze capabilities
using Quest Pro.
The description of XR Gaze Interactor states, that additional providers are necessary to update certain components as specified in the documentation.
Could someone point me into the right direction, as where to find those additional components?
What am I missing?

Gaze support with Quest Pro in XRI has never been properly supported. We had an adapter sample, but it had many flaws and ended up removing it. The key issue is that it requires meta’s xr sdk to use and isn’t natively exposed via the input system, which is required for XRI to support it. We had previously created a custom input device to funnel the data, but this didn’t end up working properly on device, only in the editor.

When Meta supports eye gaze via a native openxr extension, we’ll be happy to revisit this. In the interim, XRI’s eye gaze support is supported with HoloLens 2 and PSVR2.

Moreover, given the architectural changes in XRI 3.0, we’d like to revisit eye gaze generally when that day comes.

2 Likes

Thanks for the clarification. We were unsure, since the documentation does not clearly state, that Gaze support is currently not supported.
Reverting back to 2.5 and using the Meta Eye Gaze Adapter will be our way to go in that case. It has worked well enough for our purposes.
Let’s hope for official meta support in the future.

Out of curiosity, what exactly are you using eye gaze support for with Quest Pro?

In theory it should be possible to adjust that adapter for use in 3.0, in fact it will be easier to integrate the pose data thanks to the new Input Reader architecture in 3.0, but it will likely take some work given that our new Near-Far Interactor may not work with every part of the gaze interactor workflow.

If 2.5 works well for you though, that’s great.

1 Like

We aim to integrate eye tracking into our Brain-Computer-Interface Workflow to create hybrid BCIs.
And since the Quest Pro has proven to work well in the past with our other systems, we wanted to continue to do so.
Other capabilities, like the Hand Gesture Detection, have been motivating us to upgrade to 3.0.
The Eye Gaze would only be used to get the current gaze vector as well as the object the user is currently looking at, so nothing out of the ordinary.
Do you really estimate, that adjusitng the adapter would work under 3.0 ?

Gaze support with Quest Pro in XRI has never been properly supported. We had an adapter sample, but it had many flaws and ended up removing it. The key issue is that it requires meta’s xr sdk to use and isn’t natively exposed via the input system, which is required for XRI to support it. We had previously created a custom input device to funnel the data, but this didn’t end up working properly on device, only in the editor.

Is this still the case in XRI 3.2?

The Khronos OpenXR site says that the Meta Quest Pro implements the XR_EXT_eye_gaze_interaction extension. Is that not sufficient?

The documentation says it was added in 3.2.1, but I am unsure it solves the Oculus integration issues XR Gaze Interactor | XR Interaction Toolkit | 3.3.0-pre.1

The original support was added in 2.3.0, which we removed due to all the reasons Eric stated, primarily the requirement of importing the OVR scripts and DLLs. Fast-forward to now, with the sample Permission Manager we added in 3.2.1, you can request eye tracking permissions that are required by the headset to use eye tracking.
Since the XR_EXT_eye_gaze_interaction extension is implemented in the Unity OpenXR package, you should be able to get it working without a ton of effort, but I do not have a Quest Pro handy to try this out, so the following things you will need to do to test this are:

  • Verify that you are using the correct Enabled Interaction Profiles in the OpenXR project settings (Project Settings > XR Plug-in Management > OpenXR > Android/Meta tab:

  • Verify that you have Input Actions wired to the correct bindings as outlined in the OpenXR manual. Here is an example from the XRI Starter Assets/XRI Default Input Actions:

  • Verify Active Input Handling is set to Input System Package (New) (Project Settings > Player > Other Settings > Configuration):

  • Also, as mentioned, you will want to request permissions. You can use the aforementioned Permission Manager script with a configuration that requests the EYE_TRACKING permission, per Meta documentation. Something like this:

Note that the On Permission Granted and On Permission Denied are pointing to the Gaze Interactor and Gaze Stabilized game objects. These are wired up to help with certain filtering and interaction, but if you are looking to just get the raw eye tracking position/rotation, you can look at how the Gaze Interactor is setup with the standard Tracked Pose Driver (Input System), which is pointing at the Input Actions that are bound to the OpenXR bindings for the Eye Gaze Interaction Profile.