Tiefe sorgt für Realismus

Plattformspezifische Leitfäden

Als App-Entwickler für AR-Apps möchten Sie die virtuelle und die reale Welt für Ihre Nutzer nahtlos miteinander verbinden. Wenn ein Nutzer ein virtuelles Objekt in seine Szene einfügt, soll es so aussehen, als würde es in die reale Welt passen. Wenn Sie eine App für Nutzer entwickeln, die Möbel kaufen möchten, sollen sie sich darauf verlassen können, dass der Sessel, den sie kaufen möchten, in den Raum passt.

Mit der Depth API kann die Kamera eines Geräts die Größe und Form der realen Objekte in einer Szene erkennen. Sie erstellt Tiefenbilder oder Tiefenkarten und verleiht Ihren Apps so eine zusätzliche Ebene des Realismus. Mit den Informationen aus einem Tiefenbild können Sie immersive und realistische Nutzererlebnisse ermöglichen.

Anwendungsfälle für die Entwicklung mit der Depth API

Die Depth API kann für die Verdeckung von Objekten, eine verbesserte Immersion und neuartige Interaktionen verwendet werden, die den Realismus von AR-Erlebnissen erhöhen. Im Folgenden finden Sie einige Möglichkeiten, wie Sie sie in Ihren eigenen Projekten einsetzen können. Beispiele für die Verwendung der Depth API finden Sie in den Beispielszenen im ARCore Depth Lab, in dem verschiedene Möglichkeiten für den Zugriff auf Tiefendaten veranschaulicht werden. Diese Unity-App ist Open Source und auf GitHub verfügbar.

Verdeckung aktivieren

Die Verdeckung, also das genaue Rendern eines virtuellen Objekts hinter realen Objekten, ist für ein immersives AR-Erlebnis von entscheidender Bedeutung. Nehmen wir an, ein Nutzer möchte einen virtuellen Andy in eine Szene einfügen, in der sich neben einer Tür eine Truhe befindet. Wenn Andy ohne Verdeckung gerendert wird, überlappt er unrealistisch mit der Kante der Truhe. Wenn Sie die Tiefe einer Szene verwenden und wissen, wie weit der virtuelle Andy von der Umgebung entfernt ist, z. B. von der Holztruhe, können Sie ihn genau mit Verdeckung rendern, sodass er in seiner Umgebung viel realistischer aussieht.

Szene transformieren

Zeigen Sie Ihren Nutzern eine neue, immersive Welt, indem Sie virtuelle Schneeflocken auf den Armen und Kissen ihrer Sofas landen lassen oder ihr Wohnzimmer in einen nebligen Schleier hüllen. Mit der Depth API können Sie eine Szene erstellen, in der virtuelle Lichter mit realen Objekten interagieren, sich hinter ihnen verbergen und sie neu beleuchten.

Entfernung und Schärfentiefe

Möchten Sie zeigen, dass etwas weit entfernt ist? Mit der Depth API können Sie die Entfernung messen und Effekte für die Schärfentiefe hinzufügen, z. B. den Hintergrund oder Vordergrund einer Szene unscharf machen.

Nutzerinteraktionen mit AR-Objekten ermöglichen

Ermöglichen Sie Nutzern, die Welt über Ihre App zu „berühren“, indem Sie virtuelle Inhalte durch Kollision und Physik mit der realen Welt interagieren lassen. Lassen Sie virtuelle Objekte über reale Hindernisse hinwegfliegen oder virtuelle Paintballs auf einen realen Baum treffen und zerplatzen. Wenn Sie tiefenbasierte Kollision mit der Spielphysik kombinieren, können Sie ein Erlebnis zum Leben erwecken.

Treffertests verbessern

Die Depth API kann verwendet werden, um die Ergebnisse von Treffertests zu verbessern. Treffertests auf Ebenen funktionieren nur auf ebenen Oberflächen mit Textur, während Treffertests auf Tiefe detaillierter sind und auch auf nicht ebenen und texturarmen Oberflächen funktionieren. Das liegt daran, dass bei Treffertests auf Tiefe Tiefeninformationen aus der Szene verwendet werden, um die korrekte Tiefe und Ausrichtung eines Punkts zu bestimmen.

Im folgenden Beispiel stehen die grünen Andys für Standard-Treffertests auf Ebenen und die roten Andys für Treffertests auf Tiefe.

Gerätekompatibilität

Die Depth API wird nur auf Geräten mit der Rechenleistung unterstützt, die für die Tiefe erforderlich ist . Sie muss in ARCore manuell aktiviert werden, wie unter Tiefe aktivieren beschrieben.

Einige Geräte bieten möglicherweise auch einen Hardware-Tiefensensor, z. B. einen Time-of-Flight-Sensor (ToF). Auf der Seite Unterstützte Geräte für ARCore finden Sie eine aktuelle Liste der Geräte, die die Depth API unterstützen, und eine Liste der Geräte, die einen unterstützten Hardware-Tiefensensor wie einen ToF-Sensor haben.

Tiefenbilder

Die Depth API verwendet einen Algorithmus zur Tiefenmessung aus Bewegung, um Tiefenbilder zu erstellen, die eine 3D-Ansicht der Welt ermöglichen. Jedes Pixel in einem Tiefenbild ist mit einer Messung verknüpft, wie weit die Szene von der Kamera entfernt ist. Dieser Algorithmus verwendet mehrere Gerätebilder aus verschiedenen Winkeln und vergleicht sie, um die Entfernung zu jedem Pixel zu schätzen, während der Nutzer sein Smartphone bewegt. Er verwendet selektiv maschinelles Lernen, um die Tiefenverarbeitung zu verbessern, auch bei minimaler Bewegung des Nutzers. Außerdem werden alle zusätzlichen Hardwarekomponenten genutzt, die das Gerät des Nutzers möglicherweise hat. Wenn das Gerät einen speziellen Tiefensensor wie einen ToF-Sensor hat, führt der Algorithmus automatisch Daten aus allen verfügbaren Quellen zusammen. Dadurch wird das vorhandene Tiefenbild verbessert und die Tiefe auch dann ermöglicht, wenn sich die Kamera nicht bewegt. Außerdem wird die Tiefe auf Oberflächen mit wenigen oder keinen Merkmalen, z. B. weißen Wänden, oder in dynamischen Szenen mit sich bewegenden Personen oder Objekten verbessert.

Die folgenden Bilder zeigen ein Kamerabild eines Flurs mit einem Fahrrad an der Wand und eine Visualisierung des Tiefenbilds, das aus den Kamerabildern erstellt wurde. Rote Bereiche sind näher an der Kamera und blaue Bereiche sind weiter entfernt.

Tiefe aus Bewegung

Tiefendaten sind verfügbar, wenn der Nutzer sein Gerät bewegt. Der Algorithmus kann robuste und genaue Tiefenschätzungen in einer Entfernung von 0 bis 65 Metern liefern. Die genauesten Ergebnisse werden erzielt, wenn sich das Gerät in einer Entfernung von einem halben Meter bis etwa fünf Metern von der realen Szene befindet. Bei Erlebnissen, bei denen der Nutzer sein Gerät mehr bewegen muss, werden die Ergebnisse immer besser.

Tiefenbilder erfassen

Mit der Depth API können Sie Tiefenbilder abrufen, die mit jedem Kamerabild übereinstimmen. Ein erfasstes Tiefenbild hat denselben Zeitstempel und dieselben intrinsischen Parameter des Sichtfelds wie die Kamera. Gültige Tiefendaten sind erst verfügbar, nachdem der Nutzer sein Gerät bewegt hat, da die Tiefe aus der Bewegung erfasst wird. Oberflächen mit wenigen oder keinen Merkmalen, z. B. weiße Wände, werden mit einer ungenauen Tiefe verknüpft.

Weiteres Vorgehen

  • Im ARCore Depth Lab werden verschiedene Möglichkeiten für den Zugriff auf Tiefendaten veranschaulicht.