ALVR icon indicating copy to clipboard operation
ALVR copied to clipboard

Pico 4 Pro eye tracking position incorrect after playspace recenter or any change

Open dirtball-official opened this issue 9 months ago • 7 comments

Description

Any time I use either the headset controls or any number of methods and tools in SteamVR to recenter or alter the playspace in any way, my VRChat avatar's eyes get stuck looking hard to the right. Vertical movement seems to work but horizontal movement becomes incorrect. Inspecting OSC data confirms that the avatar is behaving correctly, acting on the data as received. The only way I can find to correct the issue is to exit the ALVR client and start it again, making sure not to alter the playspace.

I tried using the server & client built myself as well as the nightly from commit 6705f5a. It doesn't make any difference if I have FB eye tracking enabled alone, FB eye tracking & Pico face tracking both enabled, or just Pico face tracking enabled. The behavior is consistent.

I'm happy to build and test any potential fixes.

General Troubleshooting

  • [x] I carefully followed the instructions in the README and successfully completed the setup wizard
  • [x] I read the ALVR GitHub Wiki

Environment

Hardware

CPU: AMD 5800X3D GPU: NVIDIA 4070 Super GPU Driver Version: 472.60 Audio: Voicemeeter Potato

Installation

ALVR Version: commit 6705f5a SteamVR Version: 2.9.6

Install Type:

  • [x] Packaged (exe, deb, rpm, etc)
  • [ ] Portable (zip)
  • [x] Source

OS Name and Version: Windows 11 Pro 24H2

dirtball-official avatar Mar 06 '25 13:03 dirtball-official

Hmm, thanks for report. ALVR uses XR_EXT_eye_gaze_interaction for eye tracking so mentioned switches don't affect this. I think it could be a bug in Pico's runtime.

curoviyxru avatar Mar 06 '25 13:03 curoviyxru

Also what Pico headset and Pico OS do you have?

curoviyxru avatar Mar 06 '25 13:03 curoviyxru

I have a Pico 4 Pro running firmware 5.12.0.S. If it's any help, I've never seen the same behavior with Pico Connect. Also, I don't know if it's related, but recentering the headset overrides any modifications I've made to the playspace in SteamVR. Pico Connect does not do this, only rotating and shifting the playspace.

dirtball-official avatar Mar 06 '25 13:03 dirtball-official

It must be a runtime bug. This issue doesn't replicate when LOCAL reference space is used for both head and eye gaze tracking.

So there are three possible ways to fix it:

  • Make ALVR work with LOCAL reference space instead of STAGE (oof)
  • Use face tracking data for eye gaze estimation like PicoStreamingAssistantFTUDP does (that's why PICO Connect is working fine)
  • Try to implement eye tracking via Pico's private OpenXR extensions. (couldn't get it to work yet)

curoviyxru avatar Mar 20 '25 21:03 curoviyxru

If this bug happens consistently, we could try to subtract the head pose

zmerp avatar Mar 21 '25 01:03 zmerp

This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.

github-actions[bot] avatar May 21 '25 00:05 github-actions[bot]

I'm out of town and can't test at the moment, but as of a couple weeks ago the behavior was improved but still incorrect. When I return I'll check and describe in greater detail.

dirtball-official avatar May 24 '25 21:05 dirtball-official

As of the June 24, 2025 nightly build, I can confirm the following behavior:

Booting the headset and loading everything up without recentering or otherwise manipulating the play boundary, play area, chaperone, etc. shows the expected and correct behavior.

Once in-game (VRChat) and everything is working, long-pressing the home button on the controller to recenter causes the eye yaw angle to be offset.

When the eye rotation is incorrectly offset like this, recentering to the original yaw angle (before the initial recenter) corrects the eye rotation, however this can be tedious to get right.

Exiting the ALVR client and starting it again will correct the behavior until the user attempts to recenter.

dirtball-official avatar Jun 27 '25 20:06 dirtball-official

Just had the exact same issue on my quest pro. Whenever the recenter option is used in any way, the eyes get stuck looking at one point or just spazzing out a bit. When recentering to the exact position alvr has it's forward position set, the eye tracking looks just fine again. This has no impact on any other tracking provided, even blinking and precise eyelid control.

sheyning avatar Aug 15 '25 21:08 sheyning

Just had the exact same issue on my quest pro. whenever the recenter option is used in any way, the eyes get stuck looking at one point or just spazzing out a bit. When recentering to the exact position alvr has it's forward position set, the eye tracking looks just fine again.

For now, I've found that setting Headset -> Rotation recentering mode to "Disabled" is a good enough workaround.

dirtball-official avatar Aug 15 '25 21:08 dirtball-official

Technically yes though Haritora x wireless uses the Headset as an anchorpoint for calibration so that's still a bit whacky. I'll stick to VD for now even though that one is giving me random lags and crashes. Really like the stability of alvr though I shouldn't have updated, didn't got any of that on version 20.11.1 but oh well that was ancient. Thanks for the help though <3

sheyning avatar Aug 15 '25 21:08 sheyning

This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.

github-actions[bot] avatar Oct 15 '25 00:10 github-actions[bot]