Interfejsy API Streetscape Geometry udostępniają geometrię terenu, budynków i innych obiektów w scenie. Ta geometria może służyć do zasłaniania, renderowania lub umieszczania treści AR za pomocą interfejsów API testów trafień. Dane geometryczne Street View są uzyskiwane ze zdjęć Google Street View.
Skorzystaj z przykładu
Aplikacja GeospatialExample pokazuje, jak uzyskiwać i renderować geometrie Streetscape.
Konfigurowanie interfejsu Geospatial API
Aby używać Streetscape Geometry, musisz skonfigurować interfejs Geospatial API w swoim projekcie. Aby skonfigurować interfejs Geospatial API, wykonaj instrukcje włączania interfejsu Geospatial API.
Włącz geometrię Streetscape
Interfejs Geospatial API uzyskuje dane ze Streetscape Geometry, gdy element GARGeospatialMode
ma wartość GARGeospatialModeEnabled
, a GARStreetscapeGeometryMode
– GARStreetscapeGeometryModeEnabled
.
GARSessionConfiguration *configuration = [[GARSessionConfiguration alloc] init];
configuration.geospatialMode = GARGeospatialModeEnabled;
configuration.streetscapeGeometryMode = GARStreetscapeGeometryModeEnabled;
[garSession setConfiguration:configuration error:&error];
Uzyskiwanie danych geometrycznych ze Streetscape w sesji ARCore
Aby uzyskać wszystkie obiektyGARStreetscapeGeometry
, użyj funkcji GARFrame.streetscapeGeometries
.
Informacje o GARStreetscapeGeometry
GARStreetscapeGeometry
zawiera informacje o budynku:
-
GARStreetscapeGeometry.type
Identyfikuje obiekt StreetscapeGeometry jako teren lub budynek. -
GARStreetscapeGeometry.mesh
Uzyskaj wielokątGARMesh
odpowiadający temu terenowi lub budynku. -
GARStreetscapeGeometry.meshTransform
Opisuje pochodzenie geometrii. Wszystkie punkty w elemencieGARMesh
powinny zostać przekształcone przezGARStreetscapeGeometry.meshTransform
. -
GARStreetscapeGeometry.quality
Dostarcza jakość danych sieci typu mesh. Poziomy szczegółowości są opisane w standardzie CityGML 2.0.
Budynek – poziom działania 1
GARStreetscapeGeometryQualityBuildingLOD_1
to podstawy budynków wystające w górę na płaski dach. Wysokości budynków mogą być niedokładne.
Budynek – poziom działania 2
GARStreetscapeGeometryQualityBuildingLOD_2
będzie mieć większą dokładność geometrii. Ściany z siatki i dachy lepiej dopasują się do kształtu budynku. Mniejsze elementy, takie jak kominy czy otwory dachowe, mogą nadal wystawiać się poza siatkę.
Informacje o GARMesh
GARMesh
to siatka wielokątów przedstawiająca rekonstrukcję geometrii Streetscape.
Każdy element GARMesh
zawiera bufor wierzchołków i bufor indeksu:
GARMesh.vertexCount
Pobiera liczbę wierzchołków w tej siatce.GARMesh.vertices
Uzyskuj połączone pozycje wierzchołków sieci typu mesh według współrzędnych względemGARStreetscapeGeometry.meshTransform
.GARMesh.triangleCount
Pobiera liczbę indeksów w tej siatce.GARMesh.triangles
Uzyskiwanie indeksów wierzchołków tworzących twarz.
Dołączanie treści AR do obiektu GARStreetscapeGeometry
Użyj narzędzia GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
, aby utworzyć kotwicę w danej pozycji w pobliżu obiektu GARStreetscapeGeometry.meshTransform
. Ta kotwica odziedziczy stan śledzenia z elementu nadrzędnego GARStreetscapeGeometry
.
Wykonaj test trafień pod adresem GARStreetscapeGeometry
Narzędzia GARSession.raycastStreetscapeGeometry:direction:error:
można używać do testów z użyciem geometrii Streetscape. Jeśli zostaną znalezione skrzyżowania, GARStreetscapeGeometryRaycastResult
zawiera informacje o pozycji o lokalizacji działania, a także odwołanie do elementu GARStreetscapeGeometry
, który został trafiony. Tę geometrię Streetscape możesz przekazać do GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
, by utworzyć do niej zakotwiczoną kotwicę.
NSArray<GARStreetscapeGeometryRaycastResult *> *results =
[session raycastStreetscapeGeometry:arRaycastQuery.origin
direction:arRaycastQuery.direction
error:&error];
[session createAnchorOnStreetscapeGeometry:results[0].streetscapeGeometry
transform:results[0].worldTransform
error:&error];