Configurazione ed esecuzione degli esempi WLT+ASA

Riepilogo

Gli strumenti di blocco globale per Unity (WLT) forniscono un sistema di coordinate stabile basato sul rilevamento locale. Se combinato con Ancoraggi nello spazio di Azure, tale sistema di coordinate stabile può essere salvato in modo permanente tra sessioni e condiviso tra dispositivi.

Questo video potrebbe dare un'idea di cosa aspettarsi durante l'esecuzione dell'esempio.

Che cos'è in questo esempio?

Questo esempio fornisce asset e script per:

  1. Configurare il sistema di coordinate globale di Unity rispetto all'ambiente fisico.
  2. Pubblicare la configurazione del sistema di coordinate in Azure usando Ancoraggi nello spazio di Azure.
  3. Recuperare i dati da Azure per ripristinare il sistema di coordinate nelle sessioni successive o in altri dispositivi.

Struttura del documento

  1. Installazione: come installare e distribuire l'applicazione di esempio.
  2. Note sull'esecuzione dell'applicazione, insieme ai passaggi suggeriti.
  3. Descrizione dell'architettura degli script di supporto.

Configurare e testare le versioni

Questo esempio è stato sviluppato e testato usando:

  • Unity 2020.3.8f1
  • Ancoraggi nello spazio di Azure (ASA) v2.9.0 - v2.10.2.
  • Realtà mista Toolkit v2.7.2
  • Strumenti di blocco globale per Unity v1.4.1
  • FrozenWorldEngine v1.1.1

È possibile installare WLT e questo esempio da WLT rilascia .unitypackage o dallo strumento di funzionalità Realtà mista. Se si esegue l'installazione da FeatureTool, non è necessario installare solo la dipendenza degli esempi WLT (automatica), ma anche importare gli esempi nel progetto. Per informazioni dettagliate, vedere Installazione di WLT da Mr Feature Tool .

Installare la DLL del motore frozen world nel progetto

Il primo passaggio consiste nell'installare la DLL frozen world engine v1.1.1. Istruzioni qui, usando NuGet per Unity o nuget.exe da riga di comando.

Installare ASA

Creazione di risorse di ancoraggio nello spazio

Questa Guida introduttiva illustra i passaggi per creare un account Azure e le risorse di ancoraggi nello spazio necessarie. L'ID account, il dominio account e la chiave dell'account saranno necessari per eseguire l'esempio. Verranno aggiunti nei campi appropriati nello script "Spatial Anchor Manager", nell'oggetto SpacePinBinder nella scena. Sono supportati altri metodi di autenticazione, ma l'ID account/dominio/chiave è il più semplice quando si inizia.

Campi credenziali

Installazione dell'SDK

Installare quindi Ancoraggi nello spazio di Azure v2.9.0 usando uno dei metodi descritti in queste istruzioni. Ho usato il metodo Strumento funzionalità MR.

Configurazione aggiuntiva per la rilocazione grossolana

Quando si usa la rilocazione grossolana, è necessaria un'installazione aggiuntiva durante la distribuzione in Android o HoloLens2.

Che cos'è la rilocazione grossolana?

La rilocazione grossolana è una tecnologia che consente di cercare ancoraggi cloud creati in precedenza nelle vicinanze correnti. I dettagli sulla rilocazione del corso sono disponibili nella sezione Rilocazione corso della documentazione di Ancoraggi nello spazio di Azure.

Questo esempio illustra la ricerca di ancoraggi cloud tramite rilocazione grossolana o in modo esplicito tramite l'ID ancoraggio cloud (GUID). Se la rilocazione grossolana è abilitata, sono necessari i passaggi di configurazione aggiuntivi seguenti. Se non si è interessati alla rilocazione grossolana, è possibile disabilitarla nel componente "Publisher ASA" nell'oggetto SpacePinBinder.

Disabilitazione della rilocazione grossolana

Passaggi di configurazione aggiuntivi per HoloLens2

Per abilitare la rilocazione grossolana in HoloLens2, è necessario aggiungere un'autorizzazione al file Package.appxmanifest generato in ARM/WorldLockingTools/Package.appxmanifest (presupponendo che sia stata selezionata la cartella ARM come destinazione di compilazione). Se il progetto è personalizzato, sostituire il nome appropriato per WorldLockingTools in tale percorso. Aggiungere la riga seguente nella sezione Capabilities :

    <DeviceCapability Name="wiFiControl"/>

Per altre informazioni, vedere questo post su github.

Se non si verifica questo passaggio, lo stato "Idoneità" dell'editore non raggiungerà mai lo stato "Pronto", la frequenza dei fotogrammi sarà estremamente bassa e il UnityPlayer.log (se generato) sarà pieno di eccezioni del modulo:

InvalidOperationException: GrossolanoReloc: l'accesso Wi-Fi è stato rifiutato. Richiesta CV: . Risposta CV: .

Sarà necessario aggiungere tale funzionalità al package.appxmanifest ogni volta che la soluzione viene compilata da clean. Ma le build successive di Unity manterranno la funzionalità.

In Project Impostazioni/XR Plugin Management (Gestione plug-in Project Impostazioni/XR) assicurarsi che Windows Realtà mista sia il plug-in selezionato nella scheda UWP (OpenXR è supportato anche per WLT con ASA).

Il profilo XAmple XRSDK ToolkitConfigurationProfile MRTK in XAmpleApp/CustomProfiles è adatto per l'esecuzione in HoloLens2.

Passaggi di configurazione aggiuntivi per Android

Per abilitare la rilocazione grossolana in Android, seguire queste istruzioni per configurare il file Assets/Plugins/Android/mainTemplate.gradle.

Inoltre, in Assets/Plugins/Android/AndroidManifest.xml, è necessario abilitare molte autorizzazioni per consentire l'accesso al Wi-Fi in Android. Anche in questo caso, se si incorporano elementi di questo progetto nel proprio progetto, è necessario seguire questi passaggi per usare la rilocazione grossolana. Altri dettagli sulle autorizzazioni necessarie per accedere a Wi-Fi in Android sono disponibili in questo post e il post a cui è collegato.

Gli esempi del file mainTemplate.gradle modificato e AndroidManifest.xml sono inclusi nel progetto di esempio WLT-ASA, configurato in modo specifico per l'uso di WLT e ASA insieme. Possono essere copiati direttamente nel progetto, dopo aver abilitato "Custom Main Manifest" e "Custom Main Gradle Template" nel player Publishing Impostazioni come descritto.

Quando si fa clic su Compilazione e esecuzione, se la compilazione ha esito negativo e viene visualizzato un errore di shader nel materiale MRTK_Standard, è sufficiente provare di nuovo Compila ed esegui. Funziona secondo tentativo per me. Ci sono alcune info su che nei problemi MRTK, ma per quanto posso dire tutte le informazioni non è corretto.

In Project Impostazioni/XR Plugin Management (Gestione plug-in Project Impostazioni/XR) assicurarsi che ARCore sia il provider di plug-in selezionato nella scheda Android.

Il profilo XAmple AR ToolkitConfigurationProfile MRTK è adatto per l'esecuzione su dispositivi mobili. Non dimenticare di eseguire lo script Mixed Reality/Utilities/UnityAR/Update Scripting Defines dopo il passaggio ad Android o iOS.

Operazioni eseguite dai pulsanti

Pronto

  • Attiva/Disattiva pin: quando le puntine spaziatrice non sono attive, i relativi handle di manipolazione possono essere nascosti.
  • Pubblica: salvare la configurazione corrente, abilitandone il recupero in una sessione successiva o in altri dispositivi.
  • Caricare Oracle: usare associazioni archiviate in precedenza per ripristinare una configurazione spaziale.
  • Cancellare Oracle: eliminare tutte le risorse di backup, in particolare gli ancoraggi nello spazio di Azure e cancellare l'oracolo delle associazioni.
  • Ricerca: trovare tutti gli ancoraggi nello spazio di Azure nelle immediate vicinanze e ripristinare la configurazione spaziale da essi.
  • Ripulitura: trovare tutti gli ancoraggi nello spazio di Azure nelle immediate vicinanze e cancellarli.
  • Reset Pins (Reimposta pin) - Annullare eventuali modifiche al pin di spazio. Non cancella ancoraggi nello spazio di Azure.

Il menu sul cellulare è leggermente diverso in forma, ma le posizioni e i significati dei pulsanti sono gli stessi.

Procedura dettagliata - Pubblicare da HoloLens2

Posizionare la scena usando SpacePins

Quando si avvia il campione, il sistema di coordinate è posizionato e orientato in base alla posizione del tracciatore della testa all'avvio. Ciò vale per dire, è abbastanza arbitrario. La prima cosa da fare è modificare il sistema di coordinate in base allo stato di riferimento desiderato.

Il divano nella scena PinTestSofa è lungo 2,18 metri, 0,78 m di altezza e 1,0 m di profondità. Le maniglie SpacePin su ogni estremità posteriore del divano sono, quindi, 2,18 m di distanza, e 0,78 m fuori terra. Consiglio di misurare e posizionare marcatori temporanei a 2,18 m di distanza, ad un'altezza comoda. In alternativa, è possibile regolare la scena per adattarsi allo spazio fisico.

Dopo aver compilato e distribuito l'applicazione in un dispositivo HoloLens2, attendere che lo stato nel menu mobile sia Pronto (hint : la riga di stato passerà dal rosso al bianco quando è pronto).

Non pronto

Uno alla volta, afferrare ognuno dei punti di manipolazione SpacePin (le sfere a fili bianchi) e trascinarlo nella posizione relativa ai marcatori di riferimento.

Dopo aver rilasciato ognuno dei marcatori in posizione, la scena dovrebbe essere spostata per ripristinare la parte posteriore del divano rispetto allo SpacePin. Gli oggetti nella scena non vengono spostati, l'intero spazio delle coordinate viene regolato in modo che le coordinate originali delle puntine siano nella posizione nel mondo fisico in cui sono state trascinate.

Pubblicare lo spazio delle coordinate

Dopo aver stabilito lo spazio desiderato, è ora possibile pubblicarlo per renderlo disponibile nelle sessioni successive e in altri dispositivi.

Se si usa la rilocazione grossolana, è consigliabile cancellare eventuali ancoraggi cloud creati in precedenza a questo punto. Premere il pulsante "Ripulisci dalla ricerca" e attendere il completamento.

A questo punto, nel menu mobile, premere il pulsante "Pubblica" e attendere il completamento.

Pronto

Procedura dettagliata- Utilizzare da HoloLens2 con rilocazione grossolana

Avviare di nuovo l'applicazione in un dispositivo HoloLens2 diverso o nello stesso dispositivo dopo aver chiuso la sessione precedente. Quando lo stato viene visualizzato come Pronto, premere il pulsante "Carica da ricerca". Al termine dell'operazione, il sistema di coordinate globale di Unity sarà allineato all'ambiente fisico così come era nella sessione precedente (pubblicata).

Procedura dettagliata- Utilizzare da HoloLens2 con IBindingOracle (SpacePinBinderFile)

Quando le associazioni vengono pubblicate in un dispositivo o quando vengono ripristinate dalla ricerca, vengono registrate in un IBindingOracle. Questo esempio include il più semplice Oracle, uno che scrive semplicemente le associazioni in un file di testo.

Riavviare l'applicazione in una nuova sessione. Se si tratta dello stesso HoloLens2 da cui è stata eseguita la pubblicazione, dalla pubblicazione viene lasciato un file di associazione. Se si tratta di un dispositivo HoloLens2 diverso, ma una ricerca è stata eseguita correttamente in una sessione precedente, il file di associazione verrà lasciato da questo.

Premere il pulsante "Carica da file" per caricare le associazioni registrate in precedenza e ripristinare lo spazio delle coordinate.

Procedura dettagliata- Utilizzare da Android con rilocazione grossolana

L'esperienza utente è leggermente diversa in Android, ma funziona esattamente allo stesso modo. La differenza principale è che è necessaria un'analisi più dettagliata dell'ambiente all'avvio rispetto a HoloLens2, prima che ASA sia pronta per procedere.

Quando il sistema viene visualizzato come Pronto, è possibile premere il pulsante blu (3° a destra) per cercare i binding pubblicati in precedenza e ripristinare il sistema di coordinate.

Procedura dettagliata- Utilizzare da Android con IBindingOracle (SpacePinBinderFile)

Dopo aver completato correttamente un caricamento dalla ricerca, nel dispositivo è stato lasciato un file di associazioni. Nelle sessioni successive è sufficiente premere Carica da file per ripristinare il sistema di coordinate.

In alternativa, è sufficiente copiare il file di testo dei binding dal dispositivo di pubblicazione al dispositivo che usa. Il percorso predefinito del file di testo delle associazioni è:

HoloLens2: Cartelle utente/LocalAppData/WLT-ASA/LocalState/BinderFile.txt

Android: archiviazione condivisa interna/Android/data/com. WorldLockingTools.WLTASA/files/BinderFile.txt

Vedi anche