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

Streetscape Geometry API menyediakan geometri medan, bangunan, atau struktur lainnya dalam sebuah tampilan. Geometri ini dapat digunakan untuk oklusi, rendering, atau penempatan konten AR melalui API hit-test. Data Streetscape Geometry diperoleh melalui gambar Google Street View.

Mencoba contoh

Aplikasi contoh geospatial_java menunjukkan cara mendapatkan dan merender Streetscape Geometries.

Menyiapkan Geospatial API

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

Mengaktifkan Streetscape Geometry

Geospatial API memperoleh data Streetscape Geometry saat GeospatialMode ditetapkan ke GeospatialMode.ENABLED dan StreetscapeGeometryMode ditetapkan 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:

Membangun LOD 1

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

Membangun LOD 2

StreetscapeGeometry.Quality.BUILDING_LOD_2 akan memiliki geometri fidelitas yang lebih tinggi. Dinding dan atap mesh akan lebih cocok dengan bentuk bangunan. Fitur yang lebih kecil seperti cerobong asap atau ventilasi atap mungkin masih menyembul ke luar mesh.

Memahami Mesh

Mesh adalah mesh poligon yang mewakili rekonstruksi permukaan Streetscape Geometry. Setiap Mesh menyertakan buffer vertex dan buffer indeks:

Melampirkan konten AR ke StreetscapeGeometry

Ada dua cara untuk melampirkan konten AR ke Streetscape Geometry:

Melakukan hit-test terhadap StreetscapeGeometry

Frame.hitTest() dapat digunakan untuk melakukan hit-test terhadap Streetscape Geometry. Jika persimpangan ditemukan, HitResult berisi informasi pose tentang lokasi hit serta referensi ke StreetscapeGeometry yang hit. 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 kualitas data kedalaman. Saat Geospatial Depth diaktifkan, kedalaman output dan gambar kedalaman mentah diubah untuk menyertakan Streetscape Geometry yang dirasterkan selain kedalaman yang diamati secara lokal. Tindakan ini dapat meningkatkan akurasi pose menggunakan Kedalaman.