Menggunakan gedung dan medan di sekitar Anda pada iOS

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

Mencoba contoh

Aplikasi GeospatialExample menunjukkan cara mendapatkan dan merender Streetscape Geometry.

Menyiapkan Geospatial API

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

Mengaktifkan Streetscape Geometry

Geospatial API memperoleh data Streetscape Geometry saat GARGeospatialMode ditetapkan ke GARGeospatialModeEnabled dan GARStreetscapeGeometryMode ditetapkan 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:

Membangun LOD 1

GARStreetscapeGeometryQualityBuildingLOD_1 terdiri dari jejak bangunan yang diekstrusi ke atas hingga bagian atasnya datar. Ketinggian bangunan mungkin tidak akurat.

Membangun LOD 2

GARStreetscapeGeometryQualityBuildingLOD_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 menembus di luar mesh.

Memahami GARMesh

GARMesh adalah mesh poligon yang mewakili rekonstruksi permukaan Streetscape Geometry. Setiap GARMesh menyertakan buffer vertex dan buffer 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 GARStreetscapeGeometry induk.

Melakukan hit-test terhadap GARStreetscapeGeometry

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

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