03-24-2023 11:16 AM
Hi, I'm building an app that uses the user's gaze for interaction. The interface is a heads up display and is always static - it does not move when the head moves.
I use the Unity eye tracking API to get an eye pose and then call pose.ToHeadSpacePose(). However, this pose isn't stable when the head moves. The eye is stationary when it is looking at a static UI element. Then, when the head turns right, the eye pose appears to lag behind before eventually correcting. In Unity, the eye gaze position seems dependant on head tracking, which I do not want.
I experimented with the native OpenXR APIs, and it appears to do the right thing when calling xrGetEyeGazesFB_() with HeadSpace.
How can I get eye pose position in Unity that is accurate regardless of head movement?
03-28-2023 12:30 PM - edited 03-28-2023 12:31 PM
Using eye tracking takes special permissions (uses actual left or right eye ball) and is experimental I believe.
Sounds like canvas does not move with their head, so you can use a gaze pointer (center head tracking).
If you want to just have user point with their head, use OVRGazePointer.cs and GazeIcon together with OVRInputManager on the Event system object.