Plattformspezifische Anleitungen
Android (Kotlin/Java)
Android NDK (C)
Unity (AR Foundation)
Unreal Engine
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. Mit diesem Tool können Sie Tiefenbilder oder Tiefenkarten erstellen und so Ihre Apps realistischer gestalten. Sie können die Informationen eines Tiefenbilds nutzen, um ein immersives und realistisches Nutzererlebnis 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 es 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 verstehen, wie weit der virtuelle Andy im Verhältnis zu einer Umgebung wie dem Holzstamm ist, können Sie den Andy mit Verdeckung genau rendern, sodass er in seiner Umgebung viel realistischer wirkt.
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
Die Tiefe kann verwendet werden, um Treffertestergebnisse zu verbessern. Treffertests für Ebenen funktionieren nur auf planaren Oberflächen mit Textur, während Tiefen-Treffertests detaillierter sind und selbst in nicht planaren 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 Prozessorleistung unterstützt, um Tiefe zu unterstützen, und muss manuell in ARCore aktiviert werden, wie unter Tiefe 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.
Tiefenaufnahmen
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 über einen speziellen Tiefensensor (z. B. ToF) verfügt, führt der Algorithmus automatisch Daten aus allen verfügbaren Quellen zusammen. 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 auf Oberflächen mit wenigen oder gar keinen Elementen, z. B. auf 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.
Tiefenschärfe durch Bewegung
Tiefendaten werden verfügbar, wenn der Nutzer sein Gerät bewegt. Der Algorithmus kann zuverlässige Tiefenschätzungen von 0 bis 65 Metern 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 begonnen hat, sein Gerät zu bewegen, 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.