Scentolkningsobservatör – MRTK2
Scenförståelse returnerar en semantisk representation av scenentiteter samt deras geometriska former på HoloLens 2 (HoloLens 1st Gen stöds inte).
Några förväntade användningsfall för den här tekniken är:
- Placera objekt på närmaste yta av ett visst slag (t.ex. vägg och golv)
- Skapa nav-mesh för plattformsspel
- Tillhandahålla fysikmotorn vänlig geometri som quads
- Påskynda utvecklingen genom att undvika behovet av att skriva liknande algoritmer
Scene Understanding introduceras som en experimentell funktion i MRTK 2.6. Det är integrerat i MRTK som en rumslig observatör som heter WindowsSceneUnderstandingObserver
. Scene Understanding fungerar både med den äldre XR-pipelinen och XR SDK-pipelinen (både OpenXR (från MRTK 2.7) och Windows XR Plugin). I båda fallen WindowsSceneUnderstandingObserver
används.
Anteckning
Användning av Scene Understanding i fjärrkommunikation stöds endast i MRTK 2.7.3 och senare. Endast projekt som använder OpenXR stöds. Projekt som använder den äldre XR-pipelinen eller Windows XR-plugin-programmet stöds inte .
Översikt över observatör
När du tillfrågas WindowsSceneUnderstandingObserver
returnerar SpatialAwarenessSceneObject med attribut som är användbara för programmet för att förstå dess omgivning. Observationsfrekvensen, den returnerade objekttypen (t.ex. vägg, golv) och andra observatörsbeteenden är beroende av observatörens konfiguration via profil. Om ocklusionmasken till exempel önskas måste övervakaren konfigureras för att generera quads. Den observerade scenen kan sparas som serialiserad fil som senare kan läsas in för att återskapa scenen i redigeringsprogrammets uppspelningsläge.
Installation
Viktigt
Scentolkning stöds endast på HoloLens 2 och Unity 2019.4 och senare.
- Kontrollera att plattformen är inställd på UWP i bygginställningarna.
- Hämta Scene Understanding-paketet via Mixed Reality funktionsverktyget.
Använda Scentolkning
Det snabbaste sättet att komma igång med Scene Understanding är att kolla in exempelscenen.
Scentolkning – exempelscen
I Unity använder du Projektutforskaren för att öppna scenfilen i Examples/Experimental/SceneUnderstanding/Scenes/SceneUnderstandingExample.unity
och trycka på Spela upp!
Viktigt
Gäller endast för MRTK 2.6.0 – När du använder funktionsverktyget för Mixed Reality eller på annat sätt importerar via UPM importerar du exemplet Demos – SpatialAwareness innan du importerar exemplet Experimental – SceneUnderstanding på grund av ett beroendeproblem. Mer information finns i det här GitHub-problemet .
Scenen visar följande:
- Visualisering av observerade scenobjekt med i programgränssnittet för att konfigurera övervakaren
- Exempelskript
DemoSceneUnderstandingController
som visar hur du ändrar övervakningsinställningar och lyssnar på relevanta händelser - Spara scendata till enheten för offlineutveckling
- Läser in tidigare sparade scendata (.bytes-filer) för att stödja arbetsflöde för utveckling i redigeraren
Viktigt
Som standard ShouldLoadFromFile
är egenskapen för övervakaren inställd på false. Om du vill se visualiseringen av ett serialiserat exempelrum läser du avsnittet Konfigurera observatörstjänst nedan och anger egenskapen till true i redigeraren.
Anteckning
Exempelscenen baseras på den äldre XR-pipelinen. Om du använder XR SDK-pipelinen bör du ändra profilerna i enlighet med detta. Den tillhandahållna profilen För scentolkning av spatial medvetenhet (DemoSceneUnderstandingSystemProfile
) och Scenförstågningsobservatörsprofilerna (DefaultSceneUnderstandingObserverProfile
och DemoSceneUnderstandingObserverProfile
) fungerar för båda pipelines.
Anteckning
Exempelscenen loggar en There is no active AsyncCoroutineRunner when an action is posted.
varning under vissa omständigheter på grund av körningsordningen för initiering/tråd. Om du kan bekräfta att komponenten AsyncCoroutineRunner
är kopplad till "Demo Controller" GameObject och komponenten/GameObject förblir aktiverad/aktiv i scenen (standardfallet), kan varningen ignoreras på ett säkert sätt.
När du skapar en ny scen med Scene Understanding måste du dock skapa en tom GameObject i roten och bifoga skriptet AsyncCoroutineRunner
till den, annars kanske Scentolkning inte fungerar korrekt.
Konfigurera observatörstjänsten
Välj spelobjektet "MixedRealityToolkit" och kontrollera inspektören.
Med de här alternativen kan du konfigurera WindowsSceneUnderstandingObserver
.
Exempelskript
Exempelskriptet DemoSceneUnderstandingController.cs visar de viktigaste begreppen i arbetet med tjänsten Scene Understanding.
- Prenumerera på Scentolkningshändelser
- Hantera scentolkningshändelser
-
WindowsSceneUnderstandingObserver
Konfigurera vid körning
Reglagen på panelen i scenen ändrar beteendet för övervakare av scentolkning genom att anropa offentliga funktioner i det här exempelskriptet.
Om du aktiverar Instansiera prefabs visas hur du skapar objekt som passar sig själva för all SpatialAwarenessSceneObject, som samlats in snyggt under ett överordnat objekt.
Skapade appanteckningar
Skapa och distribuera till HoloLens på standard sätt. När du har kört bör ett antal knappar visas för att leka med funktionerna.
Observera att det finns vissa fallgropar när det gäller att göra frågor till övervakaren. Felaktig konfiguration av en hämtningsbegäran resulterar i att händelsenyttolasten inte innehåller förväntade data. Om man till exempel inte begär quads kommer inga ocklusionsmaskstrukturer att finnas. Som vis visas inget världsnät om observatören inte har konfigurerats för att begära nät. Skriptet DemoSceneUnderstandingController
tar hand om några av dessa beroenden, men inte alla.
Sparade scenfiler kan nås via enhetsportalen på User Folders/LocalAppData/[APP_NAME]/LocalState/PREFIX_yyyyMMdd_hhmmss.bytes
. Dessa scenfiler kan användas i redigeraren genom att ange dem i observatörsprofilen som finns i inspektören.