Scenförståelse

Scenförståelse ger Mixed Reality utvecklare en strukturerad miljörepresentation på hög nivå som utformats för att göra utveckling för medvetna program intuitiva. Scenförståelse gör detta genom att kombinera kraften i befintliga körningar för mixad verklighet, till exempel den mycket exakta men mindre strukturerade rumsliga mappningen och nya AI-drivna körningar. Genom att kombinera dessa tekniker genererar Scene Understanding representationer av 3D-miljöer som liknar dem som du kan ha använt i ramverk som Unity eller ARKit/ARCore. Startpunkten för scenförståelse börjar med en scenobservatör, som anropas av ditt program för att beräkna en ny scen. I dag kan tekniken generera tre distinkta men relaterade objektkategorier:

  • Förenklade vattentight-miljönät som härar upp planar rumsstrukturen utan oreda
  • Planområden för placering som vi kallar Quads
  • En ögonblicksbild av det rumsliga kartnätet som överensstämmer med quads-/watertight-data som vi visar

Rumsligt kartnät, märkta plana ytor, vattennät

Det här dokumentet är avsett att ge en översikt över scenariot och klargöra relationen som scenförståelse och rumslig mappning delar. Om du vill se Scene Understanding i praktiken kan du titta på videodemonstrationen Designing Hologram - Spatial Awareness nedan:

Den här videon har tagits från appen "Designa Hologram" HoloLens 2. Ladda ned och få en fullständig upplevelse här.

Utveckla med Scene Understanding

Den här artikeln är bara till för att introducera Scene Understanding-körning och koncept. Om du letar efter dokumentation om hur du utvecklar med Scene Understanding kan du vara intresserad av följande artiklar:

Översikt över Scene Understanding SDK

Du kan ladda ned Scene Understanding-exempelappen från GitHub webbplats:

Exempel på scenförståelse

Om du inte har en enhet och vill komma åt exempelscener för att prova Scene Understanding finns det scener i exempeltillgångsmappen:

Scenförståelse – exempelscenarier

SDK

Mer information om hur du utvecklar med Scene Understanding finns i översiktsdokumentationen för Scene Understanding SDK.

Exempel

Stöd för enheter

Funktion HoloLens (första gen) HoloLens 2 Integrerande headset
Scenförståelse ✔️

Vanliga användningsscenarier

Illustrationer av vanliga användningsscenarier för rumslig mappning: Placering, ocklusion, fysik och navigering
Vanliga scenarier för användning av rumslig mappning: placering, ocklusion, fysik och navigering.


Många av de viktigaste scenarierna för medvetna program kan hanteras av både rumslig mappning och scenförståelse. Dessa kärnscenarier omfattar placering, ocklusion, fysik och så vidare. En viktig skillnad mellan scenförståelse och rumslig mappning är en kompromiss mellan maximal noggrannhet och svarstid för struktur och enkelhet. Om ditt program kräver kortast möjliga svarstid och nättanglar som bara du vill komma åt, använder du Spatial Mapping direkt. Om du utför bearbetning på högre nivå kan du överväga att byta till scenförståelsemodellen eftersom den bör ge dig en supermängd av funktioner. Du har alltid åtkomst till de mest fullständiga och korrekta data för rumslig mappning som är möjligt eftersom Scenförståelse ger en ögonblicksbild av det rumsliga kartnätet som en del av dess representation.

I följande avsnitt går vi tillbaka till de grundläggande scenarierna för rumslig mappning i kontexten för den nya Scene Understanding SDK: n.

Placering

Scenförståelse tillhandahåller nya konstruktioner som är utformade för att förenkla placeringsscenarier. En scen kan beräkna primitiver som kallas SceneQuads, som beskriver plana ytor där hologram kan placeras. SceneQuads har utformats kring placering och beskriver en 2D-yta och tillhandahåller ett API för placering på den ytan. När du tidigare använde triangelnätet för att placera var man tvungen att genomsöka alla delar av quaden och göra hålfyllning/efterbearbetning för att identifiera bra platser för objektplacering. Detta är inte alltid nödvändigt med Quads, eftersom scenförståelsekörningen härrar vilka quadområden som inte genomsökts och ogiltigförklarar områden som inte är en del av ytan.

SceneQuads med slutsatsledning inaktiverad och samlar in placeringsområden för skannade regioner.
Bild #1 – SceneQuads med härledning inaktiverad, vilket samlar in placeringsområden för skannade regioner.

Quads med härledning aktiverat, placeringen är inte längre begränsad till genomsökta områden.
Bild #2 – Quads med härledning aktiverat, placeringen är inte längre begränsad till genomsökta områden.


Om ditt program har för avsikt att placera 2D- eller 3D-hologram på fasta strukturer i din miljö är enkelheten och bekvämligheten med SceneQuads för placering bättre än att beräkna den här informationen från det rumsliga kartnätet. Mer information om det här avsnittet finns i Scene Understanding SDK-referensen

Obs! För äldre placeringskod som är beroende av det rumsliga kartnätet kan du beräkna det rumsliga kartnätet tillsammans med SceneQuads genom att ange inställningen EnableWorldMesh. Om API:et för scenförståelse inte uppfyller programmets svarstidskrav rekommenderar vi att du fortsätter att använda API:et för rumslig mappning.

Ocklusion

Ocklusion för rumslig mappning är fortfarande det minst latenta sättet att avbilda miljöns realtidstillstånd. Även om detta kan vara användbart för att ge ocklusion i mycket dynamiska scener, kan du överväga scenförståelse för ocklusion av flera skäl. Om du använder det spatiala mappningsnätet som genereras av Scene Understanding kan du begära data från rumslig mappning som inte skulle lagras i det lokala cacheminnet och som inte är tillgängliga från perception-API:erna. Om du använder spatial mappning för ocklusion tillsammans med vattentighta nät får du extra värde, särskilt slutförande av oskadd rumsstruktur.

Om dina krav kan tolerera den ökade svarstiden för scenförståelse bör programutvecklare överväga att använda scenförståelse för vattennät och det rumsliga mappningsnätet tillsammans med planära representationer. Detta skulle ge ett "bäst av båda världarna"-scenario där förenklad watertight-ocklusion är ocklusion med finare icke-planär geometri som ger de mest realistiska ocklusionskartor som är möjliga.

Fysik

Scenförståelse genererar vattentäta nät som bryts ned med semantik, särskilt för att hantera många begränsningar för fysiken som nät för rumslig mappning medför. Vattensightstrukturer säkerställer att fysikens ray casts alltid träffar, och semantisk nedbrytning möjliggör enklare generering av navigeringsnät för inomhusnavigering. Enligt beskrivningen i avsnittet om ocklusionskapar du en scen med EnableSceneObjectMeshes och EnableWorldMesh så fysiskt fullständigt nät som möjligt. Egenskapen watertight för miljönätet förhindrar att träffar på tester misslyckas med att träffa ytor. Nätdata ser till att fysiken interagerar med alla objekt i scenen och inte bara rummets struktur.

Planarnät som är indelade i semantisk klass är idealiska konstruktioner för navigering och sökvägsplanering, vilket gör det enkelt att lösa många av de problem som beskrivs i översikten över navigeringen för rumslig mappning. SceneMesh-objekten som beräknas i scenen är avdelade efter yttyp, vilket säkerställer att genereringen av navnät är begränsad till ytor som kan gås på. Tack vare enkelheten i golvstrukturerna går det att uppnå dynamisk generering av navnät i 3d-motorer som Unity beroende på kraven i realtid.

Att generera korrekta navnät kräver för närvarande fortfarande efterbearbetning, nämligen att program fortfarande måste projicera ockluders på golv för att säkerställa att navigeringen inte passerar genom oreda/tabeller och så vidare. Det mest exakta sättet att åstadkomma detta är att projicera World Mesh-data, som tillhandahålls om scenen beräknas med flaggan EnableWorldMesh.

Visualisering

Visualisering av rumslig mappning kan användas för feedback i realtid för miljön, men det finns många scenarier där enkelheten med planar- och vattentight-objekt ger bättre prestanda eller visuell kvalitet. Skuggprojektion och marktekniker som beskrivs med rumslig mappning kan vara mer tilltalande om de projiceras på planarytorna som tillhandahålls av Quads eller det plana watertight-nätet. Detta gäller särskilt för miljöer/scenarier där grundlig förgenomsökning inte är optimal eftersom scenen kommer att dra slutsatsen, och fullständiga miljöer och planeringsantaganden minimerar artefakter.

Dessutom begränsas det totala antalet ytor som returneras av spatial mappning av den interna spatiala cachen, medan Scene Understandings version av mesh för rumslig mappning kan komma åt rumsliga mappningsdata som inte cachelagras. Därför passar scenförståelse bättre för att samla in nätrepresentationer för större utrymmen (till exempel större än ett enda rum) för visualisering eller ytterligare nätbearbetning. World Mesh som returneras med EnableWorldMesh har en konsekvent detaljnivå genomgående, vilket kan ge en mer tilltalande visualisering om den återges som trådram.

Se även