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 WindowsSceneUnderstandingObserver
SpatialAwarenessSceneObject 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.
- Zorg ervoor dat het platform is ingesteld op UWP in de build-instellingen.
- 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.
Met deze opties kunt u de WindowsSceneUnderstandingObserver
configureren.
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.
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.