Les API Streetscape Geometry fournissent la géométrie du relief, des bâtiments ou d'autres structures dans une scène. La géométrie peut être utilisée pour l'occlusion, l'affichage ou le placement de contenu en RA via des API de test de positionnement. Les données Streetscape Geometry sont obtenues grâce aux images Google Street View.
Essayer l'exemple
L'application GeospatialExample montre comment obtenir et afficher des géométries de paysage urbain.
Configurer l'API Geospatial
Pour utiliser Streetscape Geometry, vous devez configurer l'API Geospatial dans votre projet. Suivez les instructions de la section Activer l'API Geospatial pour configurer l'API Geospatial.
Activer Streetscape Geometry
L'API Geospatial obtient des données Streetscape Geometry lorsque GARGeospatialMode
est défini sur GARGeospatialModeEnabled
et GARStreetscapeGeometryMode
est défini sur GARStreetscapeGeometryModeEnabled
.
GARSessionConfiguration *configuration = [[GARSessionConfiguration alloc] init];
configuration.geospatialMode = GARGeospatialModeEnabled;
configuration.streetscapeGeometryMode = GARStreetscapeGeometryModeEnabled;
[garSession setConfiguration:configuration error:&error];
Obtenir Streetscape Geometry dans une session ARCore
UtilisezGARFrame.streetscapeGeometries
pour obtenir tous les objets GARStreetscapeGeometry
.
Comprendre GARStreetscapeGeometry
GARStreetscapeGeometry
contient des informations sur un bâtiment:
-
GARStreetscapeGeometry.type
Identifie la StreetscapeGeometry en tant que relief ou en tant que bâtiment. -
GARStreetscapeGeometry.mesh
Obtenez un polygoneGARMesh
correspondant à ce relief ou ce bâtiment. -
GARStreetscapeGeometry.meshTransform
Décrit l'origine de la géométrie. Tous les points deGARMesh
doivent être transformés parGARStreetscapeGeometry.meshTransform
. -
GARStreetscapeGeometry.quality
Fournit la qualité des données du maillage. Les niveaux de détail sont décrits dans la norme CityGML 2.0.
Bâtiment LOD 1
Le GARStreetscapeGeometryQualityBuildingLOD_1
consiste en une empreinte de pas de bâtiment extrudée vers le haut vers une surface plane. La hauteur des bâtiments peut être inexacte.
Le LOD du bâtiment 2
GARStreetscapeGeometryQualityBuildingLOD_2
aura une géométrie de plus grande fidélité. Les murs et les toits recouverts de maillages correspondront mieux à la forme du bâtiment. Les éléments de petite taille, comme les cheminées ou les ouvertures de toit, peuvent toujours apparaître à l'extérieur de la grille.
Comprendre GARMesh
GARMesh
est un maillage polygonal représentant une reconstitution de surface de la géométrie du paysage urbain.
Chaque GARMesh
inclut un tampon de sommet et un tampon d'index:
GARMesh.vertexCount
Récupère le nombre de sommets dans ce maillage.GARMesh.vertices
Obtenez les positions concaténées des sommets du maillage, en coordonnées par rapport àGARStreetscapeGeometry.meshTransform
.GARMesh.triangleCount
Récupère le nombre d'indices de ce maillage.GARMesh.triangles
Obtenez les index des sommets qui composent une face.
Joindre du contenu RA à un GARStreetscapeGeometry
Utilisez GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
pour créer une ancre pour une position donnée à proximité de GARStreetscapeGeometry.meshTransform
. Cette ancre héritera de son état de suivi de l'élément parent GARStreetscapeGeometry
.
Effectuer un test de positionnement sur GARStreetscapeGeometry
GARSession.raycastStreetscapeGeometry:direction:error:
permet d'effectuer des tests sur Streetscape Geometry. Si des intersections sont détectées, GARStreetscapeGeometryRaycastResult
contient des informations sur l'emplacement de l'appel, ainsi qu'une référence au GARStreetscapeGeometry
qui a été appelé. Cette géométrie de paysage Streetscape peut être transmise à GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
pour créer une ancre.
NSArray<GARStreetscapeGeometryRaycastResult *> *results =
[session raycastStreetscapeGeometry:arRaycastQuery.origin
direction:arRaycastQuery.direction
error:&error];
[session createAnchorOnStreetscapeGeometry:results[0].streetscapeGeometry
transform:results[0].worldTransform
error:&error];