Korzystanie z budynków i terenu wokół siebie na urządzeniach z iOS

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 GARStreetscapeGeometryModeGARStreetscapeGeometryModeEnabled.

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 obiekty GARStreetscapeGeometry, użyj funkcji GARFrame.streetscapeGeometries.

Informacje o GARStreetscapeGeometry

GARStreetscapeGeometry zawiera informacje o budynku:

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:

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];