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

XR‑Geräte, für die der Leitfaden gilt
Dieser Leitfaden hilft Ihnen dabei, Erlebnisse für die folgenden Arten von XR-Geräten zu entwickeln.
XR-Headsets
XR-Brille 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 abrufen Session Wenn Sie räumliche Benutzeroberflächen mit Jetpack Compose für XR verbessern möchten, 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 Jetpack XR Runtime 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 = DepthEstimationMode.SMOOTH_ONLY,
)
when (val result = session.configure(newConfig)) {
    is SessionConfigureSuccess -> TODO(/* Success! */)
    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 Roh- 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 liefern dagegen geschätzte Tiefenwerte für jedes Pixel. Die Tiefendaten pro Pixel sind jedoch aufgrund der Glättung und Interpolation der Tiefenschätzungen möglicherweise weniger genau.

Prüfen, ob Tiefenkartenfunktionen verfügbar sind

Die Funktionen sind je nach Gerät unterschiedlich. Geräte mit einer Stereokamera können Tiefenschätzungs-Maps für die linke und rechte Kamera liefern. Ebenso können Geräte mit nur einer Kamera nur Tiefenschätzungs-Karten für die Monokamera bereitstellen.

So prüfen Sie, welche Tiefenkarten vom Gerät unterstützt werden:XrDevice.isRenderingModeSupported

val xrDevice = XrDevice.getCurrentDevice(context)
val hasMonoDepth = xrDevice.isRenderingModeSupported(RenderingMode.MONO)
val hasStereoDepth = xrDevice.isRenderingModeSupported(RenderingMode.STEREO)

Tiefendaten abrufen

So rufen Sie Tiefendaten für eine bestimmte Kamera ab:DepthMap

if (hasStereoDepth) {
    val depthMap = Depth.left(session)
}

Tiefenwerte berechnen

Aus der resultierenden Tiefenkarte können Sie Tiefen- und Konfidenzwerte abrufen:

if (hasStereoDepth) {
    val depthMap = Depth.left(session)
}

Je nach verwendeter Konfigurationseinstellung können Sie mit smoothDepthMap oder rawDepthMap auf die entsprechende Tiefenkarte zugreifen. 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.