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