Tingkatkan rentang dengan Geospatial Depth

Banner Besar Geospasial Depth

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