Waarnemers voor scènes begrijpen — MRTK2

Scene Understanding retourneert een semantische weergave van scène-entiteiten en hun geometrische vormen op HoloLens 2 (HoloLens 1e generatie wordt niet ondersteund).

Enkele verwachte gebruiksvoorbeelden van deze technologie zijn:

  • Plaats voorwerpen op het dichtstbijzijnde oppervlak van een bepaald type (bijvoorbeeld wand en vloer)
  • Navigatie-mesh maken voor platformstijlgames
  • Voorzien van fysica engine vriendelijke geometrie als quads
  • De ontwikkeling versnellen door te voorkomen dat vergelijkbare algoritmen moeten worden geschreven

Scene Understanding is geïntroduceerd als een experimentele functie in MRTK 2.6. Het is geïntegreerd in MRTK als een ruimtelijke waarnemer met de naam WindowsSceneUnderstandingObserver. Scene Understanding werkt zowel met de legacy XR-pijplijn als de XR SDK-pijplijn (beide OpenXR (vanaf MRTK 2.7) en de Windows XR-invoegtoepassing). In beide gevallen wordt de WindowsSceneUnderstandingObserver gebruikt.

Notitie

Het gebruik van Scene Understanding in externe communicatie wordt alleen ondersteund in MRTK 2.7.3 en hoger. Alleen projecten met OpenXR worden ondersteund. Projecten die gebruikmaken van de verouderde XR-pijplijn of Windows XR-invoegtoepassing worden niet ondersteund.

Overzicht van waarnemers

Wanneer u hier om wordt gevraagd, retourneert de WindowsSceneUnderstandingObserverSpatialAwarenessSceneObject met kenmerken die nuttig zijn voor de toepassing om de omgeving te begrijpen. De waarnemingsfrequentie, het geretourneerde objecttype (bijv. wand, vloer) en andere waarnemersgedrag zijn afhankelijk van de configuratie van de waarnemer via het profiel. Als het occlusiemasker bijvoorbeeld gewenst is, moet de waarnemer worden geconfigureerd om quads te genereren. De waargenomen scène kan worden opgeslagen als geserialiseerd bestand dat later kan worden geladen om de scène opnieuw te maken in de afspeelmodus van de editor.

Instellen

Belangrijk

Scene Understanding wordt alleen ondersteund op HoloLens 2 en Unity 2019.4 en hoger.

  1. Zorg ervoor dat het platform is ingesteld op UWP in de build-instellingen.
  2. Verkrijg het Scene Understanding-pakket via Mixed Reality Functiehulpprogramma.

Scène begrijpen gebruiken

De snelste manier om aan de slag te gaan met Scene Understanding is door de voorbeeldscène te bekijken.

Scène: voorbeeldscène

Gebruik in Unity De Projectverkenner om het scènebestand te openen en Examples/Experimental/SceneUnderstanding/Scenes/SceneUnderstandingExample.unity druk op Afspelen.

Belangrijk

Alleen van toepassing op MRTK 2.6.0: wanneer u het hulpprogramma Mixed Reality gebruikt of op een andere manier importeert via UPM, moet u het voorbeeld demo's - SpatialAwareness importeren voordat u het voorbeeld Experimental - SceneUnderstanding importeert vanwege een afhankelijkheidsprobleem. Zie dit GitHub-probleem voor meer informatie.

In de scène ziet u het volgende:

  • Visualisatie van geobserveerde scèneobjecten met in de gebruikersinterface van de toepassing voor het configureren van de waarnemer
  • Voorbeeldscript DemoSceneUnderstandingController dat laat zien hoe u instellingen voor waarnemers wijzigt en luistert naar relevante gebeurtenissen
  • Scènegegevens opslaan op het apparaat voor offlineontwikkeling
  • Eerder opgeslagen scènegegevens (.bytes-bestanden) laden ter ondersteuning van de ontwikkelwerkstroom in de editor

Belangrijk

De eigenschap van de ShouldLoadFromFile waarnemer is standaard ingesteld op false. Als u de visualisatie van een geserialiseerde voorbeeldruimte wilt zien, raadpleegt u de sectie waarnemersservice configureren hieronder en stelt u de eigenschap in op true in de editor.

Notitie

De voorbeeldscène is gebaseerd op de verouderde XR-pijplijn. Als u de XR SDK-pijplijn gebruikt, moet u de profielen dienovereenkomstig wijzigen. Het opgegeven Scene Understanding Spatial Awareness System-profiel (DemoSceneUnderstandingSystemProfile) en de Scene Understanding Observer-profielen (DefaultSceneUnderstandingObserverProfile en DemoSceneUnderstandingObserverProfile) werken voor beide pijplijnen.

Notitie

De voorbeeldscène registreert onder bepaalde omstandigheden een There is no active AsyncCoroutineRunner when an action is posted. waarschuwing vanwege de uitvoeringsvolgorde van de initialisatie/thread. Als u kunt bevestigen dat het AsyncCoroutineRunner onderdeel is gekoppeld aan het GameObject democontroller en het onderdeel/GameObject ingeschakeld/actief blijft in de scène (de standaardcase), kan de waarschuwing veilig worden genegeerd. Wanneer u echter een nieuwe scène maakt met Scene Understanding, moet u ervoor zorgen dat u een leeg GameObject in de hoofdmap maakt en het AsyncCoroutineRunner script eraan koppelt, anders werkt Scene Understanding mogelijk niet goed.

De waarnemersservice configureren

Selecteer het gameobject MixedRealityToolkit en controleer de inspector.

scène die de locatie in de hiërarchie begrijpt

MRTK-locatie in inspector

Met deze opties kunt u de WindowsSceneUnderstandingObserverconfigureren.

Voorbeeldscript

Het voorbeeldscript DemoSceneUnderstandingController.cs laat de belangrijkste concepten zien in het werken met de Scene Understanding-service.

  • Abonneren op scène-informatie over gebeurtenissen
  • Gebeurtenissen in scène begrijpen verwerken
  • De tijdens WindowsSceneUnderstandingObserver runtime configureren

De wisselknoppen in het deelvenster in de scène wijzigen het gedrag van scèneverstaand waarnemers door openbare functies van dit voorbeeldscript aan te roepen.

Als u Prefabs instantiëren inschakelt, wordt gedemonstreerd hoe u objecten maakt die zich aanpassen aan alle SpatialAwarenessSceneObject, netjes verzameld onder een bovenliggend object.

opties voor democontroller

Ingebouwde app-notities

Bouw en implementeer op de standaardmethode naar HoloLens. Zodra de uitvoering is uitgevoerd, zou een aantal knoppen moeten lijken om met de functies te spelen.

Opmerking: er zijn enkele fouten in het maken van query's voor de waarnemer. Onjuiste configuratie van een ophaalaanvraag heeft tot gevolg dat de nettolading van de gebeurtenis niet de verwachte gegevens bevat. Als u bijvoorbeeld geen quads aanvraagt, zijn er geen patronen voor occlusiemaskers aanwezig. Net als wijs wordt er geen wereldgaas weergegeven als de waarnemer niet is geconfigureerd om meshes aan te vragen. Het DemoSceneUnderstandingController script zorgt voor een aantal van deze afhankelijkheden, maar niet allemaal.

Opgeslagen scènebestanden zijn toegankelijk via de apparaatportal op User Folders/LocalAppData/[APP_NAME]/LocalState/PREFIX_yyyyMMdd_hhmmss.bytes. Deze scènebestanden kunnen worden gebruikt in de editor door ze op te geven in het waarnemersprofiel in de inspector.

Apparaatportallocatie van bytesbestand

Geserialiseerde scènebytes in waarnemer

Zie ook