Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Quest WebXR: tracked-controls reports false controller disconnects when a Touch source moves to trackedSources

Aperta
#5,856 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

@dajiaohuang ci sta già lavorando.

Dal 22/10/2026.

  • #5862 di @dajiaohuang — aperta

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
65/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
javascript, threejs
Ambito
ar-vr-xr, web-dev

Direzione di ricerca

The issue is in src/systems/tracked-controls.js, specifically the onInputSourcesChange function. Start by reading the WebXR API documentation on inputSources and trackedSources. Examine how the system currently builds its controller list and where it listens for changes. 'Done' means tracked-controls correctly accounts for sources in both collections, preventing false disconnects during migration.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Description

On Meta Quest 3 in Meta Quest Browser, during an immersive WebXR session requesting hand-tracking and tracked-sources, a Touch controller can move from XRSession.inputSources to XRSession.trackedSources while remaining physically present and continuing to provide valid raw pose and gamepad data. A-Frame then drops it from the tracked-controls controller list. The controller component emits controllerdisconnected, and the model/pose freezes until the source returns to inputSources.

Current A-Frame master still has this lifecycle gap: tracked-controls.js, onInputSourcesChange listens only to inputsourceschange and assigns this.controllers = xrSession.inputSources (line 43).

Steps to reproduce

  1. Run an immersive A-Frame scene on a Meta Quest 3 in Meta Quest Browser, requesting hand-tracking and tracked-sources.
  2. Attach meta-touch-controls or tracked-controls for a Touch controller hand.
  3. Switch between hand and controller tracking until the runtime moves the controller representation from inputSources to trackedSources.
  4. Observe controllerdisconnected and a frozen A-Frame controller model while raw WebXR still reports a moving pose and gamepad. Observe reconnection when the controller returns to inputSources.

Expected behavior

A logical Touch controller should not disconnect solely because the runtime reclassifies its source between inputSources and trackedSources. When trackedSources is available, tracked-controls should account for both collections for presence, preferring an eligible inputSources candidate when both collections contain candidates. Hand-only or hybrid entries should not become controller button/ray authority unless they provide the expected controller capabilities.

Actual behavior

During migration, tracked-controls' list no longer contains the controller, so controller components emit controllerdisconnected and the model freezes. Raw WebXR instrumentation continued to receive pose/gamepad updates during the same interval. Representative observed sequence: source changed from in to tr, A-Frame disconnected, a raw sample showed about 36 mm of movement with a gamepad present and source location tr, then the source changed from tr to in. A later occurrence showed about 72 mm of raw movement during the apparent disconnect.

Environment

  • Meta Quest 3; Meta Quest Browser (version not captured in the supplied diagnostics)
  • Immersive WebXR; hand-tracking and tracked-sources
  • A-Frame 1.5.0 in the application where first diagnosed
  • Current master inspected 2026-09-23; the cited system remains inputSources-only

Related issue

This is distinct from #5584, which describes a controller not appearing when oculus-touch-controls and hand-tracking-controls are combined. That closed issue does not describe a live source migration followed by a false disconnect while raw tracking remains active.

Lingua principale
JavaScript
Stelle
17.7k
Fork
4.4k
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di aframevr/aframe

Tutte le issue di aframevr/aframe

Issue simili

Altre issue su JavaScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.