Tiefe sorgt für Realismus

Plattformspezifische Anleitungen

Als Entwickler von AR-Apps möchten Sie die virtuelle Welt für Ihre Nutzer nahtlos in die reale Welt einbinden. Wenn ein Nutzer ein virtuelles Objekt in seine Szene einfügt, möchte er, dass es so aussieht, als würde es zur realen Welt gehören. Wenn Sie eine App entwickeln, mit der Nutzer Möbel kaufen können, sollten sie sich darauf verlassen können, dass der Sessel, den sie kaufen möchten, in ihren Raum passt.

Die Depth API hilft der Kamera eines Geräts, die Größe und Form der realen Objekte in einer Szene zu ermitteln. Sie erstellt Tiefenbilder oder Tiefenkarten und verleiht Ihren Apps so einen realistischen Touch. Sie können die Informationen eines Tiefenbilds nutzen, um eine immersive und realistische User Experience zu ermöglichen.

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

Die Depth API kann Objektausblendungen, eine verbesserte Immersion und neue Interaktionen ermöglichen, die den Realismus von AR-Erlebnissen steigern. Im Folgenden finden Sie einige Möglichkeiten, wie Sie sie in Ihren eigenen Projekten verwenden können. Beispiele für die Funktionsweise von Depth finden Sie in den Beispielszenen im ARCore Depth Lab, in denen verschiedene Möglichkeiten zum Zugriff auf Tiefendaten demonstriert werden. Diese Unity-App ist Open Source und auf GitHub verfügbar.

Okklusion aktivieren

Occlusion, also das korrekte Rendern eines virtuellen Objekts hinter realen Objekten, ist für ein immersives AR-Erlebnis unerlässlich. Angenommen, ein Nutzer möchte den virtuellen Andy in einer Szene platzieren, die einen Koffer neben einer Tür enthält. Wenn Andy ohne Okklusion gerendert wird, überlappt er sich unnatürlich mit dem Rand des Stamms. Wenn Sie die Tiefe einer Szene nutzen und wissen, wie weit der virtuelle Andy von der Umgebung wie dem Holzstamm entfernt ist, können Sie ihn genau mit Okklusion rendern, wodurch er in seiner Umgebung viel realistischer erscheint.

Szenen transformieren

Zeigen Sie Ihren Nutzern eine neue, immersive Welt, indem Sie virtuelle Schneeflocken rendern, die sich auf den Armlehnen und Kissen ihrer Sofas niederlassen, oder ihr Wohnzimmer in einen nebligen Dunst hüllen. Mit Depth kannst du eine Szene erstellen, in der virtuelle Lichter mit realen Objekten interagieren, sich hinter ihnen verstecken und sie neu beleuchten.

Entfernung und Schärfentiefe

Sie möchten zeigen, dass etwas weit entfernt ist? Sie können die Entfernungsmessung verwenden und mit der Depth API Tiefenschärfeeffekte hinzufügen, z. B. einen Hintergrund oder Vordergrund einer Szene unscharfstellen.

Nutzerinteraktionen mit AR-Objekten ermöglichen

Bieten Sie Nutzern die Möglichkeit, die Welt über Ihre App zu „berühren“, indem Sie virtuelle Inhalte ermöglichen, die durch Kollisionen und physikalische Gesetze mit der realen Welt interagieren. Lassen Sie virtuelle Objekte über reale Hindernisse hinwegfliegen oder virtuelle Paintballs auf einen echten Baum spritzen. Wenn Sie die höhenbasierte Kollision mit der Spielphysik kombinieren, können Sie Ihre Spiele zum Leben erwecken.

Treffertests verbessern

Mit der Tiefe können Sie die Ergebnisse von Treffertests verbessern. Ebenen-Kollisionstests funktionieren nur auf ebenen Oberflächen mit Textur, während Tiefen-Kollisionstests detaillierter sind und auch auf nicht ebenen Flächen und Bereichen mit wenig Textur funktionieren. Das liegt daran, dass bei Tiefen-Treffertests Tiefeninformationen aus der Szene verwendet werden, um die richtige Tiefe und Ausrichtung eines Punkts zu bestimmen.

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

Gerätekompatibilität

Die Depth API wird nur auf Geräten mit ausreichender Rechenleistung unterstützt. Sie muss manuell in ARCore aktiviert werden, wie unter Depth aktivieren beschrieben.

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

Tiefenbilder

Die Depth API verwendet einen Algorithmus für die Tiefenerfassung aus Bewegung, um Tiefenbilder zu erstellen, die eine 3D-Ansicht der Welt bieten. Jedem Pixel in einem Tiefenbild wird ein Wert zugeordnet, der angibt, wie weit die Szene von der Kamera entfernt ist. Dieser Algorithmus nimmt mehrere Gerätebilder aus verschiedenen Winkeln auf und vergleicht sie, um die Entfernung zu jedem Pixel zu schätzen, während ein Nutzer sein Smartphone bewegt. Dabei wird selektiv maschinelles Lernen eingesetzt, um die Tiefenverarbeitung zu verbessern, selbst bei minimaler Bewegung des Nutzers. Außerdem wird jede zusätzliche Hardware genutzt, die sich auf dem Gerät des Nutzers befindet. Wenn das Gerät einen speziellen Tiefensensor wie ToF hat, werden die Daten aus allen verfügbaren Quellen automatisch zusammengeführt. Dadurch wird das vorhandene Tiefenbild verbessert und die Tiefenerkennung funktioniert auch dann, wenn sich die Kamera nicht bewegt. Außerdem sorgt sie für mehr Tiefe bei Oberflächen mit wenigen oder gar keinen Details, z. B. bei weißen Wänden, oder in dynamischen Szenen mit sich bewegenden Personen oder Objekten.

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

Tiefeneffekt durch Bewegung

Tiefendaten werden verfügbar, wenn der Nutzer sein Gerät bewegt. Der Algorithmus kann zuverlässige, genaue Tiefenschätzungen von 0 bis 65 Metern Entfernung liefern. Die genauesten Ergebnisse werden erzielt, wenn sich das Gerät zwischen einem halben Meter und etwa fünf Metern von der realen Szene entfernt befindet. Je mehr Nutzer ihr Gerät bewegen, desto besser werden die Ergebnisse.

Tiefenbilder aufnehmen

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

Weiteres Vorgehen

  • Im ARCore Depth Lab werden verschiedene Möglichkeiten zum Zugriff auf Tiefendaten veranschaulicht.