Centro di tracking del movimento AR in Unity - XR Origin
XR Origin è il concetto centrale del tracking motion in Unity. Nelle applicazioni AR moderne, il tracking motion sta diventando gradualmente una funzione indispensabile. Grazie al tracking motion, l'applicazione può conoscere la posizione e l'orientamento dell'utente nel mondo reale senza ricorrere ad altri oggetti di riconoscimento, offrendo così un'esperienza AR immersiva. Nei paragrafi seguenti comprenderete il concetto di base di XR Origin, la sua composizione e il suo ciclo di vita, oltre ai casi in cui va usato.
Prima di iniziare
- Comprendere il concetto di base della session attraverso introduzione a ARSession.
Che cos'è XR Origin
Quando il tracking motion viene inizializzato, viene scelto un punto di riferimento come origin del tracking. Questo punto di riferimento è in genere la posizione del dispositivo quando l'utente avvia l'applicazione o quando si avvia il AR service del sistema. Nella scene Unity la rappresentazione di questo punto è XR Origin. Nella maggior parte dei casi, la posizione iniziale di XR Origin nella scene è anche la posizione iniziale predefinita della camera.
Questo video mostra una scene AR semplice in cui è attivo solo il tracking motion. A sinistra c'è la vista
Hierarchy, al centro la vistaScenee a destra la vistaGame. Il video è stato registrato nell'Unity editor in modalitàPlayusando dati di simulation run. Il contenuto della vistaGameè lo stesso che l'utente vede nel mondo reale sul telefono.Si può vedere che in questo video XR Origin (la sfera blu) rimane fisso nella scene, mentre la camera che rappresenta l'utente (icona camera) si muove in base agli spostamenti dell'utente nel mondo reale. I coni bianchi mostrano la traiettoria passata della posizione e dell'orientamento della camera per comprendere meglio il suo movimento. Questi coni bianchi vengono creati sotto il node di XR Origin, che è anche la struttura tipica degli oggetti in scene di questo tipo.
Nel sistema di tracking motion di Unity, la camera di solito si muove seguendo XR Origin. Anche se la camera non è sempre un child node di XR Origin, AR Session calcola la posizione della camera in base alla posizione di XR Origin, così che il contenuto visto dall'utente resti coerente con il mondo reale.
Questo video mostra la stessa scene, ma questa volta XR Origin (la sfera blu) viene spostato durante il runtime. Si può vedere che, dopo lo spostamento di XR Origin, la camera si muove seguendo XR Origin, mentre il contenuto della vista
Gamenon cambia.
In una scene AR reale, questa relazione di movimento è molto più complessa.
Comportamento di XR Origin nei diversi center mode
In Unity, tutti i punti di riferimento centrali del tracking AR vengono chiamati session center, e la regola che determina questo centro durante la session si chiama center mode. Nei diversi center mode, il comportamento di XR Origin cambia:
Nel center mode SessionOrigin, XR Origin può essere spostato liberamente.
Di solito il modo SessionOrigin viene usato nelle scene in cui è attivo solo il tracking motion. Quando sono attive anche altre funzioni, di solito questo modo non viene usato.
Tuttavia, quando si usa un headset, se il vendor non implementa correttamente il reference point del tracking motion in Unity, allora bisogna usare Unity world center per forzare il modo SessionOrigin. In questo caso il root content deve muoversi seguendo la AR function, cosa che può influenzare l'effetto del contenuto, ma finché il vendor di terze parti non effettua modifiche non c'è altra soluzione.
Negli altri center mode, per esempio FirstTarget, XR Origin non può essere spostato liberamente.
Di solito il modo FirstTarget viene usato in scene senza tracking motion oppure in scene dove altre funzioni AR lavorano insieme al tracking motion.
In questo modo, la posizione di XR Origin è determinata dalla AR function, quindi XR Origin non deve essere spostato liberamente.
Per i dettagli su center mode e sul movimento degli oggetti nella scene, vedere center mode.
Forma e composizione di XR Origin
EasyAR può usare due forme diverse di XR Origin:
- XR Origin fornito da EasyAR
- XR Origin fornito da Unity XR framework
XR Origin (EasyAR)
La struttura tipica di XR Origin è la seguente:

Il root node di XR Origin è un GameObject vuoto e può avere uno o più child node XR Origin Child. XR Origin Child contiene un componente XROriginChildController, usato come proxy della logica di controllo di XR Origin.
Durante il runtime, se la struttura di XR Origin nella scene non è corretta, XR Origin e un XR Origin Child verranno creati automaticamente. Durante l'esecuzione, XR Origin Child sarà vincolato alla stessa posizione e orientamento di XR Origin.
Gli oggetti generati dalla session, come la point cloud dello sparse spatial mapping o la mesh del dense spatial mapping, verranno creati sotto il node XR Origin Child.
Questo video mostra l'effetto dell'esecuzione di dense spatial mapping insieme al tracking motion nella stessa scene. Si può vedere che la mesh generata viene creata sotto il node XR Origin Child.
Nota: per facilitare la comprensione, nel video la generazione della depth map è disattivata, quindi il contenuto della vista
Scenenel video è diverso dal runtime reale. L'effetto visibile nella vistaGameè lo stesso che si ha con la trasparenza della mesh disattivata.
[Opzionale] XR Origin (Unity XR)
Se necessario, potete usare il componente XR Origin fornito da Unity XR framework.
Quando si usa XR Origin di Unity XR framework, la struttura tipica è la seguente:

In una scene headset, la struttura tipica è la seguente:

Il root node di XR Origin è un GameObject creato e mantenuto da Unity XR framework, e può avere uno o più child node XR Origin Child. XR Origin Child contiene un componente XROriginChildController, usato come proxy della logica di controllo di XR Origin.
Durante il runtime, se la struttura di XR Origin Child nella scene non è corretta, XR Origin Child verrà creato automaticamente. Durante l'esecuzione, XR Origin Child sarà vincolato alla stessa posizione e orientamento di XR Origin.
XR Origin fornito da Unity XR framework supporta soprattutto due situazioni:
- Avete già usato AR Foundation nel project e volete farlo lavorare insieme a EasyAR oppure passare da uno all'altro in base al supporto del device.
- L'SDK headset che usate impiega il componente XR Origin fornito da Unity XR framework.
Nota
Quando il pacchetto principale di Unity XR com.unity.xr.core-utils non è ancora stato importato nel project, se la camera nella scene si trova nella stessa gerarchia di XR Origin fornito da Unity XR framework (Camera e un node padre chiamato Camera Offset), la session assumerà che quella struttura sia stata creata da Unity XR framework e la userà. Questo viene fatto per offrire la massima compatibilità della scene, cioè una scene creata con AR Foundation continuerà a funzionare anche se AR Foundation non è importato nel project, mentre il resto delle funzioni AR rimane normale. A parte le funzioni che può fornire solo AR Foundation, questo non influisce nemmeno sulla funzionalità AR complessiva né sulla compatibilità dei device.
La maggior parte delle scene di esempio EasyAR usa questo metodo per continuare a funzionare senza AR Foundation e allo stesso tempo mostrare la capacità di cooperazione con AR Foundation quando esso è presente.
Nella definizione di AR Foundation, il suo XR Origin è il centro del tracking spaziale nella XR scene. Tuttavia, va notato che nel concetto di AR Foundation il tracking motion è considerato una funzione obbligatoria, e il tracking descritto nella XR scene è tracking motion.
Nel sistema EasyAR, il tracking motion è una funzione opzionale, quindi anche XR Origin è opzionale. XR Origin viene creato e usato solo quando tracking motion è attivato.
Ciclo di vita di XR Origin
Il ciclo di vita di XR Origin dipende dalla session. Quando la session si avvia, XR Origin verrà selezionato o creato se la struttura di XR Origin nella scene non è corretta. Quando la session si interrompe, XR Origin resterà al suo posto finché non verrà usato dalla session successiva o rimosso manualmente.
Passi successivi
Creazione
- Provate a creare XR Origin nella scene
Controllo del runtime
- Imparate la strategia di controllo Active per XR Origin