Scentolkning
Scentolkning ger Mixed Reality utvecklare en strukturerad miljörepresentation på hög nivå som är utformad för att göra utveckling för miljömedvetna program intuitiv. Scenförståelse gör detta genom att kombinera kraften i befintliga mixed reality-runtimes, som 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 scentolkning 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 vattentäta miljönät som härleder planrumsstrukturen utan oreda
- Planregioner för placering som vi kallar Quads
- En ögonblicksbild av det rumsliga mappningsnätet som överensstämmer med de quads/vattentäta data som vi visar
Det här dokumentet är avsett att ge en scenarioöversikt och för att klargöra relationen mellan scentolkning och spatial mappning. Om du vill se Scentolkning i praktiken kan du titta på vår videodemo för design Hologram – Spatial Awareness nedan:
Den här videon togs från appen "Designing Hologram" HoloLens 2. Ladda ned och njut av den fullständiga upplevelsen här.
Utveckla med Scene Understanding
Den här artikeln används endast för att introducera Körning och begrepp för Scene Understanding. 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 exempelappen Scene Understanding från GitHub-exempelwebbplatsen:
Om du inte har någon enhet och vill komma åt exempelscener för att prova Scentolkning finns det scener i exempeltillgångsmappen:
SDK
Om du letar efter specifik information om hur du utvecklar med Scene Understanding kan du läsa översiktsdokumentationen för Scene Understanding SDK .
Exempel
Stöd för enheter
Funktion | HoloLens (första generationen) | HoloLens 2 | Integrerande headset |
Scentolkning | ❌ | ✔️ | ❌ |
Vanliga användningsscenarier
Vanliga användningsscenarier för rumslig mappning: placering, ocklusion, fysik och navigering.
Många av de viktigaste scenarierna för miljömedvetna program kan hanteras med både spatial mappning och scenarier. Dessa kärnscenarier omfattar placering, ocklusion, fysik och så vidare. En viktig skillnad mellan scenförståelse och spatial mappning är en kompromiss mellan maximal noggrannhet och svarstid för struktur och enkelhet. Om ditt program kräver minsta möjliga svarstid och nättrianglar som bara du vill komma åt använder du spatial mappning direkt. Om du utför bearbetning på högre nivå kan du överväga att byta till scentolkningsmodellen eftersom den bör ge dig en superuppsättning funktioner. Du kommer alltid att ha åtkomst till de mest kompletta och exakta spatiala mappningsdata som är möjliga eftersom Scentolkning ger en ögonblicksbild av det rumsliga mappningsnätet som en del av dess representation.
I följande avsnitt går vi tillbaka till scenarierna för rumslig mappning i kontexten för den nya scentolknings-SDK:n.
Placering
Scentolkning ger 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. Tidigare, när du använder triangelnätet för att göra placering, var man tvungen att skanna alla områden i quad 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 Körningsmiljön för scentolkning härleder vilka quad-områden som inte genomsökts och ogiltigförklarar områden som inte är en del av ytan.
Bild #1 – SceneQuads med inferens inaktiverad och hämtar placeringsområden för skannade regioner.
Bild 2 – Quads med slutsatsdragning aktiverad, placeringen är inte längre begränsad till genomsökt område.
Om ditt program har för avsikt att placera 2D- eller 3D-hologram på stela strukturer i din miljö är enkelheten och bekvämligheten med SceneQuads för placering att föredra framför att beräkna den här informationen från det rumsliga mappningsnätet . Mer information om det här avsnittet finns i SDK-referensen för Scentolkning
Observera För äldre placeringskod som är beroende av det rumsliga mappningsnätet kan det rumsliga mappningsnätet beräknas tillsammans med SceneQuads genom att ange inställningen EnableWorldMesh. Om API:et för scentolkning 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 fånga miljöns realtidstillstånd. Även om detta kan vara användbart för att tillhandahålla ocklusion i mycket dynamiska scener, kan du överväga scenförstålelse för ocklusion av flera skäl. Om du använder det rumsliga mappningsnät 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 API:erna för uppfattning. Användning av rumslig mappning för ocklusion tillsammans med vattentäta nät ger extra värde, särskilt slutförande av o genomsökt rumsstruktur.
Om dina krav kan tolerera den ökade svarstiden för scentolkning bör programutvecklare överväga att använda det vattentäta nätet Scene Understanding och det rumsliga mappningsnätet i samförstånd med planarrepresentationer. Detta skulle ge ett "bäst av två världar" scenario där förenklad vattentät ocklusion är gift med finare icke-plan geometri som ger de mest realistiska ocklusionskartor som möjligt.
Fysik
Scentolkning genererar vattentäta nät som sönderdelar utrymme med semantik, särskilt för att åtgärda många begränsningar för fysik som rumsliga mappningsnät medför. Vattentäta strukturer säkerställer att fysikstrålegjutningar alltid träffar, och semantisk nedbrytning möjliggör enklare generation av navnät för inomhusnavigering. Som beskrivs i avsnittet om ocklusion skapar du en scen med EnableSceneObjectMeshes och EnableWorldMesh så fysiskt som möjligt. Miljönätets vattentäta egenskap förhindrar att träfftester misslyckas med att träffa ytor. Nätdata säkerställer att fysiken interagerar med alla objekt i scenen och inte bara rumsstrukturen.
Navigering
Planar-nät som delas upp av semantisk klass är idealiska konstruktioner för navigerings- och sökvägsplanering, vilket underlättar många av de problem som beskrivs i navigeringsöversikten för rumslig mappning . SceneMesh-objekten som beräknas i scenen avkomponeras av yttyp, vilket säkerställer att navigeringsnätgenereringen är begränsad till ytor som kan gås på. På grund av golvkonstruktionernas enkelhet kan dynamisk navigeringsnätgenerering i 3d-motorer som Unity uppnås beroende på realtidskrav.
Att generera korrekta navigeringsnät kräver för närvarande fortfarande efterbearbetning, nämligen att program fortfarande måste projicera occluders på golvet för att säkerställa att navigeringen inte passerar genom röran/tabellerna 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 av miljön, men det finns många scenarier där enkelheten i planar- och vattentäta objekt ger bättre prestanda eller visuell kvalitet. Skuggprojektion och jordningstekniker som beskrivs med hjälp av rumslig mappning kan vara mer tilltalande om de projiceras på planytorna som tillhandahålls av Quads eller det plana vattentäta nätet. Detta gäller särskilt för miljöer/scenarier där noggrann förgenomsökning inte är optimalt eftersom scenen kommer att härleda, och fullständiga miljöer och planarantaganden minimerar artefakter.
Dessutom begränsas det totala antalet ytor som returneras av spatial mappning av den interna rumsliga cachen, medan Scene Understandings version av spatial mappningsnät kan komma åt spatiala mappningsdata som inte cachelagras. Därför passar scentolkning 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 kommer att ha en konsekvent detaljnivå i hela, vilket kan ge en mer tilltalande visualisering om den återges som trådram.