Tiefeninformationen in Ihrer App mit ARCore für Jetpack XR abrufen

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.