Blocco mondiale e ancoraggi spaziali in Unity

Immagine dell'eroe degli strumenti di blocco mondiale

Ottenere gli ologrammi per rimanere al posto, spostarsi con l'utente o in alcuni casi posizionarsi rispetto ad altri ologrammi è una parte importante della creazione di applicazioni Realtà mista. Questo articolo illustra la soluzione consigliata usando Gli strumenti di blocco mondiale, ma verranno anche illustrati manualmente la configurazione degli ancoraggi spaziali nei progetti Unity. Prima di passare a qualsiasi codice, è importante comprendere come Unity gestisce lo spazio di coordinate e gli ancoraggi nel proprio motore.

Sistemi di coordinate su scala mondiale

Oggi, quando si scrivono giochi, app di visualizzazione dei dati o app di realtà virtuale, l'approccio tipico consiste nel stabilire un sistema di coordinate mondiale assoluto a cui tutte le altre coordinate possono eseguire in modo affidabile il mapping. In tale ambiente è sempre possibile trovare una trasformazione stabile che definisce una relazione tra due oggetti in tale mondo. Se questi oggetti non sono stati spostati, le trasformazioni relative rimangono sempre uguali. Questo tipo di sistema di coordinate globale è facile da ottenere correttamente quando si esegue il rendering di un mondo puramente virtuale in cui si conosce tutta la geometria in anticipo. Le app VR su scala sala oggi stabiliscono in genere questo tipo di sistema di coordinate su scala camera assoluta con la sua origine sul pavimento.

Al contrario, un dispositivo di realtà mista non gestito, ad esempio HoloLens, ha una comprensione dinamica basata su sensore del mondo, modificando continuamente la sua conoscenza nel tempo dell'ambiente circostante dell'utente mentre camminano molti metri su un intero piano di un edificio. In un'esperienza su scala mondiale, se si inseriscono tutti gli ologrammi in un sistema di coordinate rigide naïve, tali ologrammi finirebbero per derivare nel tempo, in base al mondo o rispetto all'uno all'altro.

Ad esempio, il visore può attualmente credere che due posizioni del mondo siano a 4 metri di distanza, e poi perfezionare tale comprensione, imparare che le posizioni sono effettivamente 3,9 metri a parte. Se questi ologrammi erano stati inizialmente posizionati 4 metri a parte in un unico sistema di coordinate rigide, uno di loro apparirebbe sempre 0,1 metri fuori dal mondo reale.

È possibile posizionare manualmente ancoraggi spaziali in Unity per mantenere la posizione di un ologramma nel mondo fisico quando l'utente è mobile. Tuttavia, questo sacrifica l'autosistenza all'interno del mondo virtuale. Gli ancoraggi diversi si spostano costantemente in relazione all'altro e si spostano anche attraverso lo spazio di coordinate globale. In questo scenario, le attività semplici come il layout diventano difficili. La simulazione fisica può anche essere problematica.

World Locking Tools (WLT) ti ottiene il meglio di entrambi i mondi, stabilizzando un singolo sistema di coordinate rigide usando un'offerta interna di ancoraggi spaziali distribuiti in tutta la scena virtuale mentre l'utente si sposta intorno. WLT analizza le coordinate della fotocamera e quelle ancoraggi spaziali ogni fotogramma. Invece di modificare le coordinate di tutto il mondo per compensare le correzioni nelle coordinate della testa dell'utente, WLT corregge le coordinate della testa.

Scegliere l'approccio di blocco del mondo

Se possibile, usare Strumenti di blocco mondiale per la posizione dell'ologramma.

World Locking Tools offre un sistema di coordinate stabile che riduce al minimo le incoerenze visibili tra marcatori virtuali e reali. World Locking Tools blocca l'intera scena con un pool condiviso di ancoraggi, anziché bloccare ogni gruppo di oggetti con l'ancoraggio individuale del gruppo.

World Locking Tools gestisce automaticamente la creazione interna e la gestione degli ancoraggi spaziali. Non è necessario interagire con ARAnchorManager o WorldAnchor per mantenere bloccati gli ologrammi.

  • Per Unity 2019/2020 usando OpenXR o il plug-in Windows XR, usare ARAnchorManager.
  • Per le versioni precedenti di Unity o i progetti WSA, usare WorldAnchor.

Configurare il blocco del mondo

Per iniziare a usare gli strumenti di blocco mondiale, scaricare lo strumento di funzionalità Realtà mista. Per altre informazioni sulle nozioni di base, vedere la pagina principale degli strumenti di blocco mondiale per i collegamenti a Panoramica, Guida introduttiva e altri argomenti utili.

Configurazione automatica

Quando il progetto è pronto per andare, eseguire l'utilità configura scena da Realtà mista > World Locking Tools:

Editor di Unity con menu Realtà mista Toolkit selezionato

Importante

L'utilità Configura scena può essere rieseguita in qualsiasi momento. Ad esempio, deve essere eseguito nuovamente se la destinazione AR è stata modificata da Legacy a XR SDK. Se la scena è già configurata correttamente, l'esecuzione dell'utilità non ha alcun effetto.

Visualizzatori

Durante lo sviluppo iniziale, l'aggiunta di visualizzatori può essere utile per garantire che WLT sia configurato e funzionante correttamente. Possono essere rimossi per le prestazioni di produzione o se per qualsiasi motivo non sono più necessari, usando l'utilità Rimuovi visualizzatori. Altre informazioni sui visualizzatori sono disponibili nella documentazione degli strumenti.

Blocco del mondo persistente

Gli ancoraggi spaziali salvano gli ologrammi nello spazio reale tra le sessioni dell'applicazione. Una volta salvato nell'archivio ancoraggi HoloLens, gli ancoraggi spaziali possono essere trovati e caricati in sessioni diverse e sono un fallback ideale quando non esiste connettività Internet.

Importante

Gli ancoraggi locali vengono archiviati nel dispositivo, mentre i dati relativi ad Ancoraggi nello spazio di Azure vengono archiviati nel cloud. È possibile disporre di ancoraggi locali e di Azure nello stesso progetto senza conflitti. Per altre informazioni sull'integrazione dei servizi cloud di Azure per archiviare gli ancoraggi, vedere Ancoraggi nello spazio di Azure.

Per impostazione predefinita, Gli strumenti di blocco mondiale ripristinano il sistema di coordinate di Unity rispetto al mondo fisico tra le sessioni nei dispositivi che supportano la persistenza degli ancoraggi spaziali locali. Per avere un ologramma visualizzato nello stesso posto nel mondo fisico dopo aver terminato e riordinato l'applicazione, l'applicazione deve ripristinare la stessa posa all'ologramma.

Componente del contesto di blocco mondiale nel controllo Unity

Se l'applicazione richiede un controllo più corretto, è possibile disabilitare Il salvataggio automatico e il caricamento automatico nel controllo e gestire la persistenza da uno script. Per altre informazioni, vedere Rendere persistenti i sistemi di coordinate spaziali.

World Locking Tools supporta la persistenza di ancoraggio locale solo nei dispositivi HoloLens. Per i dispositivi Android, iOS e HoloLens, integrare con Ancoraggi nello spazio di Azure per supportare la persistenza e la condivisione di spazi di coordinate tra sessioni e dispositivi. Per altre informazioni ed esempi usando gli strumenti di blocco mondiale con ancoraggi nello spazio di Azure, vedere Strumenti di blocco globale (WLT) combinati con ancoraggi nello spazio di Azure (ASA).

Passaggi successivi

Condividere uno spazio di coordinate bloccato al mondo:

Informazioni sul mapping spaziale:

Indietro ai checkpoint di sviluppo di Unity:

Vedi anche