Utiliser les bâtiments et le relief qui vous entourent sur iOS

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

Utilisez GARFrame.streetscapeGeometries pour obtenir tous les objets GARStreetscapeGeometry.

Comprendre GARStreetscapeGeometry

GARStreetscapeGeometry contient des informations sur un bâtiment:

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:

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