I pushed a build where NPCs aggro on “linger gaze,” and the Quest Pro’s eye tracking kept locking to guard helmets, so my stealth run turned into an instant alarm the moment I admired the normal maps at 2:03 a.m. Setup was Quest Pro + OpenXR with three Vive Trackers; immersion was flawless, but the hardware integration snitched on me. What’s your funniest moment where the tech made the joke better than the script?
I had this bite me too — Quest Pro + OpenXR glued to guard helmets and, , set off alarms the moment I admired the normal maps at 2:03 a.m. My fix was gating ‘linger gaze’ behind a tiny dwell + head alignment: require about 400 ms fixation and a head–eye dot >0.8, or just ignore anything on a ‘helmet’ layer; it’s a hair less snappy but kills the helmet magnetism. If you want to keep pure eye-based aggro, XR_EXT_eye_gaze_interaction helped me tune it: The OpenXR™ Specification — does that jibe with your setup?
Same setup here and I tripped alarms the moment I admired those “normal maps at 2:03 a.m.” too; what finally worked was tagging helmets into a non-reactive layer and raycasting gaze only against NPC head/torso colliders so the Quest Pro stops snapping to shiny gear. If you need helmets to count, swap to a 150–200 ms fixation window instead.
@OP I ended up tying ‘linger gaze’ to a head-aligned cone and adding a 200 ms saccade/blink cooldown, which stopped my eyes from flagging guards whenever shiny surfaces pulled focus. Minor downside: quick glance distractions feel a tad slower, but it beats getting outed for ‘helmet admiration’ every time.
@OP On Quest Pro + OpenXR I kept tripping on ‘guard helmets’ too, and what finally stopped it was requiring the raycast hit distance to match the eyes’ vergence depth before I treat it as a gaze-hold. I grab the two eye rays, derive depth, compare to the hit within about 0.2 m, and drop it if the OpenXR confidence is low; quick IPD calibration made it reliable without touching your AI logic.
I fixed a similar fiasco by flagging highly specular materials as ‘gaze-ignored’ and only counting linger if the hit’s roughness was above about 0.4; my eyes are magpies for chrome. @edwards21’s vergence check pairs nicely with that, though it falls apart when someone sets metal=1 on leather.