Delen via


Scène begrijpen

Scènebegrip biedt Mixed Reality ontwikkelaars een gestructureerde omgevingsweergave op hoog niveau die is ontworpen om het ontwikkelen voor milieubewuste toepassingen intuïtief te maken. Scene understanding doet dit door de kracht van bestaande mixed reality-runtimes te combineren, zoals de zeer nauwkeurige maar minder gestructureerde ruimtelijke toewijzing en nieuwe AI-gestuurde runtimes. Door deze technologieën te combineren, genereert Scènebegrip weergaven van 3D-omgevingen die vergelijkbaar zijn met de omgevingen die u mogelijk hebt gebruikt in frameworks zoals Unity of ARKit/ARCore. Het toegangspunt Scène begrijpen begint met een Scèneobservator, die door uw toepassing wordt aangeroepen om een nieuwe scène te berekenen. Tegenwoordig kan de technologie 3 verschillende maar gerelateerde objectcategorieën genereren:

  • Vereenvoudigde waterdichte omgevingsnetten die de planaire ruimtestructuur afleiden zonder rommel
  • Vlakregio's voor plaatsing die we Quads noemen
  • Een momentopname van het ruimtelijk kaartnet dat is afgestemd op de Quads/Watertight-gegevens die we aan het oppervlak hebben

Ruimtelijk kaartgaas, gelabelde planaroppervlakken, waterdicht gaas

Dit document is bedoeld om een scenariooverzicht te bieden en om de relatie te verduidelijken die Scène begrijpen en Ruimtelijke toewijzing delen. Als u Scene Understanding in actie wilt zien, bekijkt u onze videodemo Hologrammen ontwerpen - Ruimtelijk bewustzijn hieronder:

Deze video is afkomstig uit de HoloLens 2-app Hologrammen ontwerpen. Download en geniet hier van de volledige ervaring.

Ontwikkelen met Scene Understanding

Dit artikel is alleen bedoeld om de Scene Understanding-runtime en concepten te introduceren. Als u op zoek bent naar documentatie over het ontwikkelen met Scene Understanding, bent u misschien geïnteresseerd in de volgende artikelen:

Overzicht van Scene Understanding SDK

U kunt de Scene Understanding-voorbeeld-app downloaden van de GitHub-voorbeeldsite:

Voorbeeld van scène

Als u geen apparaat hebt en toegang wilt krijgen tot voorbeeldscènes om Scene Understanding uit te proberen, zijn er scènes in de map met voorbeeldassets:

Scènes begrijpen voorbeeldscènes

SDK

Als u op zoek bent naar specifieke informatie over het ontwikkelen met Scene Understanding, raadpleegt u de overzichtsdocumentatie voor Scene Understanding SDK .

Voorbeeld

Ondersteuning voor apparaten

Functie HoloLens (1e generatie) HoloLens 2 Immersive headsets
Scène begrijpen ✔️

Veelvoorkomende gebruiksscenario's

Illustraties van veelvoorkomende scenario's voor het gebruik van ruimtelijke toewijzingen: plaatsing, occlusie, fysica en navigatie
Algemene gebruiksscenario's voor ruimtelijke toewijzing: plaatsing, occlusie, fysica en navigatie.


Veel van de kernscenario's voor milieubewuste toepassingen kunnen worden aangepakt door zowel ruimtelijke toewijzing als scènebegrip. Deze kernscenario's omvatten plaatsing, occlusie, fysica, enzovoort. Een belangrijk verschil tussen scène-inzicht en ruimtelijke toewijzing is een afweging tussen maximale nauwkeurigheid en latentie ten opzichte van structuur en eenvoud. Als uw toepassing de laagst mogelijke latentie en mesh-driehoeken vereist die alleen u wilt gebruiken, gebruikt u ruimtelijke toewijzing rechtstreeks. Als u verwerkingen op een hoger niveau uitvoert, kunt u overwegen over te schakelen naar het scènebegripmodel, omdat dit u een superset van functionaliteit moet bieden. U hebt altijd toegang tot de meest volledige en nauwkeurige ruimtelijke toewijzingsgegevens die mogelijk zijn, omdat Scènebegrip een momentopname biedt van het mesh voor ruimtelijke toewijzing als onderdeel van de weergave ervan.

In de volgende secties worden de kernscenario's voor ruimtelijke toewijzing opnieuw besproken in de context van de nieuwe Sdk voor Scène-inzicht.

Plaatsing

Begrip van scènes biedt nieuwe constructies die zijn ontworpen om plaatsingsscenario's te vereenvoudigen. Een scène kan primitieven met de naam SceneQuads berekenen, die platte oppervlakken beschrijven waarop hologrammen kunnen worden geplaatst. SceneQuads zijn ontworpen rond plaatsing en beschrijven een 2D-oppervlak en bieden een API voor plaatsing op dat oppervlak. Voorheen moest men bij het gebruik van het driehoeksgaas voor plaatsing alle gebieden van de quad scannen en gaten vullen/nabewerken om goede locaties voor objectplaatsing te identificeren. Dit is niet altijd nodig met Quads, omdat de runtime voor het begrijpen van scènes afgeeft welke quad-gebieden niet zijn gescand en gebieden ongeldig maken die geen deel uitmaken van het oppervlak.

SceneQuads met deductie uitgeschakeld, waarbij plaatsingsgebieden voor gescande regio's worden vastgelegd.
Afbeelding 1 : SceneQuads met deductie uitgeschakeld, waarbij plaatsingsgebieden voor gescande regio's worden vastgelegd.

Quads waarvoor deductie is ingeschakeld, is plaatsing niet langer beperkt tot gescande gebieden.
Afbeelding 2 : quads waarvoor deductie is ingeschakeld, de plaatsing is niet langer beperkt tot gescande gebieden.


Als uw toepassing 2D- of 3D-hologrammen op stijve structuren van uw omgeving wilt plaatsen, verdient de eenvoud en het gemak van SceneQuads voor plaatsing de voorkeur boven het berekenen van deze informatie vanuit het ruimtelijk kaartgaas . Zie de Naslaginformatie over de Sdk voor scènes voor meer informatie over dit onderwerp

Opmerking Voor verouderde plaatsingscode die afhankelijk is van het mesh voor ruimtelijke toewijzing, kan het mesh voor ruimtelijke toewijzing samen met SceneQuads worden berekend door de instelling EnableWorldMesh in te stellen. Als scènebegrip-API niet voldoet aan de latentievereisten van uw toepassing, raden we u aan de API voor ruimtelijke toewijzing te blijven gebruiken.

Occlusie

Occlusie van ruimtelijke toewijzing blijft de minst latente manier om de realtime status van de omgeving vast te leggen. Hoewel dit handig kan zijn om occlusie te bieden in zeer dynamische scènes, kunt u scène-begrip voor occlusie om verschillende redenen overwegen. Als u de mesh voor ruimtelijke toewijzing gebruikt die wordt gegenereerd door Scene Understanding, kunt u gegevens aanvragen van ruimtelijke toewijzing die niet zouden worden opgeslagen in de lokale cache en niet beschikbaar zijn via de perception-API's. Het gebruik van Spatial Mapping voor occlusie naast waterdichte meshes biedt extra waarde, met name voltooiing van niet-gescande ruimtestructuur.

Als uw vereisten de verhoogde latentie van scènebegrip kunnen verdragen, moeten toepassingsontwikkelaars overwegen het waterdichte mesh Scènebegrip en het mesh voor ruimtelijke toewijzing in combinatie met planaire representaties te gebruiken. Dit zou een 'best of both worlds'-scenario opleveren waarin vereenvoudigde waterdichte occlusie wordt gekoppeld aan fijnere niet-planaire geometrie, wat de meest realistische occlusiekaarten mogelijk maakt.

Natuurkunde

Scène-begrip genereert waterdichte meshes die ruimte ontleden met semantiek, met name om veel beperkingen aan de fysica aan te pakken die ruimtelijke kaartgaas opleggen. Waterdichte structuren zorgen ervoor dat fysica straalcasts altijd raken, en semantische ontleding maakt eenvoudigere generatie van navigatiegaas voor navigatie binnenshuis mogelijk. Zoals beschreven in de sectie over occlusie, produceert het maken van een scène met EnableSceneObjectMeshes en EnableWorldMesh de meest fysiek volledige mesh die mogelijk is. De waterdichte eigenschap van het omgevingsnet voorkomt dat hittests oppervlakken raken. De mesh-gegevens zorgen ervoor dat de fysica communiceert met alle objecten in de scène en niet alleen met de ruimtestructuur.

Planaire meshes, opgesplitst door semantische klasse, zijn ideale constructies voor navigatie en padplanning, waardoor veel van de problemen worden versoepeld die worden beschreven in het overzicht van navigatie voor ruimtelijke toewijzing . De SceneMesh-objecten die in de scène worden berekend, worden gedecomponeerd op basis van het type surface, zodat het genereren van navigatiegaas wordt beperkt tot oppervlakken waarop kan worden gelopen. Vanwege de eenvoud van de vloerstructuren is dynamische nav-mesh-generatie in 3d-motoren zoals Unity haalbaar, afhankelijk van realtime vereisten.

Voor het genereren van nauwkeurige nav-meshes is momenteel nog naverwerking vereist, namelijk dat toepassingen nog steeds occluders op de vloer moeten projecteren om ervoor te zorgen dat navigatie niet door rommel/tabellen gaat, enzovoort. De meest nauwkeurige manier om dit te doen, is door de mesh-gegevens van de wereld te projecteert, die worden geleverd als de scène wordt berekend met de vlag EnableWorldMesh.

Visualisatie

Hoewel visualisatie van ruimtelijke kaarten kan worden gebruikt voor realtime feedback over de omgeving, zijn er veel scenario's waarin de eenvoud van planaire en waterdichte objecten zorgt voor meer prestaties of visuele kwaliteit. Schaduwprojectie- en aardingstechnieken die worden beschreven met behulp van ruimtelijke toewijzing, kunnen aangenamer zijn als ze worden geprojecteerd op de planaire oppervlakken van Quads of het vlakdichte gaas. Dit geldt met name voor omgevingen/scenario's waarin grondig vooraf scannen niet optimaal is, omdat de scène dit afneemt en volledige omgevingen en planaire veronderstellingen artefacten minimaliseren.

Bovendien wordt het totale aantal oppervlakken dat door ruimtelijke toewijzing wordt geretourneerd, beperkt door de interne ruimtelijke cache, terwijl de versie van Scene understanding van het mesh Spatial Mapping toegang heeft tot ruimtelijke toewijzingsgegevens die niet in de cache zijn opgeslagen. Daarom is Scènebegrip beter geschikt voor het vastleggen van mesh-weergaven voor grotere ruimten (bijvoorbeeld groter dan een enkele ruimte) voor visualisatie of verdere mesh-verwerking. De wereld-mesh die wordt geretourneerd met EnableWorldMesh heeft overal een consistent detailniveau, wat een aangenamere visualisatie kan opleveren als deze wordt weergegeven als draadmodel.

Zie ook