ARCore Depth API kini mendukung Geospatial Depth, yang secara otomatis meningkatkan jangkauan dan kecepatan Depth API saat Streetscape Geometry juga diaktifkan. Saat berada di lokasi dengan cakupan VPS dan Streetscape Geometry aktif, gambar output dari Depth API menyertakan medan dan geometri bangunan yang diambil di area tersebut dengan jarak 65 meter dari posisi saat ini. Data kedalaman yang diambil dari geometri ini digabungkan dengan pengamatan kedalaman lokal dan akan diperbarui saat pengguna berpindah ke lokasi baru.
Panggilan ARCore Depth API kini menyediakan pengamatan lokal dari kamera serta bangunan dan medan dari Streetscape Geometry, yang digabungkan menjadi satu gambar kedalaman.
Kompatibilitas perangkat
Geospatial Depth tersedia di semua perangkat yang mendukung Depth API. Fitur ini tidak memerlukan sensor kedalaman hardware yang didukung, seperti sensor waktu terbang (ToF). Namun, Depth API memanfaatkan sensor hardware yang didukung yang mungkin dimiliki perangkat.
Dampak performa
Geospatial Depth memperkenalkan komputasi satu kali yang singkat pada awal sesi untuk mengintegrasikan Streetscape Geometry ke dalam representasi kedalaman saat pertama kali didownload, tetapi sebaliknya tidak meningkatkan biaya komputasi kedalaman secara terukur.
Rentang kedalaman
Tanpa Geospatial Depth, rentang gambar kedalaman yang umum adalah sekitar 20-30 meter, dengan kepadatan dan akurasi pengamatan kedalaman berkurang di luar rentang tersebut. Dengan mengaktifkan Geospatial Depth, biasanya akan terlihat nilai kedalaman yang diambil sampelnya padat yang mencapai maksimum 65,535 meter, walaupun dengan sedikit gerakan awal.
Kasus penggunaan
ARCore Depth API dapat digunakan untuk semua kasus penggunaan yang ada yang sudah didukung. Dengan Geospatial Depth, gambar kedalaman yang diperoleh di lokasi yang didukung VPS akan diisi dengan kedalaman jarak jauh lebih cepat dari sebelumnya, memungkinkan kasus penggunaan yang menargetkan kedalaman jarak jauh di lingkungan luar ruangan. Beberapa kasus penggunaan mencakup:
- Membangun oklusi konten virtual dan efek visual lainnya
- Navigasi luar ruangan
- Pengukuran jarak
Batasan
Geospatial Depth hanya didukung di area yang mendukung pelokalan VPS dan Streetscape Geometry. Di area lain, ARCore Depth API akan berfungsi seperti biasa tanpa nilai Geospasial.
Prasyarat
Pastikan Anda memahami konsep AR dasar dan cara mengonfigurasi sesi ARCore sebelum melanjutkan.
Mengaktifkan Geospatial Depth
Dalam sesi ARCore baru, periksa apakah perangkat pengguna mendukung Depth dan Geospatial API. Tidak semua perangkat yang kompatibel dengan ARCore mendukung Depth API karena keterbatasan daya pemrosesan.
Untuk menghemat resource, depth dinonaktifkan secara default di ARCore. Aktifkan mode kedalaman agar aplikasi Anda menggunakan Depth API. Selain itu, aktifkan mode Geospasial dan Streetscape Geometry untuk menggunakan Geospatial Depth.
Java
Config config = session.getConfig(); // Check whether the user's device supports the Depth API. boolean isDepthSupported = session.isDepthModeSupported(Config.DepthMode.AUTOMATIC); boolean isGeospatialSupported = session.isGeospatialModeSupported(Config.GeospatialMode.ENABLED); if (isDepthSupported && isGeospatialSupported) { // These three settings are needed to use Geospatial Depth. config.setDepthMode(Config.DepthMode.AUTOMATIC); config.setGeospatialMode(Config.GeospatialMode.ENABLED); config.setStreetscapeGeometryMode(Config.StreetscapeGeometryMode.ENABLED); } session.configure(config);
Kotlin
val config = session.config // Check whether the user's device supports the Depth API. val isDepthSupported = session.isDepthModeSupported(Config.DepthMode.AUTOMATIC) val isGeospatialSupported = session.isGeospatialModeSupported(Config.GeospatialMode.ENABLED) if (isDepthSupported && isGeospatialSupported) { // These three settings are needed to use Geospatial Depth. config.depthMode = Config.DepthMode.AUTOMATIC config.geospatialMode = Config.GeospatialMode.ENABLED config.streetscapeGeometryMode = Config.StreetscapeGeometryMode.ENABLED } session.configure(config)
Setelah Geospatial Depth diaktifkan, gambar kedalaman dapat diakses melalui panggilan API yang ada seperti yang dijelaskan di panduan developer kedalaman.
Java
// Retrieve the depth image for the current frame, if available. Image depthImage = null; try { depthImage = frame.acquireDepthImage16Bits(); // Use the depth image here. } catch (NotYetAvailableException e) { // This means that depth data is not available yet. // Depth data will not be available if there are no tracked // feature points. This can happen when there is no motion, or when the // camera loses its ability to track objects in the surrounding // environment. } finally { if (depthImage != null) { depthImage.close(); } }
Kotlin
// Retrieve the depth image for the current frame, if available. try { frame.acquireDepthImage16Bits().use { depthImage -> // Use the depth image here. } } catch (e: NotYetAvailableException) { // This means that depth data is not available yet. // Depth data will not be available if there are no tracked // feature points. This can happen when there is no motion, or when the // camera loses its ability to track objects in the surrounding // environment. }
Langkah selanjutnya
- Pelajari cara menggunakan Streetscape Geometry dalam pengalaman augmented reality Anda.
- Pelajari cara membangun aplikasi Anda sendiri menggunakan Geospatial Depth dengan mempelajari codelab Scene Semantics dan Geospatial Depth.