Table of Contents

Center mode di AR Session

Center mode è un concetto fondamentale di Unity AR. Determina quale oggetto la session seleziona come punto di riferimento, o center object, per tutto l'AR tracking durante runtime, e quali oggetti nella session possono muoversi liberamente. Con il contenuto seguente, comprenderai i concetti di base di center mode e il suo impatto sul comportamento di movimento degli oggetti nella scene.

Prima di iniziare

  • Comprendere i concetti di base, la composizione e il workflow di session tramite Introduzione ad AR Session.
  • Comprendere il ruolo della camera nelle AR scenes tramite Camera, e come session controlla le proprietà della camera per garantire la corretta esperienza AR.
  • Comprendere i concetti di base, la composizione e il lifecycle di XR Origin tramite XR Origin.
  • Comprendere i concetti di base, gli states e il lifecycle di target tramite Target.

Center object e center mode

In una session possono essere eseguite contemporaneamente una o più funzioni AR diverse. Queste funzioni AR possono eseguire tracking di oggetti diversi e possono anche usare contemporaneamente motion tracking per tracciare posizione e orientamento del dispositivo stesso.

Per garantire che il comportamento di movimento degli oggetti nella scene sia conforme alle aspettative, session deve selezionare un punto di riferimento come centro di tutto l'AR tracking. La rappresentazione di questo punto di riferimento nella Unity scene è il center object (CenterObject). Center mode (CenterMode) è la regola che determina quale oggetto è questo center object durante il runtime della session.

Il centro di una session può essere uno dei seguenti oggetti:

  • Un target tracciato
  • XR Origin
  • Camera

Center mode determina quale oggetto session seleziona come center object e se questo oggetto può muoversi liberamente. Gli oggetti diversi da questo, inclusi camera, XR Origin e target non centrali, sono controllati da session e si muovono usando il center object come punto di riferimento.

In Unity, una session supporta le quattro modalità centro seguenti:

Nome Illustrazione Descrizione
FirstTarget

SpecificTarget
alt text Usa un target come centro, e questo target può muoversi liberamente. In particolare,
  • FirstTarget usa il primo target tracciato come centro.
  • SpecificTarget usa il target specificato come centro.
camera, XR Origin e altri target nella session sono tutti controllati dalla session e si muovono prendendo il target centrale come punto di riferimento.
SessionOrigin alt text Usa XR Origin come centro, e XR Origin può muoversi liberamente.
camera e target nella session sono controllati dalla session e si muovono prendendo il XR Origin centrale come punto di riferimento.
Camera alt text Usa camera come centro, e camera può muoversi liberamente.
XR Origin e target nella session sono controllati dalla session e si muovono prendendo la camera centrale come punto di riferimento.

Nelle illustrazioni sono presenti tre oggetti: la sfera blu rappresenta XR Origin, il cono blu rappresenta camera e l'immagine gialla rappresenta target. In modalità centro diverse, la session seleziona oggetti diversi come oggetto centrale. Le figure mostrano il sistema di coordinate locale dell'oggetto corrispondente.

Consiglio

Se hai esperienza con AR Foundation, potresti notare che in AR Foundation non esiste un concetto simile. In realtà, il comportamento di AR Foundation è coerente con la modalità centro SessionOrigin.

In una session, la relazione di movimento relativo tra target e camera è controllata dalla session corrente. La relazione di movimento relativo tra XR Origin e camera è controllata dalla session corrente o da un framework di terze parti, ad esempio AR Foundation. L'esistenza delle modalità centro garantisce che, in ambienti runtime diversi, la session possa controllare correttamente il comportamento di movimento degli oggetti nella scena.

Ad esempio, se AR Foundation o un SDK per headset basato su Unity XR controlla la relazione di movimento relativo tra XR Origin e camera, XR Origin, secondo il design del framework Unity XR, può essere spostato sotto il controllo della session, mentre camera no. In questo caso, la session limita la modalità centro a FirstTarget, SpecificTarget o SessionOrigin. Così, per la session il centro sarà XR Origin o un certo target, mentre per il framework Unity XR il centro resta XR Origin, e l'intero sistema può funzionare perfettamente.

Avvertenza

In Unity AR, qualsiasi oggetto che esiste nel sistema di coordinate mondo di Unity e il cui transform non è stato regolato in base al componente session potrebbe non essere visualizzato correttamente. Poiché la session regola posizione e orientamento degli altri oggetti nella scena in base a posizione e orientamento dell'oggetto centrale, se alcuni oggetti non sono controllati dalla session, la loro posizione e il loro orientamento possono non corrispondere ai valori calcolati dalla session, causando comportamenti imprevisti.

Ad esempio, se nel sistema di coordinate mondo viene posizionato un modello panda, la posizione e l'orientamento di questo modello panda potrebbero non avere alcuna corrispondenza con oggetti nel mondo reale, e potrebbe sembrare sospeso in aria o muoversi in modo casuale.

La pratica corretta è posizionare sempre il contenuto da visualizzare sotto un nodo target specifico, oppure sotto il nodo XR Origin se il contenuto deve seguire il movimento di XR Origin. In questo modo, posizione e orientamento del contenuto vengono regolati secondo il risultato calcolato dalla session, garantendo che il contenuto possa essere sovrapposto correttamente al mondo reale.

È possibile allineare manualmente il contenuto alla posizione e all'orientamento di un target o di XR Origin, ma l'operazione deve essere eseguita al momento corretto. Vedere scegliere una modalità centro appropriata.

Modalità centro valide

Non tutte le modalità centro sono valide in qualsiasi situazione. La session decide quali modalità centro sono valide in base all'ambiente runtime corrente e al frame source selezionato, in modo da poter controllare correttamente il comportamento di movimento degli oggetti nella scena. La proprietà ARSession.AvailableCenterMode può essere usata per ottenere l'elenco delle modalità centro valide della session corrente.

In base al frame source selezionato alla fine, le modalità centro valide di una session rientrano nei casi seguenti:

frame source camera controllata ha dati di movimento ha design origin modalità centro valide
  • CameraDeviceFrameSource
  • FramePlayer con un frame source usato durante la registrazione senza dati di movimento
  • ExternalImageStreamFrameSource
No -
  • FirstTarget
  • SpecificTarget
  • Camera
  • ARCoreFrameSource
  • AREngineFrameSource
  • ARKitFrameSource
  • InertialCameraDeviceFrameSource
  • MotionTrackerFrameSource
  • ThreeDofCameraDeviceFrameSource
  • FramePlayer con un frame source usato durante la registrazione con dati di movimento
  • FirstTarget
  • SpecificTarget
  • SessionOrigin
  • Camera (*)
* Valida solo quando camera non è
un nodo figlio di XR Origin
  • ARCoreARFoundationFrameSource
  • ARKitARFoundationFrameSource
  • VisionOSARKitFrameSource
  • XREALFrameSource
  • ExternalDeviceFrameSource dove OriginType is XROrigin or Custom, and Origin può essere controllato liberamente
    • PicoFrameSource
    • RokidFrameSource senza UXR
No
  • FirstTarget
  • SpecificTarget
  • SessionOrigin
No
  • SessionOrigin
  • ExternalDeviceFrameSource in cui OriginType è None
    • RokidFrameSource con UXR
No No
  • SessionOrigin

Tranne quando si usa FramePlayer, le modalità centro valide vengono determinate quando la session viene assemblata. Quando si usa FramePlayer, le modalità centro valide vengono determinate dinamicamente durante l'esecuzione della session, a ogni output di dati frame, in base alla presenza di informazioni di movimento nei dati.

Caratteristiche dei diversi center modes

Successivamente useremo una serie di video di esempio per mostrare il comportamento di movimento degli oggetti con diversi center modes.

Il contenuto del video è il seguente:

Nel mondo reale ci sono due tipi diversi di trackable objects:

  • Uno è un albero di Natale, che è fermo. È tracciato tramite la funzione sparse spatial map.
  • L'altro è un foglio di carta A4, su cui è stata stampata in anticipo un'immagine. Può muoversi. È tracciato tramite la funzione image tracking.

Durante la registrazione del video, l'observer, il telefono, parte dal retro destro dell'albero di Natale e si muove intorno ad esso. La carta A4 oscilla a sinistra e a destra davanti all'observer.

Per facilitare l'osservazione, abbiamo aggiunto alcuni markers a diversi oggetti nella scene.

  • Albero di Natale: quando è in stato tracking, una nuvola di punti azzurro brillante viene sovrapposta nello spazio che occupa. Questi markers scompaiono quando il tracking viene perso.
  • Carta A4: quando è in stato tracking, un panda viene sovrapposto sopra di essa. La vista Game mostra inoltre un'immagine esattamente uguale al contenuto e alle dimensioni della carta A4. Questi markers scompaiono quando il tracking viene perso.
  • XR Origin: nella sua posizione è collocata una sfera blu
  • Camera: nella sua posizione è collocato un cono blu, il cui asse principale è coerente con la direzione di vista della camera.

Questi video sono registrati in modalità Play del Unity editor usando simulated runtime data. A sinistra del video c'è la vista Scene, a destra la vista Game. Il contenuto della vista Game è lo stesso che l'utente vede sul telefono nel mondo reale.

Center modes FirstTarget e SpecificTarget

Le modalita center FirstTarget e SpecificTarget usano un certo target come oggetto centrale. In queste due modalita, a eccezione del target centrale, la camera, XR Origin e gli altri oggetti target nella session sono controllati dalla session e si muovono prendendo il target centrale come punto di riferimento.

Alcuni targets possono muoversi nel mondo reale, ad esempio il foglio A4 nel video.

Nel video sopra, l'oggetto centrale e il foglio A4 tracciato tramite image tracking. Si puo vedere che, poiche non ci sono operazioni esterne, il foglio A4 (panda) e fermo, mentre camera (cono blu), XR Origin (sfera blu) e albero di Natale (point cloud azzurro brillante) si muovono.

Alcuni targets sono fermi nel mondo reale, ad esempio l'albero di Natale nel video.

Nel video sopra, l'oggetto centrale e l'albero di Natale tracciato tramite sparse spatial map. Si puo vedere che, poiche non ci sono operazioni esterne, l'albero di Natale (point cloud azzurro brillante) e fermo, mentre camera (cono blu) e foglio A4 (panda) si muovono. Anche XR Origin (sfera blu) non si muove, ma questo perche e fermo rispetto all'albero di Natale.

In queste due modalita, il target centrale usato come punto di riferimento puo muoversi liberamente. In questo caso, camera, XR Origin e gli altri target nella session si muoveranno insieme a esso, e il loro transform non puo essere controllato dall'esterno.

Nel video sopra, l'oggetto centrale e il foglio A4 tracciato tramite image tracking. Si puo vedere che, poiche abbiamo spostato manualmente il foglio A4 (panda), camera (cono blu), XR Origin (sfera blu) e albero di Natale (point cloud azzurro brillante) si sono mossi insieme. Da notare che il contenuto mostrato nella vista Game non cambia in quel momento, perche posizione e orientamento della camera rispetto al foglio A4 e agli altri oggetti non cambiano.

La differenza tra le modalita FirstTarget e SpecificTarget e che durante runtime il target centrale puo cambiare, ma quando cambia il metodo di scelta del centro e diverso. Per spiegare questo, dobbiamo considerare il processo di tracking riuscito e perdita del tracking.

Quando l'oggetto centrale nella session cambia, ARSession.CenterObject riflette sempre l'oggetto centrale corrente, ma ARSession.CenterMode non cambia.

Cambiamenti del center in center mode FirstTarget

In modalità centro FirstTarget, la session usa sempre il primo target tracciato come centro. Se il tracking di questo target viene perso, la session seleziona di nuovo il centro. Quando la session sta tracciando o traccia nuovamente un altro target, quell'altro target viene selezionato come nuovo oggetto centrale.

La riselezione del centro avviene nei casi seguenti:

  • Nel frame corrente nessun target è in stato di tracking
    In questo momento, se la modalità SessionOrigin è valida, la session passa alla modalità SessionOrigin e seleziona XR Origin come oggetto centrale; in caso contrario la session passa alla modalità Camera e seleziona camera come oggetto centrale.

  • Nel frame corrente c'è un target in stato di tracking, e nel frame precedente nessun target era in stato di tracking
    In questo momento, la session seleziona uno degli oggetti target tracciati come oggetto centrale.

  • Nel frame corrente c'è un target in stato di tracking, e il target centrale del frame precedente ha perso il tracking nel frame corrente
    In questo momento, la session seleziona uno degli oggetti target tracciati come nuovo oggetto centrale.

Nel video sopra, l'oggetto centrale iniziale è il foglio A4 tracciato tramite image tracking. Si può vedere che, quando il tracking del foglio A4 (panda) viene perso, la session seleziona di nuovo l'oggetto centrale. In questo momento, l'albero di Natale (point cloud azzurro brillante) diventa il nuovo oggetto centrale. Alla fine del video, il foglio A4 viene tracciato di nuovo, ma non diventa l'oggetto centrale perché l'albero di Natale è già l'oggetto centrale.

Cambiamenti del centro in modalità centro SpecificTarget

In modalità centro SpecificTarget, la session usa sempre il target specificato come centro. Se il tracking di questo target viene perso, la session seleziona di nuovo il centro, ma non seleziona altri target come nuovo oggetto centrale. Quando la session traccia di nuovo questo target specificato, esso viene comunque selezionato come oggetto centrale.

La riselezione del centro avviene nei casi seguenti:

  • Il target specificato non è tracciato nel frame corrente
    In questo momento, se la modalità SessionOrigin è valida, la session passa alla modalità SessionOrigin e seleziona XR Origin come oggetto centrale; in caso contrario la session passa alla modalità Camera e seleziona camera come oggetto centrale.

  • Il target specificato è in stato di tracking nel frame corrente, e il target specificato non era tracciato nel frame precedente
    In questo momento, la session seleziona il target specificato come oggetto centrale.

Nel video sopra, l'oggetto centrale è specificato come il foglio A4 tracciato tramite image tracking. Si può vedere che, quando il tracking del foglio A4 (panda) viene perso, la session non seleziona altri target come nuovo oggetto centrale. In questo momento, l'albero di Natale (point cloud azzurro brillante) non diventa l'oggetto centrale. Alla fine del video, il foglio A4 viene tracciato di nuovo e torna a essere l'oggetto centrale.

Modalità centro SessionOrigin

La modalità centro SessionOrigin usa XR Origin come oggetto centrale. In questa modalità, camera e target nella session sono controllati dalla session e si muovono prendendo il XR Origin centrale come punto di riferimento.

Nel video sopra, l'oggetto centrale è XR Origin. Si può vedere che, poiché non ci sono operazioni esterne, XR Origin (sfera blu) rimane fermo, mentre camera (cono blu) e foglio A4 (panda) si muovono. Anche l'albero di Natale (point cloud azzurro brillante) non si muove, ma questo perché è fermo rispetto a XR Origin.

In questa modalità, il XR Origin centrale usato come punto di riferimento può muoversi liberamente. In questo momento, camera e target nella session si muovono insieme a esso, e il loro transform non può essere controllato esternamente.

Nel video sopra, l'oggetto centrale è XR Origin. Si può vedere che, poiché abbiamo spostato manualmente XR Origin (sfera blu), camera (cono blu), l'albero di Natale (point cloud azzurro brillante) e il foglio A4 (panda) si sono mossi insieme a esso. Va notato che il contenuto visualizzato nella vista Game non cambia in questo momento, perché la posizione e l'orientamento della camera rispetto a XR Origin e agli altri oggetti non cambiano.

In modalità SessionOrigin, XR Origin deve essere valido, quindi in questa modalità l'oggetto centrale non cambia.

Modalità centro Camera

La modalità centro camera usa camera come oggetto centrale. In questa modalità, XR Origin e target nella session sono controllati dalla session e si muovono prendendo la camera centrale come punto di riferimento.

Nel video sopra, l'oggetto centrale è la camera. Si può vedere che, poiché non ci sono operazioni esterne, la camera (cono blu) rimane ferma, mentre XR Origin (sfera blu), l'albero di Natale (point cloud azzurro brillante) e il foglio A4 (panda) si muovono.

In questa modalità, la camera centrale usata come punto di riferimento può muoversi liberamente. In questo momento, XR Origin e target nella session si muovono insieme a essa, e il loro transform non può essere controllato esternamente.

Nel video sopra, l'oggetto centrale è la camera. Si può vedere che, poiché abbiamo spostato manualmente la camera (cono blu), XR Origin (sfera blu), l'albero di Natale (point cloud azzurro brillante) e il foglio A4 (panda) si sono mossi insieme a essa. Va notato che il contenuto visualizzato nella vista Game non cambia in questo momento, perché la posizione e l'orientamento della camera rispetto a XR Origin e agli altri oggetti non cambiano.

In modalità Camera, camera deve essere valida, quindi in questa modalità l'oggetto centrale non cambia.

Passi successivi

Argomenti correlati