Ihre App kann über ARCore für Jetpack XR Tiefeninformationen abrufen, um zu ermitteln, wie nah physische Objekte am Gerät sind.
ARCore für Jetpack XR-Sitzung erstellen
Kopfhaltungsinformationen über eine ARCore für Jetpack XR-Sitzung abrufen.
Informationen zum Abrufen eines Session
finden Sie unter Lebenszyklus einer Sitzung.
Sitzung konfigurieren
Das Abrufen von Tiefenkarten ist in XR-Sitzungen nicht standardmäßig aktiviert. Um das Abrufen von Tiefenkarten zu aktivieren, konfigurieren Sie die Sitzung und legen Sie ein DepthEstimationMode
fest:
val newConfig = session.config.copy( depthEstimation = Config.DepthEstimationMode.SMOOTH_ONLY, ) when (val result = session.configure(newConfig)) { is SessionConfigureSuccess -> TODO(/* Success! */) is SessionConfigureConfigurationNotSupported -> TODO(/* Some combinations of configurations are not valid. Handle this failure case. */) else -> TODO(/* The session could not be configured. See SessionConfigureResult for possible causes. */) }
Die folgenden Werte für DepthEstimationMode
sind verfügbar:
DISABLED
: Es werden keine Informationen zur Tiefe der Szene bereitgestellt.RAW_ONLY
: Die Tiefenschätzung ist mit Rohdaten für Tiefe und Vertrauen aktiviert.SMOOTH_ONLY
: Die Tiefenschätzung ist mit geglätteten Tiefen- und Vertrauenswerten aktiviert.SMOOTH_AND_RAW
: Die Tiefenschätzung ist mit rohen und geglätteten Tiefen- und Konfidenzwerten aktiviert.
Rohe Tiefenkarten liefern genauere Tiefenschätzungen, aber rohe Tiefenbilder enthalten möglicherweise nicht für alle Pixel im Kamerabild Tiefenschätzungen. Die geglätteten Tiefenkarten hingegen liefern eine geschätzte Tiefe für jedes Pixel. Die Tiefendaten pro Pixel sind jedoch aufgrund der Glättung und Interpolation der Tiefenschätzungen möglicherweise weniger genau.
Tiefendaten abrufen
So rufen Sie Tiefendaten für eine bestimmte Kamera ab:DepthMap
val depthMap = DepthMap.left(session) ?: return
Die Funktionen sind je nach Gerät unterschiedlich. Geräte mit einer Stereokamera-Konfiguration geben für die Kameras left
und right
nicht leere Tiefenkarten zurück.
Ebenso geben Geräte mit einer einzelnen Kamera eine nicht leere Tiefenkarte mit mono
zurück.
Tiefenwerte berechnen
Aus der resultierenden Tiefenkarte können Sie Tiefen- und Konfidenzwerte abrufen:
val depthMap = DepthMap.left(session) ?: return
Je nach verwendeter Konfigurationseinstellung greifen Sie mit smoothDepthMap
oder rawDepthMap
auf die entsprechende Tiefenkarte zu. Die in diesen Karten enthaltenen Messungen werden in Metern angegeben. Sie können auch mit smoothConfidenceMap
und rawConfidenceMap
auf die Vertrauenswerte zugreifen. Die Werte reichen von 0 bis 255, wobei 255 die höchste Konfidenz darstellt.
Informationen zum Rendern einer Tiefenkarte zu Debugging- oder Visualisierungszwecken finden Sie im Tiefenbereich der ARCore-Test-App.