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

Anwendbare XR‑Geräte
Dieser Leitfaden hilft Ihnen dabei, Erlebnisse für diese Arten von XR-Geräten zu entwickeln.
XR-Headsets
XR-Datenbrille mit Kabel

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

Tiefeninformationen über ARCore für Jetpack XR Session abrufen. Wenn Sie die räumliche Benutzeroberfläche mit Jetpack Compose für XR verbessern, greifen Sie auf eine Sitzung von Jetpack Compose für XR zu. Wenn Sie mit räumlich angeordneten Einheiten aus der Jetpack SceneCore-Bibliothek arbeiten, greifen Sie über die Jetpack XR-Laufzeit auf eine Sitzung zu.

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 einen 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 Vertrauenswerten aktiviert.

Rohe Tiefenkarten liefern genauere Tiefenschätzungen, aber rohe Tiefenbilder enthalten möglicherweise keine Tiefenschätzungen für alle Pixel im Kamerabild. 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.