Osservatore della comprensione della scena - MRTK2

La comprensione della scena restituisce una rappresentazione semantica delle entità della scena e le relative forme geometriche in HoloLens 2 (HoloLens 1st Gen non è supportata).

Alcuni casi d'uso previsti di questa tecnologia sono:

  • Posizionare gli oggetti sulla superficie più vicina di un determinato tipo (ad esempio parete e pavimento)
  • Costruire nav-mesh per giochi di 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 il plug-in Windows XR. In entrambi i casi viene WindowsSceneUnderstandingObserver usato.

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 il plug-in Windows XR non sono supportati.

Panoramica dell'osservatore

Quando richiesto, l'oggetto WindowsSceneUnderstandingObserver restituirà SpatialAwarenessSceneObject con attributi utili per l'applicazione per comprendere l'ambiente circostante. La frequenza di osservazione, il tipo di oggetto restituito (ad esempio muro, pavimento) e altri comportamenti di osservatore dipendono dalla configurazione dell'osservatore tramite profilo. Ad esempio, se la maschera di occlusione è desiderata, l'osservatore deve essere configurato per generare quad. La scena osservata può essere salvata come file serializzato che può essere caricato in seguito per ricreare la scena in modalità di riproduzione dell'editor.

Installazione

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 Strumento funzionalità.

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 delle scene

In Unity usare Esplora progetti 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 in caso contrario si importa tramite UPM, importare l'esempio Demos - SpatialAwareness prima di importare l'esempio Sperimentale - SceneUnderstanding a causa di un problema di dipendenza. Per altre informazioni, vedere questo problema di 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 byte) per supportare il flusso di lavoro di sviluppo in-editor

Importante

Per impostazione predefinita, la ShouldLoadFromFile proprietà dell'osservatore è impostata su false. Per visualizzare la visualizzazione di una sala di esempio serializzata, vedere la sezione configurazione del servizio osservatore 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 di conseguenza i profili. Il profilo del sistema di consapevolezza spaziale () fornito e i profili dell'osservatore di Scene Understanding (DemoSceneUnderstandingSystemProfileDefaultSceneUnderstandingObserverProfilee 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 è possibile verificare che il AsyncCoroutineRunner componente sia collegato a "Demo Controller" GameObject e il componente/GameObject rimanga 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 nella radice e collegare lo AsyncCoroutineRunner script a esso, in caso contrario, Scene Understanding potrebbe non funzionare correttamente.

Configurazione del servizio di osservatore

Selezionare l'oggetto gioco 'MixedRealityToolkit' e controllare il controllo.

posizione di comprensione della scena nella gerarchia

Posizione MRTK nel controllo

Queste opzioni consentono di configurare .WindowsSceneUnderstandingObserver

Script di esempio

Lo script di esempio DemoSceneUnderstandingController.cs illustra i concetti principali dell'uso del servizio Scene Understanding.

  • Sottoscrizione agli eventi di Scene Understanding
  • Gestione degli eventi di Gestione delle scene
  • Configurazione dell'oggetto WindowsSceneUnderstandingObserver in fase di esecuzione

L'interruttore nel pannello nella scena modifica il comportamento dell'osservatore della scena chiamando funzioni pubbliche di questo script di esempio.

L'attivazione di Istanze prefab mostrerà la creazione di oggetti che si adattano a tutti Gli oggetti SpatialAwarenessSceneObject, raccolti in modo ordinato sotto un oggetto padre.

Opzioni del controller demo

Note dell'app compilate

Compilare e distribuire in HoloLens nel modo standard. Dopo l'esecuzione, un numero di pulsanti dovrebbe essere riprodotto con le funzionalità.

Si noti che ci sono alcuni pit cade 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 maschera di occlusione. Come saggio, nessuna mesh mondiale verrà visualizzata se l'osservatore non è configurato per richiedere mesh. Lo DemoSceneUnderstandingController script si occupa di alcune di queste dipendenze, ma non tutte.

I file di scena salvati possono essere accessibili tramite il portale del dispositivo in User Folders/LocalAppData/[APP_NAME]/LocalState/PREFIX_yyyyMMdd_hhmmss.bytes. Questi file di scena possono essere usati nell'editor specificandoli nel profilo osservatore trovato nel controllo.

Percorso del portale dispositivi di byte

Byte di scena serializzati nell'osservatore

Vedere anche