Menggunakan gedung dan medan di sekitar Anda pada iOS

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 GeospatialExample 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 GARGeospatialMode disetel ke GARGeospatialModeEnabled dan GARStreetscapeGeometryMode disetel ke GARStreetscapeGeometryModeEnabled.

GARSessionConfiguration *configuration = [[GARSessionConfiguration alloc] init];
configuration.geospatialMode = GARGeospatialModeEnabled;
configuration.streetscapeGeometryMode = GARStreetscapeGeometryModeEnabled;
[garSession setConfiguration:configuration error:&error];

Mendapatkan Streetscape Geometry dalam sesi ARCore

Gunakan GARFrame.streetscapeGeometries untuk mendapatkan semua objek GARStreetscapeGeometry.

Memahami GARStreetscapeGeometry

GARStreetscapeGeometry berisi informasi tentang bangunan:

LOD bangunan 1

GARStreetscapeGeometryQualityBuildingLOD_1 terdiri dari jejak bangunan yang diekstrusi ke atas hingga datar. Tinggi bangunan mungkin tidak akurat.

LOD 2 bangunan

GARStreetscapeGeometryQualityBuildingLOD_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 GARMesh

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

Melampirkan konten AR ke GARStreetscapeGeometry

Gunakan GARSesssion.createAnchorOnStreetscapeGeometry:transform:error: untuk membuat anchor pada pose tertentu di dekat GARStreetscapeGeometry.meshTransform. Anchor ini akan mewarisi status pelacakannya dari induk GARStreetscapeGeometry.

Menjalankan hit-test terhadap GARStreetscapeGeometry

GARSession.raycastStreetscapeGeometry:direction:error: dapat digunakan untuk hit-test terhadap Streetscape Geometry. Jika ditemukan persimpangan, GARStreetscapeGeometryRaycastResult berisi informasi pose tentang lokasi hit serta referensi ke GARStreetscapeGeometry yang dihasilkan. Streetscape Geometry ini dapat diteruskan ke GARSesssion.createAnchorOnStreetscapeGeometry:transform:error: untuk membuat anchor yang dilampirkan.

NSArray<GARStreetscapeGeometryRaycastResult *> *results =
    [session raycastStreetscapeGeometry:arRaycastQuery.origin
                              direction:arRaycastQuery.direction
                                  error:&error];
[session createAnchorOnStreetscapeGeometry:results[0].streetscapeGeometry
                                 transform:results[0].worldTransform
                                     error:&error];