Blocco globale e ancoraggi nello spazio in Unity

Immagine hero degli strumenti di blocco del mondo

Ottenere gli ologrammi per rimanere sul posto, spostarsi con te 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 globale, ma verrà illustrata anche la configurazione manuale degli ancoraggi nello spazio nei progetti Unity. Prima di passare a qualsiasi codice, è importante comprendere in che modo Unity gestisce lo spazio delle 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 globale assoluto in cui tutte le altre coordinate possono mappare in modo affidabile. In tale ambiente è sempre possibile trovare una trasformazione stabile che definisce una relazione tra due oggetti in tale mondo. Se tali oggetti non sono stati spostati, le trasformazioni relative rimarranno sempre invariate. Questo tipo di sistema di coordinate globale è facile da ottenere quando si esegue il rendering di un mondo puramente virtuale in cui si conosce tutta la geometria in anticipo. Le app VR su scala locale oggi stabiliscono in genere questo tipo di sistema di coordinate assoluto a scala di stanza con la sua origine sul pavimento.

Al contrario, un dispositivo di realtà mista senzathering, ad esempio HoloLens, ha una comprensione dinamica basata sui sensori del mondo, modificando continuamente le proprie conoscenze 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 rigido ingenuo, questi ologrammi finirebbero per derivare nel tempo, in base al mondo o rispetto l'uno all'altro.

Ad esempio, il visore VR potrebbe attualmente credere che due posizioni del mondo siano a 4 metri di distanza, e poi perfezionare quella comprensione, imparando che le posizioni sono di fatto a 3,9 metri di distanza. Se questi ologrammi fossero stati inizialmente posizionati a 4 metri di distanza in un unico sistema di coordinate rigido, uno di essi apparirebbe sempre 0,1 metri dal mondo reale.

È possibile posizionare manualmente gli ancoraggi nello spazio in Unity per mantenere la posizione di un ologramma nel mondo fisico quando l'utente è mobile. Tuttavia, questo sacrifica l'auto-coerenza all'interno del mondo virtuale. Gli ancoraggi diversi si spostano costantemente l'uno rispetto 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 della fisica può anche essere problematica.

World Locking Tools (WLT) ti consente di ottenere il meglio di entrambi i mondi, stabilizzando un unico sistema di coordinate rigido usando un'offerta interna di ancoraggi spaziali distribuiti in tutta la scena virtuale mentre l'utente si muove intorno. WLT analizza le coordinate della fotocamera e gli ancoraggi nello spazio di ogni fotogramma. Invece di modificare le coordinate di tutto il mondo per compensare le correzioni nelle coordinate della testa dell'utente, WLT corregge semplicemente le coordinate della testa.

Scegliere l'approccio di blocco globale

Se possibile, usare Gli strumenti di blocco globale per il posizionamento dell'ologramma.

World Locking Tools fornisce 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, invece di bloccare ogni gruppo di oggetti con il proprio ancoraggio individuale del gruppo.

Gli strumenti di blocco globale gestiscono automaticamente la creazione e la gestione interna degli ancoraggi nello spazio. Non è necessario interagire con ARAnchorManager o WorldAnchor per mantenere bloccati gli ologrammi.

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

Configurare il blocco globale

Per iniziare a usare gli strumenti di blocco globale, scaricare lo strumento di Realtà mista funzionalità. Per altre informazioni sulle nozioni di base, vedere la pagina principale della documentazione relativa agli strumenti di blocco globale per i collegamenti a Panoramica, Avvio rapido e altri argomenti utili.

Installazione automatica

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

Editor unity con menu Realtà mista Toolkit selezionato

Importante

L'utilità Configura scena può essere rieseguita in qualsiasi momento. Ad esempio, deve essere rieseguita 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 assicurarsi che WLT sia configurato e funzioni correttamente. Possono essere rimossi per le prestazioni di produzione o se per qualsiasi motivo non sono più necessari, usando l'utilità Rimuovi visualizzatori. Per altre informazioni sui visualizzatori, vedere la documentazione relativa agli strumenti.

Blocco del mondo persistente

Gli ancoraggi nello spazio consentono di salvare gli ologrammi nello spazio reale tra le sessioni dell'applicazione. Una volta salvato nell'archivio di ancoraggi HoloLens, gli ancoraggi nello spazio possono essere trovati e caricati in sessioni diverse e sono un fallback ideale quando non è disponibile 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 avere 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 globale ripristinano il sistema di coordinate di Unity rispetto al mondo fisico tra le sessioni nei dispositivi che supportano la persistenza degli ancoraggi nello spazio locale. Per fare in modo che un ologramma venga visualizzato nella stessa posizione nel mondo fisico dopo la chiusura e la ripetizione dell'applicazione, l'applicazione deve solo ripristinare la stessa posizione all'ologramma.

Componente del contesto di blocco globale nel controllo Unity

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

Gli strumenti di blocco globale supportano la persistenza dell'ancoraggio locale solo nei dispositivi HoloLens. Per i dispositivi Android, iOS e HoloLens, integrarsi 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 sull'uso degli strumenti di blocco globale con Ancoraggi nello spazio di Azure, vedere World Locking Tools (WLT) combinato con Ancoraggi nello spazio di Azure.

Passaggi successivi

Condividere uno spazio di coordinate bloccato al mondo:

Informazioni sul mapping spaziale:

Tornare ai checkpoint di sviluppo di Unity:

Vedi anche