Usa los edificios y el terreno a tu alrededor en iOS

Las APIs de Streetscape Geometry proporcionan la geometría del terreno, los edificios y otras estructuras en una escena. La geometría se puede usar para la oclusión, la renderización o la colocación de contenido de RA con APIs de prueba de posicionamiento. Los datos de geometría del paisaje urbano se obtienen a través de las imágenes de Google Street View.

Prueba la muestra

La app de GeospatialExample muestra cómo obtener y renderizar las geometrías del paisaje urbano.

Configura la API de Geospatial

Para usar Streetscape Geometry, deberás configurar la API de Geospatial en tu proyecto. Sigue las instrucciones para habilitar la API de Geospatial para configurarla.

Habilitar la geometría del paisaje urbano

La API de Geospatial obtiene los datos de Streetscape Geometry cuando GARGeospatialMode se establece en GARGeospatialModeEnabled y GARStreetscapeGeometryMode se establece en GARStreetscapeGeometryModeEnabled.

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

Obtén la geometría del paisaje urbano en una sesión de ARCore

Usa GARFrame.streetscapeGeometries para obtener todos los objetos GARStreetscapeGeometry.

Información sobre GARStreetscapeGeometry

GARStreetscapeGeometry contiene información sobre un edificio:

Nivel de detalle 1 del edificio

GARStreetscapeGeometryQualityBuildingLOD_1 consiste en situaciones de edificios extruidas hacia arriba hasta una superficie plana. La altura del edificio puede no ser precisa.

Nivel de detalle 2 del edificio

GARStreetscapeGeometryQualityBuildingLOD_2 tendrá una geometría de mayor fidelidad. Las paredes y los techos de malla coincidirán mejor con la forma del edificio. Es posible que las funciones más pequeñas, como chimeneas o respiraderos del techo, sobresalgan fuera de la malla.

Información sobre GARMesh

GARMesh es una malla de polígonos que representa una reconstrucción de la superficie de la geometría del paisaje urbano. Cada GARMesh incluye un búfer de vértices y un búfer de índice:

Adjunta contenido de RA a un GARStreetscapeGeometry

Usa GARSesssion.createAnchorOnStreetscapeGeometry:transform:error: para crear un ancla en una pose determinada cerca de GARStreetscapeGeometry.meshTransform. Este ancla heredará su estado de seguimiento del elemento superior GARStreetscapeGeometry.

Realiza una prueba de posicionamiento en GARStreetscapeGeometry

GARSession.raycastStreetscapeGeometry:direction:error: se puede usar para realizar pruebas de posicionamiento con la geometría del paisaje urbano. Si se encuentran intersecciones, GARStreetscapeGeometryRaycastResult contiene información de pose sobre la ubicación del hit y una referencia a GARStreetscapeGeometry que recibió el hit. Esta geometría del paisaje urbano se puede pasar a GARSesssion.createAnchorOnStreetscapeGeometry:transform:error: para crear un ancla adjunta.

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