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

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żyj GARFrame.streetscapeGeometries, aby uzyskać wszystkie obiekty GARStreetscapeGeometry.

Informacje o GARStreetscapeGeometry

GARStreetscapeGeometry zawiera informacje o budynku:

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:

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