Aplikasi Anda dapat mengambil informasi kedalaman melalui ARCore untuk Jetpack XR guna menentukan seberapa dekat objek fisik dengan perangkat.
Membuat sesi ARCore untuk Jetpack XR
Dapatkan informasi kedalaman melalui ARCore untuk Jetpack XR
Session. Jika Anda meningkatkan kualitas UI spasial menggunakan Jetpack Compose
untuk XR, akses sesi dari Jetpack Compose untuk XR. Jika Anda menggunakan
entity spasial dari library Jetpack SceneCore, akses
sesi dari Jetpack XR Runtime.
Mengonfigurasi sesi
Pengambilan peta kedalaman tidak diaktifkan secara default pada sesi XR. Untuk mengaktifkan pengambilan peta kedalaman, konfigurasikan sesi dan tetapkan DepthEstimationMode:
val newConfig = Config.Builder(session.config) .setDepthEstimation(DepthEstimationMode.SMOOTH_ONLY) .build() when (val result = session.configure(newConfig)) { is SessionConfigureSuccess -> TODO(/* Success! */) else -> TODO(/* The session could not be configured. See SessionConfigureResult for possible causes. */) }
Nilai DepthEstimationMode berikut tersedia:
DISABLED: Tidak ada informasi tentang kedalaman scene yang diberikan.RAW_ONLY: Estimasi kedalaman diaktifkan dengan nilai kedalaman mentah dan keyakinan.SMOOTH_ONLY: Estimasi kedalaman diaktifkan dengan nilai kedalaman dan keyakinan yang halus.SMOOTH_AND_RAW: Estimasi kedalaman diaktifkan dengan nilai kedalaman dan tingkat keyakinan mentah dan halus.
Peta kedalaman mentah memberikan estimasi kedalaman dengan akurasi yang lebih tinggi, tetapi gambar kedalaman mentah mungkin tidak menyertakan estimasi kedalaman untuk semua piksel dalam gambar kamera. Sebaliknya, peta kedalaman yang halus memberikan perkiraan kedalaman untuk setiap piksel, tetapi data kedalaman per piksel mungkin kurang akurat karena penghalusan dan interpolasi perkiraan kedalaman.
Memeriksa kemampuan peta kedalaman
Perangkat yang berbeda memiliki kemampuan yang berbeda. Perangkat dengan konfigurasi kamera stereo dapat memberikan peta estimasi kedalaman untuk kamera kiri dan kanan. Demikian pula, perangkat dengan kamera tunggal hanya dapat memberikan peta estimasi kedalaman untuk kamera mono.
Untuk memeriksa peta kedalaman yang didukung oleh perangkat, gunakan
XrDevice.isRenderingModeSupported:
val xrDevice = XrDevice.getCurrentDevice(context) val hasMonoDepth = xrDevice.isRenderingModeSupported(RenderingMode.MONO) val hasStereoDepth = xrDevice.isRenderingModeSupported(RenderingMode.STEREO)
Mengambil data kedalaman
Untuk mendapatkan data kedalaman untuk kamera tertentu, gunakan Depth:
if (hasStereoDepth) { val depthMap = Depth.left(session) }
Menghitung nilai kedalaman
Anda dapat memperoleh nilai kedalaman dan tingkat keyakinan dari peta kedalaman yang dihasilkan:
if (hasStereoDepth) { val depthMap = Depth.left(session) }
Bergantung pada setelan konfigurasi yang digunakan, akses peta kedalaman yang sesuai menggunakan smoothDepthMap atau rawDepthMap. Pengukuran yang terdapat dalam peta ini
dinyatakan dalam meter. Anda juga dapat mengakses tingkat keyakinan menggunakan smoothConfidenceMap dan rawConfidenceMap. Nilai ini berkisar antara 0 hingga 255,
dengan 255 mewakili keyakinan tertinggi.
Untuk merender peta kedalaman untuk tujuan debug atau visualisasi, lihat Bagian kedalaman aplikasi pengujian ARCore.