Table of Contents

Scegliere il centro appropriato

Scegliere il centro giusto è fondamentale per la creazione dei contenuti. In questo articolo vedrai come ottenere e modificare il centro, e troverai consigli per scegliere il centro più adatto.

Prima di iniziare

Ottenere i centri disponibili

Quando la session è in esecuzione, solo i centri disponibili per quella session vengono mostrati nel menu a discesa Center del pannello Inspector. Se la session non è avviata, vengono mostrati tutti i centri.

alt text

Questa immagine mostra i centri disponibili per una session che usa CameraDeviceFrameSource nell'editor.

Negli script, dopo che la session è stata assemblata correttamente, puoi ottenere l'elenco dei centri disponibili tramite la proprietà ARSession.AvailableCenterMode.

Per esempio, il codice seguente mostra come verificare se un centro è disponibile nella session corrente:

if (Session.AvailableCenterMode.Contains(mode))
{
    // mode è disponibile nella session corrente
}

Modificare il centro

Apri il pannello Inspector e seleziona il centro desiderato nel menu a discesa Center.

alt text

Negli script, puoi modificare il centro tramite la proprietà ARSession.CenterMode.

Per esempio, il codice seguente mostra come scorrere ciclicamente tra i centri disponibili:

while (true)
{
    Session.CenterMode = (ARSession.ARCenterMode)(((int)Session.CenterMode + 1) % Enum.GetValues(typeof(ARSession.ARCenterMode)).Length);
    if (Session.AvailableCenterMode.Contains(Session.CenterMode)) { break; }
}

Ad ogni aggiornamento della session, viene verificato se il centro corrente è valido. Se lo è, la session prova subito a usare il nuovo centro.

Nel video sopra, la session usa inizialmente il centro FirstTarget, con l'albero di Natale come oggetto centrale (point cloud azzurro chiaro). Poi il centro viene cambiato manualmente in Camera, e l'oggetto centrale diventa la fotocamera (cono blu). Per i dettagli, consulta Modalità centro di AR Session.

Se il centro modificato non è valido nella session corrente, la proprietà CenterMode viene automaticamente impostata sul primo centro disponibile (di solito FirstTarget o SessionOrigin) e viene scritto un avviso nel log:

Center mode {Value} is unavailable in this session, reset to {NewValue}.

Come scegliere il centro

L'allineamento con gli oggetti del mondo reale è una necessità centrale nella creazione AR, e il centro determina quale oggetto viene usato come riferimento per calcolare posizione e orientamento degli altri oggetti della scena. Scegliere il centro giusto è quindi fondamentale.

Consigli generali

In molti casi, usare FirstTarget o SpecificTarget con target come centro è più comodo per la creazione dei contenuti. In questo modo, il punto di riferimento dei contenuti sotto target rimane stabile e non viene influenzato inutilmente dal movimento di XR Origin o camera (per esempio nel calcolo del sistema fisico). Tuttavia non è una regola assoluta:

  • Se non sai quale scegliere, usa il valore predefinito, cioè il centro FirstTarget.
    Poiché la maggior parte delle funzioni AR ha errori e corregge continuamente questi errori durante l'esecuzione, oggetti che sembrano fermi nel mondo reale (per esempio target in una sparse spatial map e XR Origin nel motion tracking) possono in realtà muoversi in modo relativo nello spazio virtuale. In questo caso, usare target come centro è più adatto alle esigenze della creazione.

  • Caso di più target tracciati contemporaneamente
    In questo caso, a causa dell'errore di calcolo, anche se gli oggetti reali sono fermi tra loro, questi target possono mostrare movimento relativo. La scelta del centro dipende quindi dalle esigenze reali; di solito il centro FirstTarget è la scelta più adatta.

  • Quando usare SessionOrigin
    SessionOrigin è adatto a scene in cui gira solo il motion tracking, perché XR Origin è l'unico punto di riferimento. È adatto anche ad alcuni casi speciali: se il produttore del visore non ha implementato correttamente il punto di riferimento del motion tracking, bisogna usare il centro del mondo Unity per forzare il centro SessionOrigin.

  • Scenari di uso del centro Camera
    Il centro Camera è più adatto alle scene in cui la fotocamera fisica non si muove (per esempio un AR a carte con fotocamera fissa). In quel caso questo centro facilita la creazione dei contenuti.

Centri comuni per le diverse funzioni AR

Quando si usano alcune funzioni AR singolarmente, certi centri sono più comuni. La tabella seguente riassume i centri usati più spesso:

Funzione Centro comune
Mega FirstTarget o SpecificTarget
Motion tracking SessionOrigin
Plane detection SessionOrigin
Sparse spatial map FirstTarget o SpecificTarget
Dense spatial map SessionOrigin
Surface tracking FirstTarget o SpecificTarget
Image tracking FirstTarget, SpecificTarget o Camera
Cloud image recognition FirstTarget, SpecificTarget o Camera
Object tracking FirstTarget, SpecificTarget o Camera

Aspetti da considerare nel multi-dispositivo

Quando sviluppi un'app AR multi-dispositivo, devi considerare il supporto dei vari dispositivi ai centri.

  • Se coinvolge solo telefoni e tablet, di solito non ci sono grossi problemi. Se serve usare SessionOrigin, assicurati che il motion tracking possa funzionare.
  • Se devi usare un visore, presta particolare attenzione:
    • Consulta Modalità centro valide per capire quali centri sono supportati dai dispositivi che userai. Se usi estensioni di terze parti, controlla anche il OriginType usato.
    • Con i dispositivi Rokid, cerca di non usare UXR. Con XRI si può garantire la disponibilità della maggior parte dei centri.
    • Su visori che non supportano FirstTarget e SpecificTarget, devi tenere presente che la maggior parte dei contenuti, come Mega o image tracking, non può restare ferma rispetto al sistema di coordinate del mondo Unity.

Contenuto che si visualizza correttamente con ogni centro

Avvertenza

In Unity AR, qualsiasi oggetto presente nel sistema di coordinate del mondo Unity e non regolato con il transform in base ai componenti della session potrebbe non essere visualizzato correttamente.

Se inserisci modelli nel sistema di coordinate del mondo, la loro posizione e orientamento potrebbero non corrispondere ad alcun oggetto reale. Il risultato può sembrare casualmente corretto, oppure apparire sospeso o in movimento continuo.

Per fare in modo che il contenuto si visualizzi correttamente con qualsiasi centro, il modo giusto è:

  • mettere sempre il contenuto da visualizzare sotto il nodo target corrispondente, oppure sotto il nodo XR Origin se il contenuto deve seguire il movimento di XR Origin
  • oppure allineare manualmente il contenuto con target o XR Origin, ma farlo dopo l'evento ARSession.PostSessionUpdate
Nota

Questo non garantisce che tutti gli elementi funzionino perfettamente, perché alcune funzioni di Unity funzionano solo nel sistema di coordinate del mondo (per esempio il sistema fisico). La scelta del centro giusto resta importante.

Argomenti correlati