Raw Depth API menyediakan data kedalaman untuk gambar kamera yang memiliki akurasi lebih tinggi daripada data Depth API lengkap, tetapi tidak selalu mencakup setiap piksel. Gambar kedalaman mentah, beserta gambar keyakinan pencocokannya, juga dapat diproses lebih lanjut, sehingga aplikasi hanya dapat menggunakan data kedalaman yang memiliki akurasi yang memadai untuk kasus penggunaan masing-masing.
Kompatibilitas perangkat
Depth Mentah tersedia di semua perangkat yang mendukung Depth API. Raw Depth API, seperti Depth API lengkap, tidak memerlukan sensor kedalaman hardware yang didukung, seperti sensor time-of-flight (ToF). Namun, Raw Depth API dan Depth API lengkap menggunakan sensor hardware apa pun yang didukung yang mungkin dimiliki perangkat.
Raw Depth API vs Depth API lengkap
Raw Depth API memberikan estimasi kedalaman dengan akurasi yang lebih tinggi, tetapi gambar kedalaman mentah mungkin tidak menyertakan estimasi kedalaman untuk semua piksel dalam gambar kamera. Sebaliknya, Depth API lengkap memberikan estimasi kedalaman untuk setiap piksel, tetapi data kedalaman per piksel mungkin kurang akurat karena penghalusan dan interpolasi estimasi kedalaman. Format dan ukuran gambar kedalaman sama di kedua API. Hanya kontennya yang berbeda.
Tabel berikut mengilustrasikan perbedaan antara Raw Depth API dan Depth API lengkap menggunakan gambar kursi dan meja di dapur.
API | Hasil | Gambar kamera | Gambar kedalaman | Gambar keyakinan |
---|---|---|---|---|
Raw Depth API |
|
|||
Full Depth API |
|
T/A |
Image keyakinan
Dalam gambar keyakinan yang ditampilkan oleh Raw Depth API, piksel yang lebih terang memiliki nilai keyakinan yang lebih tinggi, dengan piksel putih mewakili keyakinan penuh dan piksel hitam mewakili tidak ada keyakinan. Secara umum, wilayah dalam gambar kamera yang memiliki lebih banyak tekstur, seperti pohon, akan memiliki keyakinan kedalaman mentah yang lebih tinggi daripada wilayah yang tidak memiliki tekstur, seperti dinding kosong. Permukaan tanpa tekstur biasanya menghasilkan keyakinan nol.
Jika perangkat target memiliki sensor kedalaman hardware yang didukung, keyakinan pada area gambar yang cukup dekat dengan kamera kemungkinan akan lebih tinggi, bahkan pada permukaan tanpa tekstur.
Biaya komputasi
Biaya komputasi Raw Depth API adalah sekitar setengah dari biaya komputasi untuk Depth API lengkap.
Kasus penggunaan
Dengan Raw Depth API, Anda bisa mendapatkan gambar kedalaman yang memberikan representasi geometri objek dalam tampilan yang lebih mendetail. Data kedalaman mentah dapat berguna saat membuat pengalaman AR yang memerlukan peningkatan akurasi dan detail kedalaman untuk tugas pemahaman geometri. Beberapa kasus penggunaan mencakup:
- Rekonstruksi 3D
- Pengukuran
- Deteksi bentuk
Prasyarat
Pastikan Anda memahami konsep AR dasar dan cara mengonfigurasi sesi ARCore sebelum melanjutkan.
Mengaktifkan Kedalaman
Dalam sesi ARCore baru, periksa apakah perangkat pengguna mendukung Depth. Tidak semua perangkat yang kompatibel dengan ARCore mendukung Depth API karena keterbatasan daya pemrosesan. Untuk menghemat resource, kedalaman dinonaktifkan secara default di ARCore. Aktifkan mode kedalaman agar aplikasi Anda menggunakan Depth API.
var occlusionManager = // Typically acquired from the Camera game object.
// Check whether the user's device supports the Depth API.
if (occlusionManager.descriptor?.supportsEnvironmentDepthImage)
{
// If depth mode is available on the user's device, perform
// the steps you want here.
}
Mendapatkan gambar kedalaman mentah terbaru
Panggil AROcclusionManager.TryAcquireEnvironmentDepthCpuImage()
dan gunakan AROcclusionManager.environmentDepthTemporalSmoothingRequested
untuk mendapatkan gambar kedalaman mentah terbaru di CPU.
Mendapatkan gambar keyakinan kedalaman mentah terbaru
Panggil AROcclusionManager.TryAcquireEnvironmentDepthConfidenceCpuImage()
dan gunakan AROcclusionManager.environmentDepthTemporalSmoothingRequested
untuk mendapatkan gambar keyakinan di CPU.
// Attempt to get the latest environment depth image.
if (occlusionManager && occlusionManager.TryAcquireEnvironmentDepthConfidenceCpuImage(out XRCpuImage image))
{
using (image)
{
UpdateRawImage(m_RawEnvironmentDepthConfidenceImage, image);
}
}
else
{
m_RawEnvironmentDepthConfidenceImage.enabled = false;
}