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 WindowsSceneUnderstandingObserverSpatialAwarenessSceneObject 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.

  1. Assicurarsi che la piattaforma sia impostata su UWP nelle impostazioni di compilazione.
  2. 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.

scene understanding location in hierarchy

MRTK location in inspector

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.

demo controller options

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.

Device Portal location of bytes file

Serialized scene bytes in observer

Vedere anche