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
GunakanGARFrame.streetscapeGeometries
untuk mendapatkan semua objek GARStreetscapeGeometry
.
Memahami GARStreetscapeGeometry
GARStreetscapeGeometry
berisi informasi tentang bangunan:
-
GARStreetscapeGeometry.type
Mengidentifikasi StreetscapeGeometry sebagai medan atau bangunan. -
GARStreetscapeGeometry.mesh
Mendapatkan poligonGARMesh
yang sesuai dengan medan atau bangunan ini. -
GARStreetscapeGeometry.meshTransform
Menjelaskan asal geometri. Semua titik diGARMesh
harus ditransformasikan olehGARStreetscapeGeometry.meshTransform
. -
GARStreetscapeGeometry.quality
Memberikan kualitas data mesh. Tingkat detail dijelaskan dalam standar CityGML 2.0.
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:
GARMesh.vertexCount
Mengambil jumlah vertex dalam mesh ini.GARMesh.vertices
Mendapatkan posisi yang digabungkan dari vertex mesh, dalam koordinat yang relatif terhadapGARStreetscapeGeometry.meshTransform
.GARMesh.triangleCount
Mengambil jumlah indeks dalam mesh ini.GARMesh.triangles
Mendapatkan indeks vertex yang membentuk wajah.
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];