Interfejsy Streetscape Geometry API zapewniają geometrię terenu, budynków i innych obiektów w scenie. Geometrii można używać do przesłonięcia, renderowania i umieszczania treści AR za pomocą interfejsów API do testów trafień. Dane geometryczne Streetscape uzyskuje się ze zdjęć Google Street View.
Zobacz fragment
Aplikacja GeospatialExample pokazuje, jak uzyskać i renderować geometrie Streetscape.
Konfigurowanie interfejsu Geospatial API
Aby korzystać z funkcji Streetscape Geometry, musisz skonfigurować w projekcie interfejs Geospatial API. Aby skonfigurować interfejs Geospatial API, postępuj zgodnie z instrukcjami włączania interfejsu Geospatial API.
Włącz geometrię Streetscape
Interfejs Geospatial API pobiera dane Streetscape Geometry, gdy GARGeospatialMode
ma wartość GARGeospatialModeEnabled
, a GARStreetscapeGeometryMode
jest ustawiona na GARStreetscapeGeometryModeEnabled
.
GARSessionConfiguration *configuration = [[GARSessionConfiguration alloc] init];
configuration.geospatialMode = GARGeospatialModeEnabled;
configuration.streetscapeGeometryMode = GARStreetscapeGeometryModeEnabled;
[garSession setConfiguration:configuration error:&error];
Uzyskiwanie geometrii Streetscape w sesji ARCore
UżyjGARFrame.streetscapeGeometries
, aby uzyskać wszystkie obiekty GARStreetscapeGeometry
.
Informacje o GARStreetscapeGeometry
GARStreetscapeGeometry
zawiera informacje o budynku:
-
GARStreetscapeGeometry.type
Identyfikuje obiekt StreetscapeGeometry jako teren lub budynek. -
GARStreetscapeGeometry.mesh
Znajdź wielokątGARMesh
odpowiadający temu terenowi lub budynku. -
GARStreetscapeGeometry.meshTransform
Opisuje pochodzenie geometrii. Wszystkie punkty w elemencieGARMesh
powinny zostać przekształcone w obiektyGARStreetscapeGeometry.meshTransform
. -
GARStreetscapeGeometry.quality
Zapewnia jakość danych sieci typu mesh. Poziomy szczegółowości znajdziesz w standardzie CityGML 2.0.
Budynek – LOD 1
GARStreetscapeGeometryQualityBuildingLOD_1
to kontury budynków rozciągnięte w górę na płaskie dach. Wysokość budynków może być niedokładna.
Budynek LOD 2
GARStreetscapeGeometryQualityBuildingLOD_2
będzie mieć wyższą dokładność geometrii. Ściany z siatki i dachy będą lepiej dopasowane do kształtu budynku. Mniejsze elementy, takie jak kominy czy otwory dachowe, mogą nadal pojawiać się na zewnątrz siatki.
Informacje o GARMesh
GARMesh
to wielokątna siatka reprezentująca zrekonstruowaną powierzchnię geometrii Streetscape.
Każdy element GARMesh
zawiera bufor wierzchołkowy i bufor indeksu:
GARMesh.vertexCount
Pobiera liczbę wierzchołków w tej siatce.GARMesh.vertices
Uzyskaj połączone położenie wierzchołków siatki we współrzędnych względemGARStreetscapeGeometry.meshTransform
GARMesh.triangleCount
Pobiera liczbę indeksów w tej siatce.GARMesh.triangles
Uzyskaj indeksy wierzchołków tworzących twarz.
Załączanie treści AR do GARStreetscapeGeometry
Użyj narzędzia GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
, aby utworzyć reklamę zakotwiczoną w danej pozycji w pobliżu miejsca GARStreetscapeGeometry.meshTransform
. Ta kotwica odziedziczy stan śledzenia z elementu nadrzędnego GARStreetscapeGeometry
.
Przeprowadź test trafień na GARStreetscapeGeometry
GARSession.raycastStreetscapeGeometry:direction:error:
może służyć do testowania trafień pod kątem geometrii Streetscape. Po znalezieniu przecięć parametr GARStreetscapeGeometryRaycastResult
zawiera informacje o położeniu dotyczące lokalizacji działania oraz odwołanie do trafienia GARStreetscapeGeometry
. Tę geometrię Streetscape można przekazać do obiektu GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
, aby utworzyć dołączoną do niej kotwicę.
NSArray<GARStreetscapeGeometryRaycastResult *> *results =
[session raycastStreetscapeGeometry:arRaycastQuery.origin
direction:arRaycastQuery.direction
error:&error];
[session createAnchorOnStreetscapeGeometry:results[0].streetscapeGeometry
transform:results[0].worldTransform
error:&error];