Menggunakan gedung dan medan di sekitar Anda di Android SDK (Kotlin/Java)

Streetscape Geometry API menyediakan geometri medan, bangunan, atau struktur lain dalam adegan. Geometri dapat digunakan untuk oklusi, rendering, atau penempatan konten AR melalui API hit-test. Data Streetscape Geometry diperoleh melalui citra Google Street View.

Coba sampel

Aplikasi contoh geospatial_java menunjukkan cara mendapatkan dan merender Streetscape Geometri.

Menyiapkan Geospatial API

Untuk menggunakan Streetscape Geometry, Anda harus menyiapkan Geospatial API dalam project. Ikuti petunjuk tentang Mengaktifkan Geospatial API untuk menyiapkan Geospatial API.

Aktifkan Streetscape Geometry

Geospatial API mendapatkan data Streetscape Geometry jika GeospatialMode disetel ke GeospatialMode.ENABLED dan StreetscapeGeometryMode disetel ke StreetscapeGeometryMode.ENABLED.

Java

Config config = session.getConfig();
// Streetscape Geometry requires the Geospatial API to be enabled.
config.setGeospatialMode(Config.GeospatialMode.ENABLED);
// Enable Streetscape Geometry.
config.setStreetscapeGeometryMode(Config.StreetscapeGeometryMode.ENABLED);
session.configure(config);

Kotlin

session.configure(
  session.config.apply {
    // Streetscape Geometry requires the Geospatial API to be enabled.
    geospatialMode = Config.GeospatialMode.ENABLED
    // Enable Streetscape Geometry.
    streetscapeGeometryMode = Config.StreetscapeGeometryMode.ENABLED
  }
)

Mendapatkan Streetscape Geometry dalam sesi ARCore

Gunakan Session.getAllTrackables() dan gunakan StreetscapeGeometry.class untuk memfilter hasil.

Java

session.getAllTrackables(StreetscapeGeometry.class);

Kotlin

session.getAllTrackables(StreetscapeGeometry::class.java)

Memahami StreetscapeGeometry

StreetscapeGeometry berisi informasi tentang bangunan:

LOD bangunan 1

StreetscapeGeometry.Quality.BUILDING_LOD_1 terdiri dari jejak bangunan yang diekstrusi ke atas hingga datar. Tinggi bangunan mungkin tidak akurat.

LOD 2 bangunan

StreetscapeGeometry.Quality.BUILDING_LOD_2 akan memiliki geometri fidelitas yang lebih tinggi. Dinding dan atap jaring akan lebih mendekati bentuk bangunan. Bagian yang lebih kecil seperti cerobong atau ventilasi atap mungkin masih muncul di luar jaring.

Memahami Mesh

Mesh adalah mesh poligon yang mewakili rekonstruksi permukaan Geometri Streetscape. Setiap Mesh menyertakan buffering verteks dan buffering indeks:

Melampirkan konten AR ke StreetscapeGeometry

Ada dua cara untuk melampirkan konten AR ke Streetscape Geometry:

Menjalankan hit-test terhadap StreetscapeGeometry

Frame.hitTest() dapat digunakan untuk hit-test terhadap Streetscape Geometry. Jika ditemukan persimpangan, HitResult berisi informasi pose tentang lokasi hit serta referensi ke StreetscapeGeometry yang dihasilkan. Streetscape Geometry ini dapat diteruskan ke Trackable.createAnchor() untuk membuat anchor yang dilampirkan.

Java

for (HitResult hit : frame.hitTest(singleTapEvent)) {
  if (hit.getTrackable() instanceof StreetscapeGeometry) {
    Pose hitPose = hit.getHitPose();
    hit.getTrackable().createAnchor(hitPose);
  }
}

Kotlin

for (hit in frame.hitTest(singleTapEvent)) {
  if (hit.trackable is StreetscapeGeometry) {
    val hitPose = hit.hitPose
    hit.trackable.createAnchor(hitPose)
  }
}

Mengaktifkan Geospatial Depth

Geospatial Depth menggabungkan Streetscape Geometry dengan input sensor lokal untuk meningkatkan data kedalaman. Jika Geospatial Depth diaktifkan, gambar kedalaman output dan kedalaman mentah akan dimodifikasi untuk menyertakan Streetscape Geometry raster selain kedalaman yang diamati secara lokal. Hal ini dapat meningkatkan akurasi pose menggunakan Depth.