Osservatore di comprensione della scena - MRTK2
Scene Understanding restituisce una rappresentazione semantica delle entità della scena e le relative forme geometriche su HoloLens 2 (HoloLens prima generazione non è supportata).
Alcuni casi d'uso previsti di questa tecnologia sono:
- Posizionare oggetti sulla superficie più vicina di un determinato tipo (ad esempio parete e pavimento)
- Costruire mesh di spostamento per giochi in stile piattaforma
- Fornire geometria descrittiva del motore di fisica come quad
- Accelerare lo sviluppo evitando la necessità di scrivere algoritmi simili
Scene Understanding viene introdotto come funzionalità sperimentale in MRTK 2.6. È integrato in MRTK come osservatore spaziale denominato WindowsSceneUnderstandingObserver
. Scene Understanding funziona sia con la pipeline XR legacy che con la pipeline XR SDK (sia OpenXR (a partire da MRTK 2.7) che con Windows plug-in XR. In entrambi i casi viene usato .WindowsSceneUnderstandingObserver
Nota
L'uso di Scene Understanding nella comunicazione remota è supportato solo in MRTK 2.7.3 e versioni successive. Sono supportati solo i progetti che usano OpenXR. I progetti che usano la pipeline XR legacy o Windows plug-in XR non sono supportati.
Panoramica dell'osservatore
Quando richiesto, restituisce WindowsSceneUnderstandingObserver
SpatialAwarenessSceneObject con attributi utili per l'applicazione per comprendere l'ambiente circostante. La frequenza di osservazione, il tipo di oggetto restituito (ad esempio parete, pavimento) e altri comportamenti osservatore dipendono dalla configurazione dell'osservatore tramite profilo. Ad esempio, se si vuole configurare la maschera di occlusione, l'osservatore deve essere configurato per generare quad. La scena osservata può essere salvata come file serializzato che può essere caricato in un secondo momento per ricreare la scena in modalità di riproduzione dell'editor.
Eseguire la configurazione
Importante
Scene Understanding è supportato solo in HoloLens 2 e Unity 2019.4 e versioni successive.
- Assicurarsi che la piattaforma sia impostata su UWP nelle impostazioni di compilazione.
- Acquisire il pacchetto Scene Understanding tramite Realtà mista Feature Tool.
Uso di Informazioni sulla scena
Il modo più rapido per iniziare a usare Scene Understanding consiste nel controllare la scena di esempio.
Scena di esempio di Comprensione della scena
In Unity usare esplora Project per aprire il file della scena in Examples/Experimental/SceneUnderstanding/Scenes/SceneUnderstandingExample.unity
e premere play.
Importante
Si applica solo a MRTK 2.6.0 : quando si usa lo strumento di funzionalità Realtà mista o si importa in altro modo tramite UPM, importare l'esempio Demo - SpatialAwareness prima di importare l'esempio Sperimentale - SceneUnderstanding a causa di un problema di dipendenza. Per altre informazioni, vedere questo problema GitHub.
La scena illustra quanto segue:
- Visualizzazione degli oggetti scena osservati con nell'interfaccia utente dell'applicazione per la configurazione dell'osservatore
- Script di esempio
DemoSceneUnderstandingController
che illustra come modificare le impostazioni dell'osservatore e ascoltare gli eventi pertinenti - Salvataggio dei dati della scena nel dispositivo per lo sviluppo offline
- Caricamento dei dati della scena salvati in precedenza (file con estensione bytes) per supportare il flusso di lavoro di sviluppo nell'editor
Importante
Per impostazione predefinita, la ShouldLoadFromFile
proprietà dell'osservatore è impostata su false. Per visualizzare la visualizzazione di una sala di esempio serializzata, fare riferimento alla sezione configurazione del servizio observer seguente e impostare la proprietà su true nell'editor.
Nota
La scena di esempio si basa sulla pipeline XR legacy. Se si usa la pipeline XR SDK, è necessario modificare i profili di conseguenza. Il profilo di Scene Understanding Spatial Awareness System (DemoSceneUnderstandingSystemProfile
) e i profili Observer di Scene Understanding (DefaultSceneUnderstandingObserverProfile
e DemoSceneUnderstandingObserverProfile
) funzionano per entrambe le pipeline.
Nota
La scena di esempio registra un There is no active AsyncCoroutineRunner when an action is posted.
avviso in determinate circostanze a causa dell'ordine di inizializzazione/esecuzione del thread. Se puoi confermare che il AsyncCoroutineRunner
componente è collegato al GameObject "Demo Controller" e al componente/GameObject rimane abilitato/attivo nella scena (il caso predefinito), l'avviso può essere ignorato in modo sicuro. Tuttavia, quando si crea una nuova scena con Scene Understanding, assicurarsi di creare un GameObject vuoto alla radice e allegare lo AsyncCoroutineRunner
script, altrimenti Scene Understanding potrebbe non funzionare correttamente.
Configurazione del servizio observer
Selezionare l'oggetto gioco 'MixedRealityToolkit' e controllare il controllo.
Queste opzioni consentiranno di configurare .WindowsSceneUnderstandingObserver
Script di esempio
Lo script di esempio DemoSceneUnderstandingController.cs illustra i concetti principali relativi all'uso del servizio Scene Understanding.
- Sottoscrizione agli eventi di Scene Understanding
- Gestione degli eventi di Scene Understanding
- Configurazione di in
WindowsSceneUnderstandingObserver
fase di esecuzione
Gli interruttori nel pannello nella scena modificano il comportamento dell'osservatore di comprensione della scena chiamando le funzioni pubbliche di questo script di esempio.
L'attivazione di Un'istanza dei prefab illustra la creazione di oggetti che si adattano a tutti Gli oggetti SpatialAwarenessSceneObject, raccolti accuratamente sotto un oggetto padre.
Note dell'app compilate
Compilare e distribuire in HoloLens nel modo standard. Dopo l'esecuzione, dovrebbe apparire un certo numero di pulsanti da riprodurre con le funzionalità.
Si noti che ci sono alcune falle nel fare query all'osservatore. La configurazione errata di una richiesta di recupero comporta il payload dell'evento che non contiene i dati previsti. Ad esempio, se uno non richiede quad, non saranno presenti trame di maschera occlusione. Analogamente, non verrà visualizzata alcuna mesh globale se l'osservatore non è configurato per richiedere mesh. Lo DemoSceneUnderstandingController
script si occupa di alcune di queste dipendenze, ma non tutte.
È possibile accedere ai file della scena salvati tramite il portale di dispositivi all'indirizzo User Folders/LocalAppData/[APP_NAME]/LocalState/PREFIX_yyyyMMdd_hhmmss.bytes
. Questi file della scena possono essere usati nell'editor specificandoli nel profilo osservatore trovato nel controllo.