Grundlegendes zu Szenen

Szenenverständnis bietet Mixed Reality-Entwicklern eine strukturierte, allgemeine Umgebungsdarstellung, die die Entwicklung für umgebungssensible Anwendungen intuitiv macht. Szenenverständnis führt dazu aus, indem sie die Leistungsfähigkeit bestehender Mixed Reality-Runtimes wie die hochgenaue, aber weniger strukturierte räumliche Zuordnung und neue KI-gesteuerte Laufzeiten kombinieren. Durch die Kombination dieser Technologien generiert Szenenverständnis Darstellungen von 3D-Umgebungen, die ähnlich sind wie in Frameworks wie Unity oder ARKit/ARCore. Der Einstiegspunkt "Szenenverständnis" beginnt mit einem Szenenbeobachter, der von Ihrer Anwendung aufgerufen wird, um eine neue Szene zu berechnen. Heute kann die Technologie 3 verschiedene, aber verwandte Objektkategorien generieren:

  • Vereinfachte Wasserdichte Umgebung Gitter, die die Planarraumstruktur ohne Clutter aufleiten
  • Ebene Regionen für die Platzierung, die wir Als Quads aufrufen
  • Eine Momentaufnahme des räumlichen Zuordnungsgitters , das mit den Quads/Watertight-Daten ausgerichtet ist, die wir oberflächen

Spatial mapping mesh, labeled planar surfaces, watertight mesh

Dieses Dokument soll eine Szenarioübersicht bereitstellen und die Beziehung klären, die szenenverständnis und die räumliche Zuordnung freigeben. Wenn Sie das Szenenverständnis in Aktion sehen möchten, lesen Sie unsere Design-Hologramme - Video-Demo für räumliches Bewusstsein unten:

Dieses Video stammt aus der HoloLens 2-App "Entwerfen von Hologrammen". Sie können das vollständige Erlebnis hier herunterladen und genießen.

Entwickeln mit Szenenverständnis

Dieser Artikel dient nur zum Einführen der Szenenverständnis-Laufzeit und -Konzepte. Wenn Sie nach Dokumentation zur Entwicklung mit Szenenverständnis suchen, sind Sie möglicherweise in den folgenden Artikeln interessiert:

Übersicht über das Szenenverständnis-SDK

Sie können die Beispiel-Beispiel-App "Szenenverständnis" auf der GitHub Website herunterladen:

Beispiel für "Szenenverständnis"

Wenn Sie kein Gerät haben und auf Beispielszenen zugreifen möchten, um Szenen zu testen, gibt es Szenen im Beispielobjektordner:

Beispielszenen verstehen

SDK

Wenn Sie nach spezifischen Details zur Entwicklung mit Szenenverständnis suchen, finden Sie in der Übersichtsdokumentation zum Scene Understanding SDK .

Beispiel

Geräteunterstützung

Feature HoloLens (1. Generation) HoloLens 2 Immersive Headsets
Grundlegendes zu Szenen ✔️

Allgemeine Verwendungsszenarios

Illustrations of common Spatial mapping usage scenarios: Placement, Occlusion, Physics and Navigation
Allgemeine Szenarien für die räumliche Zuordnung: Platzierung, Okklusion, Physik und Navigation.


Viele der Kernszenarien für umweltbewusste Anwendungen können sowohl durch räumliche Zuordnungen als auch durch Das Verständnis von Szenen behandelt werden. Diese Kernszenarien umfassen Platzierung, Okklusion, Physik usw. Ein kerner Unterschied zwischen Szenenverständnis und Räumlicher Zuordnung ist ein Handel mit maximaler Genauigkeit und Latenz für Struktur und Einfachheit. Wenn Ihre Anwendung die niedrigste Latenz erfordert und Gitterdreiecks benötigt, auf die nur Sie zugreifen möchten, verwenden Sie die räumliche Zuordnung direkt. Wenn Sie die Verarbeitung höherer Ebene durchführen, sollten Sie möglicherweise zum Szenenverständnismodell wechseln, da sie Ihnen eine Übermenge von Funktionen bieten sollte. Sie haben immer Zugriff auf die vollständigsten und genauen räumlichen Zuordnungsdaten, da das Szenenverständnis eine Momentaufnahme des räumlichen Zuordnungsgitters als Teil seiner Darstellung bereitstellt.

In den folgenden Abschnitten werden die wichtigsten räumlichen Zuordnungsszenarien im Kontext des neuen Szenenverständnis-SDK überarbeitet.

Platzierung

Szenenverständnis bietet neue Konstrukte, die zum Vereinfachen von Platzierungsszenarien konzipiert sind. Eine Szene kann Grundtypen namens SceneQuads berechnen, die flache Oberflächen beschreiben, auf denen Hologramme platziert werden können. SceneQuads wurden um die Platzierung entwickelt und beschreiben eine 2D-Oberfläche und stellen eine API für die Platzierung auf dieser Oberfläche bereit. Zuvor musste man bei Verwendung des Dreiecksgitters die Platzierung aller Bereiche des Quads scannen und die Füllung/Nachverarbeitung durchführen, um gute Standorte für die Objektplatzierung zu identifizieren. Dies ist nicht immer mit Quads erforderlich, da die Szenenverständnis-Laufzeit abgeleitet wird, welche vier Bereiche nicht gescannt wurden, und ungültige Bereiche, die nicht Teil der Oberfläche sind.

SceneQuads with inference disabled, capturing placement areas for scanned regions.
Image #1 - SceneQuads mit deaktivierter Schlussfolgerung, Aufnahme von Platzierungsbereichen für gescannte Regionen.

Quads with inference enabled, placement is no longer limited to scanned areas.
Bild #2 – Quads mit aktivierter Schlussfolgerung, Die Platzierung ist nicht mehr auf gescannte Bereiche beschränkt.


Wenn Ihre Anwendung 2D- oder 3D-Hologramme auf starre Strukturen Ihrer Umgebung platzieren möchte, ist die Einfachheit und Komfort von SceneQuads für die Platzierung vorzuziehen, um diese Informationen aus dem räumlichen Zuordnungsgitter zu berechnen. Weitere Informationen zu diesem Thema finden Sie im Scene Understanding SDK-Referenz

Hinweis Für Legacy-Platzierungscode, der von dem räumlichen Zuordnungsgitter abhängt, kann das räumliche Zuordnungsgitter zusammen mit SceneQuads berechnet werden, indem Sie EnableWorldMesh-Einstellung festlegen. Wenn die Szenenverständnis-API die Latenzanforderungen Ihrer Anwendung nicht erfüllt, empfiehlt es sich weiterhin, die Spatial-Zuordnungs-API zu verwenden.

Okklusion

Die räumliche Zuordnung bleibt die geringste latente Möglichkeit, den Echtzeitzustand der Umgebung zu erfassen. Obwohl dies hilfreich sein kann, um Okklusion in hoch dynamischen Szenen bereitzustellen, möchten Sie möglicherweise das Verständnis von Szenen für die Okklusion aus mehreren Gründen berücksichtigen. Wenn Sie das von Szenenverständnis generierte räumliche Zuordnungsgitter verwenden, können Sie Daten aus der räumlichen Zuordnung anfordern, die nicht im lokalen Cache gespeichert werden und nicht von den Wahrnehmungs-APIs verfügbar sind. Die Verwendung von Räumlichen Zuordnungen für Okklusion neben wasserdichten Gittern bietet zusätzlichen Wert, insbesondere die Fertigstellung der nicht gekannten Raumstruktur.

Wenn Ihre Anforderungen die erhöhte Latenz des Szenenverständnisses tolerieren können, sollten Anwendungsentwickler die Verwendung des Gitters "Szenenverständnis" und das räumliche Zuordnungsgitter mit Planardarstellungen berücksichtigen. Dies wäre ein "bestes von beiden Welten"-Szenario, in dem vereinfachte wasserdichte Okklusion mit feinerer nonplanarer Geometrie verheiratet ist, die die realistischsten Okklusionskarten ermöglicht.

Physische Effekte

Szenenverständnis generiert wasserdichte Gitter, die Raum mit Semantik zersetzen, insbesondere um viele Einschränkungen für Physik zu beheben, die räumliche Zuordnungsgitter erzwingen. Wasserdichte Strukturen stellen sicher, dass physikstrahlige Strahle immer getroffen werden, und die semantische Dekomposition ermöglicht eine einfachere Generation von Navigationsgittern für die Innennavigation. Wie im Abschnitt " Okklusion" beschrieben, wird das Erstellen einer Szene mit EnableSceneObjectMeshes und EnableWorldMesh das physisch vollständige Gitter erzeugt. Die wasserdichte Eigenschaft des Umgebungsgitters verhindert, dass Treffertests nicht auf Oberflächen getroffen werden. Die Gitterdaten stellen sicher, dass Physik mit allen Objekten in der Szene interagieren und nicht nur die Raumstruktur.

Planargitter, die durch semantische Klasse komposiert werden, sind ideal Konstrukte für die Navigations- und Pfadplanung, die viele der in der Navigationsübersicht "Räumliche Zuordnung " beschriebenen Probleme erleichtert. Die in der Szene berechneten SceneMesh-Objekte werden vom Oberflächentyp dekomponiert, um sicherzustellen, dass die Nav-Mesh-Generation auf Oberflächen beschränkt ist, auf die verwiesen werden kann. Aufgrund der Einfachheit der Bodenstrukturen können dynamische Nav-Mesh-Generation in 3d-Motoren wie Unity je nach Echtzeitanforderungen erreicht werden.

Das Generieren präziser Navigationsgitter erfordert derzeit noch nach der Verarbeitung, nämlich anwendungen müssen weiterhin Okcluder auf dem Boden projizieren, um sicherzustellen, dass die Navigation nicht durch Clutter/Tabellen und so weiter geht. Dies ist die genaueste Methode, um die Weltgitterdaten zu projizieren, die bereitgestellt werden, wenn die Szene mit dem EnableWorldMesh-Flag berechnet wird.

Visualisierung

Während die Räumliche Zuordnungsvisualisierung für Echtzeitfeedback der Umgebung verwendet werden kann, gibt es viele Szenarien, in denen die Einfachheit von Planar- und Wassergeschützten Objekten mehr Leistung oder visuelle Qualität bietet. Schattenprojektion und Bodentechniken, die mithilfe von räumlicher Zuordnung beschrieben werden, können einfacher sein, wenn auf den planaren Oberflächen, die von Quads oder dem planaren wasserdichten Gitter bereitgestellt werden, projiziert werden. Dies gilt insbesondere für Umgebungen/Szenarien, in denen eine gründliche Vorabüberprüfung nicht optimal ist, da die Szene inferiert, und vollständige Umgebungen und planaren Annahmen minimieren Artefakte.

Darüber hinaus ist die Gesamtanzahl der von der Räumlichen Zuordnung zurückgegebenen Oberflächen durch den internen räumlichen Cache beschränkt, während die Version des Räumlichen Zuordnungsgitters von Szenenverständnis auf räumliche Zuordnungsdaten zugreifen kann, die nicht zwischengespeichert werden. Aus diesem Grund eignet sich das Szenenverständnis besser zum Erfassen von Gitterdarstellungen für größere Räume (z. B. größer als ein einzelner Raum) für visualisierungs- oder weitere Gitterverarbeitung. Das mit EnableWorldMesh zurückgegebene Weltgitter verfügt über eine einheitliche Detailstufe, die möglicherweise eine ansprechendere Visualisierung ermöglicht, wenn sie als Drahtrahmen gerendert wird.

Weitere Informationen