Configurazione e esecuzione degli esempi WLT+ASA

Riepilogo

Gli strumenti di blocco mondiale per Unity (WLT) offrono un sistema di coordinate stabile basato sul rilevamento locale. Quando si combinano con ancoraggi nello spazio di Azure , il sistema di coordinate stabile può essere mantenuto in modo permanente tra sessioni e condiviso tra dispositivi.

Questo video potrebbe dare un'idea di cosa aspettarsi quando si esegue l'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 di questo 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.

Configurazione e versioni testate

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 mondiale per Unity v1.4.1
  • FrozenWorldEngine v1.1.1

È possibile installare WLT e questo esempio da WLT rilascia .unitypackage o dallo strumento di funzionalità di Realtà mista. Se si installa da FeatureTool, non è necessario installare solo la dipendenza WLT Examples (automatica), ma anche Importare gli esempi nel progetto. Per informazioni dettagliate, vedere Installazione di WLT dallo strumento di funzionalità MR .

Installare la DLL del motore Frozen World nel progetto

Il primo passaggio consiste nell'installare la DLL del motore Frozen World, v1.1.1. Istruzioni qui, usando NuGet per Unity o nuget.exe della riga di comando.

Installare ASA

Creazione di risorse di ancoraggio spaziale

Questa guida introduttiva illustra i passaggi per creare un account Azure e le risorse di ancoraggi spaziali 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. Altri metodi di autenticazione sono supportati, ma l'ID account/dominio/chiave è il più semplice quando si inizia.

Campi credenziali

Installare l'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 una configurazione 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 all'interno della vicinanza corrente. I dettagli sulla rilocazione dei corsi sono disponibili nella sezione Delocalizzazione del corso della documentazione di Ancoraggi nello spazio di Azure.

Questo esempio illustra la ricerca di ancoraggi cloud in base alla rilocazione grossolana o esplicitamente in base all'ID di 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 questo progetto è personalizzato, sostituire il nome appropriato per WorldLockingTools in tale percorso. Aggiungere la riga seguente nella sezione Funzionalità:

    <DeviceCapability Name="wiFiControl"/>

Per altre informazioni, vedere questo post su github.

Se si perde questo passaggio, il server di pubblicazione "Preparazione" non raggiungerà mai lo stato "Pronto", il framerate sarà estremamente basso e il file UnityPlayer.log (se generato) sarà pieno di eccezioni del modulo:

InvalidOperationException: CoarseReloc: l'accesso WiFi è stato rifiutato. Richiesta CV: . CV di risposta: .

È necessario aggiungere tale funzionalità al package.appxmanifest ogni volta che la soluzione viene compilata dalla pulizia. Ma le build successive di Unity conservano la funzionalità.

In Gestione plug-in di Project Settings/XR assicurarsi che Windows Mixed Reality sia il Plugin-Provider 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 Asset/Plug-in/Android/AndroidManifest.xml, è necessario abilitare molte autorizzazioni per consentire l'accesso alle 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. Altre informazioni sulle autorizzazioni necessarie per accedere a Wi-Fi in Android sono disponibili in questo post e il post a cui è stato eseguito il post.

Gli esempi del 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 "Manifesto principale personalizzato" e "Modello principale personalizzato" nelle impostazioni di pubblicazione del lettore, come descritto.

Quando si raggiunge Build & Run, se la compilazione ha esito negativo con un errore shader nel materiale MRTK_Standard, provare a eseguire di nuovo Build &. Funziona secondo tentativo per me. Ci sono alcune informazioni su questo problema nei problemi MRTK, ma per quanto posso dire tutte le informazioni non sono corrette.

In Gestione plug-in Impostazioni progetto/XR assicurarsi che ARCore sia il Plugin-Provider 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 aver eseguito il passaggio a Android o iOS.

Cosa fanno i pulsanti

Ready

  • Disattiva pin: quando i puntini di spazio non sono attivi, i relativi handle di manipolazione potrebbero essere nascosti.
  • Pubblica: salvare la configurazione corrente, abilitando il recupero nella sessione successiva o in altri dispositivi.
  • Caricare Oracle: usare le associazioni archiviate in precedenza per ripristinare una configurazione spaziale.
  • Cancella Oracle: eliminare tutte le risorse di backup, in particolare ancoraggi spaziali di Azure e cancellare le associazioni oracle.
  • Ricerca: trovare tutti gli ancoraggi spaziali di Azure nella prossimità immediata e ripristinare la configurazione spaziale da essi.
  • Eliminazione: trovare tutti gli ancoraggi spaziali di Azure nella vicinanza immediata e cancellarli.
  • Reimpostare i pin: annullare eventuali modifiche del pin di spazio. Non cancella gli ancoraggi spaziali di Azure.

Il menu per dispositivi mobili è leggermente diverso in forma, ma le posizioni dei pulsanti e i significati sono uguali.

Procedura dettagliata - Pubblicare da HoloLens2

Posizionare la scena usando SpacePins

Quando si avvia l'esempio, il sistema di coordinate è posizionato e orientato in base alla posizione del localizzatore head all'avvio. Vale a dire, è abbastanza arbitrario. La prima cosa da fare consiste nel modificare il sistema di coordinate in uno stato di riferimento desiderato.

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

Dopo aver compilato e distribuito l'applicazione in un dispositivo HoloLens2, attendere fino a quando lo stato del menu mobile dice Ready (hint - la riga di stato passerà dal rosso al bianco quando è pronto).

Non pronto

Una alla volta, afferrare ognuno degli handle SpacePin (le sfere del wireframe bianco) e trascinarlo in posizione rispetto 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 a SpacePin. Gli oggetti nella scena non vengono spostati, l'intero spazio delle coordinate viene modificato in modo che le coordinate originali di SpacePins si trovino nella posizione nel mondo fisico a cui sono state trascinate.

Pubblicare lo spazio delle coordinate

Dopo aver stabilito lo spazio desiderato, è ora possibile pubblicare tale spazio 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 "Elimina dalla ricerca" e attendere il completamento di tale operazione.

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

Ready

Procedura dettagliata: usare HoloLens2 usando la 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 dalla ricerca". Al termine dell'operazione, il sistema di coordinate globali unity avrà realmente allineato all'ambiente fisico come era nella sessione precedente (pubblicata).

Procedura dettagliata- Usare da HoloLens2 usando 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, 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, è disponibile un file di associazione lasciato dalla pubblicazione. Se si tratta di un oggetto 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 tale spazio di coordinate.

Procedura dettagliata- Usare da Android usando la rilocazione grossolana

L'esperienza utente è leggermente diversa in Android, ma funziona esattamente come. La differenza principale è che è necessaria una piccola analisi dell'ambiente all'avvio rispetto a HoloLens2, prima che ASA sia pronto per procedere.

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

Procedura dettagliata: usare da Android usando IBindingOracle (SpacePinBinderFile)

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

In alternativa, è possibile copiare il file di testo delle associazioni dal dispositivo di pubblicazione al dispositivo di utilizzo. Il percorso predefinito del file di testo binding è:

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

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

Vedi anche