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
UseGARFrame.streetscapeGeometries
para receber todos os objetos GARStreetscapeGeometry
.
Entender o GARStreetscapeGeometry
GARStreetscapeGeometry
contém informações sobre um edifício:
-
GARStreetscapeGeometry.type
Identifica a StreetscapeGeometry como terreno ou edifício. -
GARStreetscapeGeometry.mesh
Extraia um polígonoGARMesh
que corresponda a esse terreno ou edifício. -
GARStreetscapeGeometry.meshTransform
Descreve a origem da geometria. Todos os pontos emGARMesh
precisam ser transformados porGARStreetscapeGeometry.meshTransform
. -
GARStreetscapeGeometry.quality
Fornece a qualidade dos dados da malha. Os níveis de detalhamento são descritos no padrão CityGML 2.0.
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:
GARMesh.vertexCount
Recupera o número de vértices na malha.GARMesh.vertices
Extraia as posições concatenadas dos vértices da malha em coordenadas relativas aGARStreetscapeGeometry.meshTransform
.GARMesh.triangleCount
Recupera o número de índices nessa malha.GARMesh.triangles
Consiga os índices de vértices que compõem uma face.
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];