Ancoraggi nello spazio di Azure in Unreal
Ancoraggi nello spazio di Azure è un servizio di Realtà mista di Microsoft che consente ai dispositivi di realtà aumentata di individuare, condividere e salvare in modo permanente i punti di ancoraggio nel mondo fisico. La documentazione seguente fornisce istruzioni utili per l'integrazione del servizio Ancoraggi nello spazio di Azure in un progetto Unreal. Per altre informazioni, vedere il servizio Ancoraggi nello spazio di Azure.
Nota
Unreal Engine 4.26 è ora dotato di plug-in per il supporto di ARKit e ARCore nel caso in cui la destinazione sia un dispositivo iOS o Android.
Importante
Gli ancoraggi locali vengono archiviati nel dispositivo, mentre i dati relativi ad Ancoraggi nello spazio di Azure vengono archiviati nel cloud. Se si vuole archiviare gli ancoraggi in locale in un dispositivo, è disponibile il documento Ancoraggi nello spazio locali che fornisce informazioni dettagliate per l'esecuzione del processo. Si noti che è possibile includere ancoraggi locali e ancoraggi di Azure nello stesso progetto senza che si verifichino conflitti.
Prerequisiti
Per completare le procedure contenute in questa guida, verificare che siano soddisfatti i requisti seguenti:
- Plug-in Microsoft OpenXR installato, disponibile in Unreal Marketplace o GitHub.
- Installato Unreal versione 4.25 o successiva
- Progetto HoloLens 2 configurato in Unreal
- Leggere la sezione Panoramica di Ancoraggi nello spazio di Azure
- Nozioni di base su C++ e Unreal
Recupero delle informazioni sull'account di Ancoraggi nello spazio di Azure
Prima di usare Ancoraggi nello spazio di Azure nel progetto, è necessario:
-
Creare una risorsa di Ancoraggi nello spazio e copiare i campi dell'account elencati di seguito. Questi valori vengono usati per autenticare gli utenti con l'account dell'applicazione:
- ID account
- Chiave dell'account
Per altre informazioni, vedere la documentazione relativa all'autenticazione di Ancoraggi nello spazio di Azure.
Nota
Ancoraggi nello spazio di Azure in Unreal 4.25 non supporta i token di autenticazione di Azure AD. Il supporto per questa funzionalità, tuttavia, sarà disponibile in una versione successiva.
Abilitare funzionalità e autorizzazioni
HoloLens
Aprire Impostazioni > progetto HoloLens e abilitare la funzionalità Client Internet :
Android
Per visualizzare una finestra di dialogo di autorizzazione e consentire le funzionalità di posizione, è necessario chiamare la funzione Richiedi autorizzazioni Android prima di tentare di avviare la sessione di ancoraggio nello spazio di Azure:
Creare una variabile locale per le autorizzazioni di input e popolare con:
- android.permission.ACCESS_WIFI_STATE
- android.permission.CHANGE_WIFI_STATE
- android.permission.INTERNET
- android.permission.BLUETOOTH
- android.permission.BLUETOOTH_ADMIN
- android.permission.ACCESS_COARSE_LOCATION
- android.permission.ACCESS_FINE_LOCATION
- android.permission.CAMERA
Infine, aprire Impostazioni > progetto Android e impostare le stesse autorizzazioni nel campo Autorizzazioni aggiuntive in Creazione di pacchetti APK avanzati:
iOS
Per creare un'applicazione per iOS, è necessario usare Unreal in un Mac. Per creare un pacchetto con un account sviluppatore Apple, aprire Impostazioni progetto > iOS e scorrere verso il basso fino alla sezione Compilazione . Abilitare la casella di controllo Firma automatica e popolare l'ID team IOS con l'ID team.
È possibile trovare l'ID team accedendo a developer.apple.com, passando alla scheda Appartenenza e cercando l'ID team.
Per visualizzare un dialogo di autorizzazione e consentire al dispositivo iOS di accedere alle informazioni sulla posizione, è necessario chiamare le funzioni Init Location Services e Start Location Services prima di tentare di avviare la sessione di ancoraggio spaziale di Azure:
Aggiunta di plug-in di Ancoraggi nello spazio di Azure
Suggerimento
Quando si usano ancoraggi nello spazio di Azure per Unreal, è disponibile un plug-in Ancoraggi nello spazio di Azure e un plug-in specifico della piattaforma (WMR, ARKit, ARCore, OpenXR). È necessario disporre di un solo plug-in specifico della piattaforma abilitato alla volta.
HoloLens
Abilitare i plug-in di Ancoraggi nello spazio di Azure nell'editor Unreal nel modo seguente:
- Fare clic su Modifica > plug-in e cercare ancoraggi nello spazio di Azure e ancoraggi nello spazio di Azure per WMR.
- Selezionare la casella di controllo Enabled (Abilitato) di entrambi i plug-in per consentire l'accesso alle librerie del progetto di Ancoraggi nello spazio di Azure nell'applicazione.
Al termine, riavviare l'editor Unreal per rendere effettive le modifiche apportate ai plug-in. Il progetto è ora pronto per l'uso di Ancoraggi nello spazio di Azure.
Android
Abilitare i plug-in di Ancoraggi nello spazio di Azure nell'editor Unreal nel modo seguente:
- Fare clic su Modifica > plug-in e cercare ancoraggi nello spazio di Azure e ancoraggi nello spazio di Azure per ARCore.
- Selezionare la casella di controllo Enabled (Abilitato) di entrambi i plug-in per consentire l'accesso alle librerie del progetto di Ancoraggi nello spazio di Azure nell'applicazione.
Al termine, riavviare l'editor Unreal per rendere effettive le modifiche apportate ai plug-in. Il progetto è ora pronto per l'uso di Ancoraggi nello spazio di Azure.
iOS
Abilitare i plug-in di Ancoraggi nello spazio di Azure nell'editor Unreal nel modo seguente:
- Fare clic su Modifica > plug-in e cercare ancoraggi nello spazio di Azure e ancoraggi nello spazio di Azure per ARKit.
- Selezionare la casella di controllo Enabled (Abilitato) di entrambi i plug-in per consentire l'accesso alle librerie del progetto di Ancoraggi nello spazio di Azure nell'applicazione.
- Cercare anche Servizi location per dispositivi mobili e Servizi di posizione mobile - Implementazione IOS
- Selezionare la casella di controllo Abilitato in entrambi i plug-in per consentire al dispositivo iOS di accedere alla posizione corrente.
Al termine, riavviare l'editor Unreal per rendere effettive le modifiche apportate ai plug-in. Il progetto è ora pronto per l'uso di Ancoraggi nello spazio di Azure.
Avvio di una sessione di Ancoraggi nello spazio
Una sessione di Ancoraggi nello spazio di Azure consente alle applicazioni client di comunicare con il servizio Ancoraggi nello spazio di Azure. È necessario creare e avviare una sessione di Ancoraggi nello spazio di Azure per creare, salvare in modo permanente e condividere Ancoraggi nello spazio di Azure:
- Aprire il progetto per il pedone che si sta usando nell'applicazione.
- Aggiungere due variabili di stringa per ID account e Chiave dell'account e quindi assegnare i valori corrispondenti dell'account di Ancoraggi nello spazio di Azure per eseguire l'autenticazione della sessione.
Avviare una sessione di Ancoraggi nello spazio di Azure nel modo seguente:
- Verificare che nell'applicazione HoloLens sia in esecuzione un'istanza di AR Session (Sessione AR) poiché la sessione di Ancoraggi nello spazio di Azure non può essere avviata fino a quando non è in esecuzione una sessione AR. Creare un asset di sessione AR se non ne è stato configurato nessuno.
- Aggiungere l'evento personalizzato Start Azure Spatial Anchors Session (Avvia sessione di Ancoraggi nello spazio di Azure) e configurarlo nel modo illustrato nello screenshot seguente.
- La creazione di una sessione non determina l'avvio della sessione per impostazione predefinita, che consente di configurare la sessione per l'autenticazione con il servizio Ancoraggi nello spazio di Azure.
- Configurare la sessione ancoraggi nello spazio di Azure per specificare l'ID account, la chiave dell'account, il dominio account e le impostazioni di localizzazione del corso. Tutte le caselle di controllo devono essere abilitate nelle impostazioni di localizzazione del corso in modo che il servizio di ancoraggio spaziale di Azure possa usare i dati del sensore per individuare gli ancoraggi.
- Avviare la sessione di Ancoraggi nello spazio di Azure, consentendo all'applicazione di creare e individuare Ancoraggi nello spazio di Azure.
Quando non si usa più il servizio, è consigliabile pulire le risorse di Ancoraggi nello spazio di Azure presenti nel progetto Event Graph (Grafico eventi):
- Arrestare la sessione di Ancoraggi nello spazio di Azure. La sessione non sarà più in esecuzione, ma le risorse associate saranno ancora presenti nel plug-in di Ancoraggi nello spazio di Azure.
- Eliminare la sessione di Ancoraggi nello spazio di Azure per eseguire la pulizia di tutte le risorse della sessione ancora note al plug-in di Ancoraggi nello spazio di Azure.
Il progetto Event Graph (Grafico eventi) dovrebbe avere un aspetto simile allo screenshot seguente:
Creazione di un ancoraggio
Un ancoraggio nello spazio di Azure rappresenta una posa del mondo fisico nello spazio dell'applicazione di realtà aumentata, che blocca il contenuto della realtà aumentata nelle posizioni fisiche. È anche possibile condividere Ancoraggi nello spazio di Azure tra diversi utenti. Questa condivisione consente al contenuto della realtà aumentata progettato su dispositivi diversi di essere posizionato come nel mondo fisico.
Per creare un nuovo ancoraggio nello spazio di Azure:
- Verificare che sia in esecuzione una sessione di Ancoraggi nello spazio di Azure. L'applicazione non può creare o salvare in modo permanente un ancoraggio nello spazio di Azure quando non è in esecuzione alcuna sessione di Ancoraggi nello spazio di Azure.
- Creare oppure ottenere un componente scena di Unreal di cui deve essere salvata la posizione in modo permanente.
- Nell'immagine seguente il componente Scene Component Needing Anchor (Componente scena con necessità di ancoraggio) viene usato come variabile. È necessario un componente scena Unreal per stabilire una trasformazione globale dell'applicazione per un segnaposto AR e un ancoraggio nello spazio di Azure.
Per costruire e salvare un ancoraggio nello spazio di Azure per un componente scena Unreal:
- Chiamare Pin Component (Componente segnaposto) per il componente scena Unreal e specificare World Transform (Trasformazione globale) come trasformazione globale usata per il segnaposto AR.
- Unreal tiene traccia dei punti AR nello spazio dell'applicazione con i segnaposto AR, usati per creare un ancoraggio nello spazio di Azure. In Unreal un segnaposto AR è analogo a un ancoraggio nello spazio di HoloLens.
- Chiamare Create Cloud Anchor (Crea ancoraggio cloud) usando il segnaposto AR appena creato.
- La chiamata a Create Cloud Anchor (Crea ancoraggio cloud) consente di creare un ancoraggio nello spazio di Azure in locale, ma non nel servizio Ancoraggi nello spazio di Azure. È possibile impostare i parametri relativi all'ancoraggio nello spazio di Azure, ad esempio una data di scadenza, prima di creare l'ancoraggio nello spazio di Azure con il servizio.
- Impostare la scadenza dell'ancoraggio nello spazio di Azure. Il parametro Lifetime (Durata) di questa funzione consente allo sviluppatore di specificare l'intervallo di tempo in secondi durante il quale l'ancoraggio deve essere mantenuto dal servizio.
- Ad esempio, per una durata di una settimana è richiesto un valore di 60 secondi x 60 minuti x 24 ore x sette giorni = 604.800 secondi.
Dopo aver impostato i parametri di ancoraggio, dichiarare l'ancoraggio come pronto per il salvataggio. Nell'esempio seguente, l'ancoraggio nello spazio di Azure appena creato viene aggiunto a un set di ancoraggi nello spazio di Azure per i quali è necessario eseguire il salvataggio. Questo set viene dichiarato come variabile per il progetto Pawn.
Salvataggio di un ancoraggio
Dopo aver configurato l'ancoraggio nello spazio di Azure con i parametri, chiamare Save Cloud Anchor (Salva ancoraggio cloud). La chiamata a Save Cloud Anchor (Salva ancoraggio cloud) dichiara l'ancoraggio al servizio Ancoraggi nello spazio di Azure. Se la chiamata a Save Cloud Anchor (Salva ancoraggio cloud) ha esito positivo, l'ancoraggio nello spazio di Azure sarà disponibile per altri utenti del servizio Ancoraggi nello spazio di Azure.
Nota
Save Cloud Anchor (Salva ancoraggio cloud) è una funzione asincrona e può essere chiamata solo in un evento thread di gioco, ad esempio EventTick. È possibile che Save Cloud Anchor (Salva ancoraggio cloud) non venga visualizzata come funzione disponibile tra le funzioni di progetto personalizzate. Dovrebbe essere disponibile, tuttavia, nell'editor del progetto Pawn Event Graph (Grafico eventi Pawn).
Nell'esempio seguente l'ancoraggio nello spazio di Azure viene archiviato in un set durante un callback dell'evento di input. L'ancoraggio viene quindi salvato in EventTick. Per salvare un ancoraggio nello spazio di Azure, possono essere necessari più tentativi a seconda della quantità di dati spaziali creati dalla sessione di Ancoraggi nello spazio di Azure. Per questo motivo è consigliabile controllare se la chiamata di salvataggio ha avuto esito positivo.
Se l'ancoraggio non viene salvato, aggiungerlo nuovamente al set di ancoraggi ancora da salvare. EventTick futuri continueranno a provare a salvare l'ancoraggio fino a quando non viene archiviato.
Dopo il salvataggio dell'ancoraggio, la trasformazione dei segnaposto AR funge da trasformazione di riferimento per inserire contenuto nell'app. Altri utenti possono rilevare questo ancoraggio e allineare il contenuto AR per dispositivi diversi nel mondo fisico.
Eliminazione di un ancoraggio
È possibile eliminare gli ancoraggi dal servizio Ancoraggi nello spazio di Azure chiamando Delete Cloud Anchor (Elimina ancoraggio cloud).
Nota
Delete Cloud Anchor (Elimina ancoraggio cloud) è una funzione latente e può essere chiamata solo nel caso di un evento thread di gioco, ad esempio EventTick. È possibile che Delete Cloud Anchor (Elimina ancoraggio cloud) non venga visualizzata come funzione disponibile tra le funzioni di progetto personalizzate. Dovrebbe essere disponibile, tuttavia, nell'editor del progetto Pawn Event Graph (Grafico eventi Pawn).
Nell'esempio seguente l'ancoraggio viene contrassegnato per l'eliminazione in un evento di input personalizzato. L'eliminazione viene quindi tentata in EventTick. Se l'eliminazione dell'ancoraggio non riesce, aggiungere l'ancoraggio nello spazio di Azure al set di ancoraggi contrassegnati per l'eliminazione e riprovare in EventTick successivi.
Il progetto Event Graph (Grafico eventi) dovrebbe ora avere un aspetto simile allo screenshot seguente:
Individuazione di ancoraggi preesistenti
Gli ancoraggi esistenti possono essere creati da peer con il servizio Ancoraggi nello spazio di Azure:
- Ottenere un identificatore di ancoraggio nello spazio di Azure per l'ancoraggio da rilevare.
- È possibile ottenere un identificatore per un ancoraggio creato dallo stesso dispositivo in una precedente sessione di Ancoraggi nello spazio di Azure. Può anche essere creato e condiviso da dispositivi peer che interagiscono con il servizio Ancoraggi nello spazio di Azure.
- Aggiungere un componente AzureSpatialAnchorsEvent al progetto Pawn.
- Questo componente consente di effettuare la sottoscrizione a diversi eventi di Ancoraggi nello spazio di Azure, ad esempio eventi chiamati quando vengono individuati gli ancoraggi nello spazio di Azure.
- Effettuare la sottoscrizione ad ASAAnchor Located Delegate per il componente AzureSpatialAnchorsEvent.
- Il delegato consente all'applicazione di stabilire quando sono stati individuati nuovi ancoraggi associati all'account di Ancoraggi nello spazio di Azure.
- Con il callback dell'evento, gli ancoraggi nello spazio di Azure creati dai peer con la sessione di Ancoraggi nello spazio di Azure non avranno segnaposto AR creati per impostazione predefinita. Per creare un segnaposto AR per l'ancoraggio nello spazio di Azure rilevato, gli sviluppatori possono chiamare la funzione Create ARPin Around Azure Cloud Spatial Anchor (Crea segnaposto AR attorno all'ancoraggio nello spazio cloud di Azure).
Per individuare gli ancoraggi nello spazio di Azure creati da peer con il servizio Ancoraggi nello spazio di Azure, l'applicazione dovrà creare un elemento Azure Spatial Anchors Watcher (Watcher ancoraggi nello spazio di Azure):
- Verificare che sia in esecuzione una sessione di Ancoraggi nello spazio di Azure.
- Creare AzureSpatialAnchorsLocateCriteria.
- È possibile specificare diversi parametri di posizione, ad esempio la distanza dall'utente o la distanza da un altro ancoraggio.
- Dichiarare in AzureSpatialAnchorsLocateCritieria l'identificatore dell'ancoraggio nello spazio di Azure che si sta cercando.
- Chiamare Create Watcher (Crea Watcher).
L'applicazione ora inizia a cercare gli ancoraggi nello spazio di Azure noti al servizio Ancoraggi nello spazio di Azure. In altre parole, gli utenti possono individuare gli ancoraggi nello spazio di Azure creati dai relativi peer.
Dopo aver individuato l'ancoraggio nello spazio di Azure, chiamare Stop Watcher (Arresta Watcher) per arrestare Azure Spatial Anchors Watcher (Watcher ancoraggi nello spazio di Azure) e pulire le risorse Watcher.
Il progetto Event Graph (Grafico eventi) finale dovrebbe ora avere un aspetto simile allo screenshot seguente:
Successivo checkpoint di sviluppo
Se si segue il percorso delineato per lo sviluppo con Unreal, tenere presente che si stanno esplorando i blocchi predefiniti fondamentali di MRTK. Da qui è possibile passare al blocco predefinito successivo:
In alternativa, passare alle API e alle funzionalità della piattaforma di realtà mista:
È sempre possibile tornare ai checkpoint per lo sviluppo con Unreal in qualsiasi momento.