Share via


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.

  1. Kontrollera att plattformen är inställd på UWP i bygginställningarna.
  2. 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.

plats för scentolkning i hierarkin

MRTK-plats i 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.

demokontrollantalternativ

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

Platsen för byte-filen i enhetsportalen

Serialiserade scenbyte i observatör

Se även