Usar edifícios e terrenos ao seu redor no iOS

As APIs Streetscape Geometry oferecem a geometria do terreno, dos edifícios ou de outras estruturas em uma cena. A geometria pode ser usada para oclusão, renderização ou colocação de conteúdo de RA com APIs de teste de hit. Os dados da geometria do Streetscape são obtidos por meio de imagens do Google Street View.

Testar o exemplo

O app GeospatialExample demonstra como receber e renderizar geometrias do Streetscape.

Configurar a API Geospatial

Para usar a geometria do Streetscape, é necessário configurar a API Geospatial no seu projeto. Siga as instruções em Como ativar a API Geospatial para configurar a API Geospatial.

Ativar geometria da paisagem urbana

A API Geospatial acessa dados de geometria do Streetscape quando GARGeospatialMode é definido como GARGeospatialModeEnabled e GARStreetscapeGeometryMode está definido como GARStreetscapeGeometryModeEnabled.

GARSessionConfiguration *configuration = [[GARSessionConfiguration alloc] init];
configuration.geospatialMode = GARGeospatialModeEnabled;
configuration.streetscapeGeometryMode = GARStreetscapeGeometryModeEnabled;
[garSession setConfiguration:configuration error:&error];

Conseguir a geometria do Streetscape em uma sessão do ARCore

Use GARFrame.streetscapeGeometries para receber todos os objetos GARStreetscapeGeometry.

Entender o GARStreetscapeGeometry

GARStreetscapeGeometry contém informações sobre um edifício:

Construção LOD 1

O GARStreetscapeGeometryQualityBuildingLOD_1 consiste na construção de plantações deslocadas para cima em direção a um topo plano. A altura das construções pode ser imprecisa.

Construção LOD 2

GARStreetscapeGeometryQualityBuildingLOD_2 terá geometria de maior fidelidade. As paredes e os telhados de malha combinarão melhor com a forma do edifício. Recursos menores, como chaminés ou saídas de ventilação, ainda podem furar para fora da malha.

Entender o GARMesh

GARMesh é uma malha de polígonos que representa uma reconstrução de superfície da geometria da paisagem urbana. Cada GARMesh inclui um buffer de vértice e um buffer de índice:

Anexar conteúdo de RA a um GARStreetscapeGeometry

Use GARSesssion.createAnchorOnStreetscapeGeometry:transform:error: para criar uma âncora em uma determinada posição perto de GARStreetscapeGeometry.meshTransform. Essa âncora vai herdar o estado de rastreamento do GARStreetscapeGeometry pai.

Realize um teste de hit no GARStreetscapeGeometry

GARSession.raycastStreetscapeGeometry:direction:error: pode ser usado para fazer teste de hit com a geometria do Streetscape. Se cruzamentos forem encontrados, GARStreetscapeGeometryRaycastResult vai conter informações de poses sobre o local do hit, bem como uma referência à GARStreetscapeGeometry que foi atingida. Essa geometria da paisagem urbana pode ser transmitida a GARSesssion.createAnchorOnStreetscapeGeometry:transform:error: para criar uma âncora anexada a ela.

NSArray<GARStreetscapeGeometryRaycastResult *> *results =
    [session raycastStreetscapeGeometry:arRaycastQuery.origin
                              direction:arRaycastQuery.direction
                                  error:&error];
[session createAnchorOnStreetscapeGeometry:results[0].streetscapeGeometry
                                 transform:results[0].worldTransform
                                     error:&error];