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