Blocco del mondo e ancoraggi spaziali in UnityWorld locking and spatial anchors in Unity

Immagine dell'hero degli strumenti di blocco del mondo

Il fatto che gli ologrammi rimangano sul posto, si spostino con l'utente o in alcuni casi si posizionino rispetto ad altri ologrammi è una parte importante della creazione di applicazioni di realtà mista.Getting your holograms to stay in place, move with you, or in some cases position themselves relative to other holograms is a big part of creating Mixed Reality applications. Questo articolo illustra la soluzione consigliata con Gli strumenti di blocco del mondo, ma verrà anche illustrata la configurazione manuale degli ancoraggi nello spazio nei progetti Unity.This article will take you through our recommended solution using World Locking Tools, but we'll also cover manually setting up spatial anchors in your Unity projects. Prima di passare a qualsiasi codice, è importante comprendere in che modo Unity gestisce lo spazio delle coordinate e gli ancoraggi nel proprio motore.Before we jump into any code, it's important to understand how Unity handles coordinate space and anchors in its own engine.

Sistemi di coordinate su scala mondialeWorld-scale coordinate systems

Attualmente, quando si scrivono giochi, app per la visualizzazione dei dati o app di realtà virtuale, l'approccio tipico consiste nel stabilire un sistema di coordinate del mondo assoluto a cui tutte le altre coordinate possono eseguire in modo affidabile il mapping.Today, when writing games, data visualization apps, or virtual reality apps, the typical approach is to establish one absolute world coordinate system that all other coordinates can reliably map back to. In tale ambiente è sempre possibile trovare una trasformazione stabile che definisce una relazione tra due oggetti qualsiasi in quel mondo.In that environment, you can always find a stable transform that defines a relationship between any two objects in that world. Se questi oggetti non sono stati spostati, le relative trasformazioni resteranno sempre invariate.If you didn't move those objects, their relative transforms would always remain the same. Questo tipo di sistema di coordinate globale è facile da ottenere quando si esegue il rendering di un mondo puramente virtuale in cui si conosce in anticipo tutta la geometria.This kind of global coordinate system is easy to get right when rendering a purely virtual world where you know all of the geometry in advance. Le app VR su scala di stanza oggi stabiliscono in genere questo tipo di sistema di coordinate assoluto su scala di stanza con la relativa origine sul pavimento.Room-scale VR apps today typically establish this kind of absolute room-scale coordinate system with its origin on the floor.

Al contrario, un dispositivo di realtà mista senzathering, ad esempio HoloLens, ha una conoscenza dinamica del mondo basata su sensori, adattando continuamente le proprie conoscenze nel corso del tempo all'ambiente dell'utente mentre attraversano molti metri su un intero piano di un edificio.In contrast, an untethered mixed reality device such as HoloLens has a dynamic sensor-driven understanding of the world, continuously adjusting its knowledge over time of the user's surroundings as they walk many meters across an entire floor of a building. In un'esperienza su scala globale, se tutti gli ologrammi sono stati inseriti in un sistema di coordinate rigidi naive, questi ologrammi finirebbero per deviare nel tempo, in base al mondo o l'uno rispetto all'altro.In a world-scale experience, if you placed all your holograms in a naive rigid coordinate system, those holograms would end up drifting over time, either based on the world or relative to each other.

Ad esempio, il visore VR potrebbe attualmente ritiene che due posizioni nel mondo siano distanti 4 metri e quindi perfezionare tale comprensione, apprendendo che le posizioni sono di fatto a 3,9 metri di distanza.For example, the headset may currently believe two locations in the world to be 4 meters apart, and then later refine that understanding, learning that the locations are in fact 3.9 meters apart. Se questi ologrammi si trovavano inizialmente a 4 metri di distanza in un unico sistema di coordinate rigido, uno di essi apparirebbe sempre a 0,1 metri di distanza dal mondo reale.If those holograms had initially been placed 4 meters apart in a single rigid coordinate system, one of them would then always appear 0.1 meters off from the real world.

È possibile posizionare manualmente gli ancoraggi nello spazio in Unity per mantenere la posizione di un ologramma nel mondo fisico quando l'utente è mobile, ma ciò non consente l'auto-coerenza all'interno del mondo virtuale.You can manually place spatial anchors in Unity to maintain a hologram's position in the physical world when the user is mobile - however, this sacrifices the self-consistency within the virtual world. Ancoraggi diversi si spostano costantemente l'uno rispetto all'altro e si spostano anche nello spazio delle coordinate globale.Different anchors are constantly moving in relation to one another, and are also moving through the global coordinate space. In questo scenario, attività semplici come il layout diventano difficili e la simulazione fisica risulta problematica.In this scenario, simple tasks like layout become difficult and physics simulation problematic.

World Locking Tools consente di ottenere il meglio di entrambi i ambienti, stabilendo un singolo sistema di coordinate rigido usando una fornitura interna di ancoraggi nello spazio distribuiti in tutta la scena virtuale mentre l'utente si sposta.World Locking Tools gets you the best of both worlds, stabilizing a single rigid coordinate system using an internal supply of spatial anchors spread throughout the virtual scene as the user moves around. Gli strumenti analizzano le coordinate della fotocamera e gli ancoraggi nello stato di ogni fotogramma.The tools analyze the coordinates of the camera and those spatial anchors every frame. Invece di modificare le coordinate di tutti gli elementi del mondo per compensare le correzioni nelle coordinate della testa dell'utente, gli strumenti consentono invece di correggere le coordinate della testa.Instead of changing the coordinates of everything in the world to compensate for the corrections in the coordinates of the user's head, the tools just fix the head's coordinates instead.

Scelta dell'approccio di blocco globaleChoosing your world locking approach

  • È consigliabile usare world locking tools per tutte le esigenze di posizionamento degli ologrammi.Our recommendation is to use World Locking Tools for all your hologram positioning needs.
    • World Locking Tools offre un sistema di coordinate stabile che riduce al minimo le incoerenze visibili tra marcatori virtuali e reali.World Locking Tools provides a stable coordinate system that minimizes the visible inconsistencies between virtual and real world markers. In altre parole, blocca l'intera scena con un pool condiviso di ancoraggi, anziché bloccare ogni gruppo di oggetti con il singolo ancoraggio del gruppo.Put another way, it world-locks the entire scene with a shared pool of anchors, rather than locking each group of objects with the group's own individual anchor.
  • Per Unity 2019/2020 con OpenXR o il plug-in Windows XR, è necessario usare ARAnchorManagerFor Unity 2019/2020 using OpenXR or the Windows XR Plugin, you need to use ARAnchorManager
  • Per le versioni precedenti di Unity o i progetti WSA, è necessario usare WorldAnchorFor older Unity versions or WSA projects, you need to use WorldAnchor

Configurazione del blocco del mondoSetting up world locking

È consigliabile installare World Locking Tools usando il nuovo strumento di funzionalità di realtà mista.We recommend installing World Locking Tools using the new Mixed Reality Feature Tool. Dopo aver scaricato Mixed Reality Feature Tool dal collegamento seguente, selezionare la versione più recente di WLT Core nella sezione World Locking Tools (Strumenti di blocco del mondo):Once you've downloaded the Mixed Reality Feature Tool from the link below, select the latest version of WLT Core from the World Locking Tools section:

Finestra di selezione delle funzionalità di Mixed Reality Feature Tool con gli strumenti di blocco del mondo selezionati

Configurazione automatizzataAutomated setup

Quando il progetto è pronto, eseguire l'utilità di configurazione della scena da Mixed Reality Toolkit > Utilities > World Locking Tools:When your project is ready to go, run the configure scene utility from Mixed Reality Toolkit > Utilities > World Locking Tools:

Editor unity con il menu mixed reality toolkit selezionato

Importante

L'utilità Configura scena può essere rieseguita in qualsiasi momento.The Configure scene utility can be rerun at any time. Ad esempio, deve essere rieseguita se la destinazione AR è stata modificata da Legacy a XR SDK.For example, it should be rerun if the AR target has been changed from Legacy to XR SDK. Se la scena è già configurata correttamente, l'esecuzione dell'utilità non ha alcun effetto.If the scene is already properly configured, running the utility has no effect.

VisualizzatoriVisualizers

Durante lo sviluppo iniziale, l'aggiunta di visualizzatori può essere utile per assicurarsi che WLT sia configurato e funzioni correttamente.During early development, adding visualizers can be helpful to ensure WLT is setup and working properly. Possono essere rimossi per le prestazioni di produzione o se per qualsiasi motivo non sono più necessari, usando l'utilità Rimuovi visualizzatori.They can be removed for production performance, or if for any reason are no longer needed, using the Remove visualizers utility. Altri dettagli sui visualizzatori sono disponibili nella documentazione degli strumenti.More details on the visualizers can be found in the Tools documentation.

Blocco del mondo permanentePersistent world locking

Gli ancoraggi nello spazio salvano gli ologrammi nello spazio reale tra le sessioni dell'applicazione.Spatial anchors save holograms in real-world space between application sessions. Dopo essere stati salvati nell'archivio di ancoraggio di HoloLens, possono essere trovati e caricati in sessioni diverse e sono un fallback ideale in assenza di connettività Internet.Once saved in the HoloLens' anchor store, they can be found and loaded in different sessions and are an ideal fallback when there's no internet connectivity.

Importante

Gli ancoraggi locali vengono archiviati nel dispositivo, mentre i dati relativi ad Ancoraggi nello spazio di Azure vengono archiviati nel cloud.Local anchors are stored on device, while Azure Spatial Anchors are stored in the cloud. Se si vuole usare i servizi cloud di Azure per archiviare gli ancoraggi, è disponibile un documento che fornisce informazioni dettagliate sull'integrazione di Ancoraggi nello spazio di Azure.If you're looking to use Azure cloud services to store your anchors, we have a document that can walk you through integrating Azure Spatial Anchors. Si noti che è possibile includere ancoraggi locali e ancoraggi di Azure nello stesso progetto senza che si verifichino conflitti.Note that you can have local and Azure anchors in the same project without conflict.

Per impostazione predefinita, World Locking Tools ripristina il sistema di coordinate di Unity rispetto al mondo fisico tra le sessioni.By default, World Locking Tools will restore Unity's coordinate system relative to the physical world across sessions. Ciò significa che per fare in modo che un ologramma venga visualizzato nello stesso posto nel mondo fisico dopo la chiusura e la ri-esecuzione dell'applicazione, l'ologramma deve avere di nuovo la stessa posizione.This means that to have a hologram appear the same place in the physical world after quitting and re-running the application, the hologram only needs to have the same Pose again.

Componente del contesto di blocco del mondo in Unity Inspector

Se l'applicazione richiede un controllo più fine, il salvataggio automatico e il caricamento automatico possono essere disabilitati nel controllo e la persistenza gestita da uno script come descritto nella sezione relativa alla persistenza della documentazione.If the application needs finer control, Auto-Save and Auto-Load may be disabled in the inspector, and persistence managed from a script as described in the persistence section of the documentation.

Condivisione degli spazi delle coordinateSharing coordinate spaces

Se si vuole condividere uno spazio di coordinate bloccato a livello globale, vedere la documentazione completa dell'esperienza condivisa.If you want to share a world locked coordinate space, check out our comprehensive shared experience documentation.

Si noti che Ancoraggi nello spazio di Azure non è ancora supportato direttamente in World Locking Tools e quindi le esperienze condivise richiedono la creazione manuale di ancoraggi nello spazio.Note that Azure Spatial Anchors is not yet supported directly within World Locking Tools, and so shared experiences will require you to manually create spatial anchors.

Successivo checkpoint di sviluppoNext Development Checkpoint

Se si sta seguendo il percorso di checkpoint di sviluppo unity che è stato strutturato, si stanno esplorando i blocchi predefiniti di base di Realtà mista.If you're following the Unity development checkpoint journey we've laid out, you're in the midst of exploring the Mixed Reality core building blocks. Da qui è possibile passare al blocco predefinito successivo:From here, you can continue to the next building block:

In alternativa, passare alle API e alle funzionalità della piattaforma di realtà mista:Or jump to Mixed Reality platform capabilities and APIs:

È sempre possibile tornare ai checkpoint per lo sviluppo con Unity in qualsiasi momento.You can always go back to the Unity development checkpoints at any time.

Vedere ancheSee Also