As APIs Streetscape Geometry fornecem a geometria do terreno, edifícios ou outras estruturas em uma cena. A geometria pode ser usada para oclusão, renderização ou colocação de conteúdo de RA por meio de APIs de teste de hit. Os dados do Streetscape Geometry 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 o Streetscape Geometry, você precisará configurar a API Geospatial no seu projeto. Siga as instruções em Como ativar a API Geospatial para configurar a API Geospatial.
Ativar Streetscape Geometry
A API Geospatial recebe os dados do Streetscape Geometry quando GARGeospatialMode
está 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];
Obter Streetscape Geometry em uma sessão do ARCore
UseGARFrame.streetscapeGeometries
para acessar todos os objetos GARStreetscapeGeometry
.
Entender o GARStreetscapeGeometry
GARStreetscapeGeometry
contém informações sobre uma construção:
-
GARStreetscapeGeometry.type
Identifica StreetscapeGeometry como um terreno ou uma construção. -
GARStreetscapeGeometry.mesh
Encontre um polígonoGARMesh
que corresponda a esse terreno ou construção. -
GARStreetscapeGeometry.meshTransform
Descreve a origem da geometria. Todos os pontos noGARMesh
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.
Edifício LOD 1
GARStreetscapeGeometryQualityBuildingLOD_1
consiste em plantas extruídas para cima até um topo plano. A altura das construções pode estar incorreta.
Edifício LOD 2
GARStreetscapeGeometryQualityBuildingLOD_2
terá uma geometria de maior fidelidade. Paredes e telhados de malha vão se aproximar mais do formato do edifício. Recursos menores, como chaminés ou aberturas no telhado, ainda podem sair da rede mesh.
Entender o GARMesh
GARMesh
é uma malha de polígonos que representa uma reconstrução de superfície do Streetscape Geometry.
Cada GARMesh
inclui um buffer de vértice e de índice:
GARMesh.vertexCount
Recupera o número de vértices na malha.GARMesh.vertices
Obter as posições concatenadas dos vértices da malha em coordenadas relativas aGARStreetscapeGeometry.meshTransform
GARMesh.triangleCount
Recupera o número de índices na malha.GARMesh.triangles
Conseguir 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 um ponto âncora em uma determinada pose perto de GARStreetscapeGeometry.meshTransform
. Esta âncora herdará o estado de acompanhamento do GARStreetscapeGeometry
pai.
Executar um teste de hit em GARStreetscapeGeometry
GARSession.raycastStreetscapeGeometry:direction:error:
pode ser usado para fazer um teste de hit em relação ao Streetscape Geometry. Se houver cruzamentos, GARStreetscapeGeometryRaycastResult
conterá informações de pose sobre o local do hit, bem como uma referência ao GARStreetscapeGeometry
que foi atingido. Esse Streetscape Geometry pode ser transmitido a GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
para criar uma âncora anexada a ele.
NSArray<GARStreetscapeGeometryRaycastResult *> *results =
[session raycastStreetscapeGeometry:arRaycastQuery.origin
direction:arRaycastQuery.direction
error:&error];
[session createAnchorOnStreetscapeGeometry:results[0].streetscapeGeometry
transform:results[0].worldTransform
error:&error];