# ArStreetscapeGeometry

ARCore Geospatial Streetscape Geometry APIs.

See the [Streetscape Geometry Developer Guide](https://developers.google.com/ar/develop/c/geospatial/streetscape-geometry) for additional information.

## Summary

| ### Enumerations ||
|---|---|
| `https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#arstreetscapegeometryquality{ https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#ar_streetscape_geometry_quality_none = 0, https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#ar_streetscape_geometry_quality_building_lod_1 = 1, https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#ar_streetscape_geometry_quality_building_lod_2 = 2 }` | enumDescribes the quality of the mesh data. |
| `https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#arstreetscapegeometrytype{ https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#ar_streetscape_geometry_type_terrain = 0, https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#ar_streetscape_geometry_type_building = 1 }` | enumDescribes the type of a Streetscape Geometry. |

| ### Typedefs ||
|---|---|
| `https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#arstreetscapegeometry` | typedef `struct ArStreetscapeGeometry_` A Streetscape Geometry trackable ([reference type,](https://developers.google.com/ar/reference/c/group/concepts#object-ownership)long-lived"). |

| ### Functions ||
|---|---|
| `https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#arstreetscapegeometry_acquiremesh(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, const https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#arstreetscapegeometry *streetscape_geometry, https://developers.google.com/ar/reference/c/group/ar-mesh#armesh **out_mesh)` | `void` Acquires a polygon `https://developers.google.com/ar/reference/c/group/ar-mesh#armesh` that corresponds to this geometry. |
| `https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#arstreetscapegeometry_getmeshpose(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, const https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#arstreetscapegeometry *streetscape_geometry, https://developers.google.com/ar/reference/c/group/ar-pose#arpose *out_pose)` | `void` Gets the origin pose of the `streetscape_geometry`. |
| `https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#arstreetscapegeometry_getquality(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, const https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#arstreetscapegeometry *streetscape_geometry, https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#arstreetscapegeometryquality *out_quality)` | `void` Gets the `https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#arstreetscapegeometryquality` corresponding to this geometry. |
| `https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#arstreetscapegeometry_gettype(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, const https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#arstreetscapegeometry *streetscape_geometry, https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#arstreetscapegeometrytype *out_type)` | `void` Gets the `https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#arstreetscapegeometrytype` corresponding to this geometry. |

## Enumerations

### ArStreetscapeGeometryQuality

```
 ArStreetscapeGeometryQuality
```
Describes the quality of the mesh data.

The values correspond to the levels of detail (LOD) defined by the [CityGML 2.0 standard](https://portal.ogc.org/files/?artifact_id=16675).

Obtained by `https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#arstreetscapegeometry_getquality`.

| Properties ||
|---|---|
| `AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_1` | The `https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#ar_streetscape_geometry_type_building` geometry is the building footprint extruded up to a single flat top. The building contains empty space above any angled roofs. |
| `AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_2` | The `https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#ar_streetscape_geometry_type_building` geometry is the building footprint with rough heightmap. The geometry will closely follow simple angled roofs. Chimneys and roof vents on top of roofs will poke outside of the Streetscape Geometry. |
| `AR_STREETSCAPE_GEOMETRY_QUALITY_NONE` | The quality of the geometry is not defined, e.g. when the `https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#arstreetscapegeometrytype` is `https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#ar_streetscape_geometry_type_terrain`. |

### ArStreetscapeGeometryType

```
 ArStreetscapeGeometryType
```
Describes the type of a Streetscape Geometry.

Obtained by `https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#arstreetscapegeometry_gettype`.

| Properties ||
|---|---|
| `AR_STREETSCAPE_GEOMETRY_TYPE_BUILDING` | This geometry represents a building or other structure. |
| `AR_STREETSCAPE_GEOMETRY_TYPE_TERRAIN` | This geometry represents the ground or floor. |

## Typedefs

### ArStreetscapeGeometry

```
struct ArStreetscapeGeometry_ ArStreetscapeGeometry
```
A Streetscape Geometry trackable ([reference type,](https://developers.google.com/ar/reference/c/group/concepts#object-ownership)long-lived").

Defines geometry such as terrain, buildings, or other structures obtained from the Streetscape Geometry API. See the [Streetscape Geometry Developer Guide](https://developers.google.com/ar/develop/c/geospatial/streetscape-geometry) for additional information.

Obtained from a call to `https://developers.google.com/ar/reference/c/group/ar-session#arsession_getalltrackables` and `https://developers.google.com/ar/reference/c/group/ar-frame#arframe_getupdatedtrackables` when `https://developers.google.com/ar/reference/c/group/ar-config#arstreetscapegeometrymode` is set to `https://developers.google.com/ar/reference/c/group/ar-config#ar_streetscape_geometry_mode_enabled` and `https://developers.google.com/ar/reference/c/group/ar-config#argeospatialmode` is set to `https://developers.google.com/ar/reference/c/group/ar-config#ar_geospatial_mode_enabled`.


- Trackable type: `https://developers.google.com/ar/reference/c/group/ar-trackable#ar_trackable_streetscape_geometry`
- Release with: `https://developers.google.com/ar/reference/c/group/ar-trackable#artrackable_release`

<br />

## Functions

### ArStreetscapeGeometry_acquireMesh

```
void ArStreetscapeGeometry_acquireMesh(
  const ArSession *session,
  const ArStreetscapeGeometry *streetscape_geometry,
  ArMesh **out_mesh
)
```
Acquires a polygon `https://developers.google.com/ar/reference/c/group/ar-mesh#armesh` that corresponds to this geometry.

A `https://developers.google.com/ar/reference/c/group/ar-mesh#armesh` describes the geometry as a collection of polygons which should be transformed by `https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#arstreetscapegeometry_getmeshpose`.

`https://developers.google.com/ar/reference/c/group/ar-mesh#armesh` must be released by calling `https://developers.google.com/ar/reference/c/group/ar-mesh#armesh_release`.

### ArStreetscapeGeometry_getMeshPose

```
void ArStreetscapeGeometry_getMeshPose(
  const ArSession *session,
  const ArStreetscapeGeometry *streetscape_geometry,
  ArPose *out_pose
)
```
Gets the origin pose of the `streetscape_geometry`.

This pose should be applied to all the points in the geometry from `https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#arstreetscapegeometry_acquiremesh`.

### ArStreetscapeGeometry_getQuality

```
void ArStreetscapeGeometry_getQuality(
  const ArSession *session,
  const ArStreetscapeGeometry *streetscape_geometry,
  ArStreetscapeGeometryQuality *out_quality
)
```
Gets the `https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#arstreetscapegeometryquality` corresponding to this geometry.

### ArStreetscapeGeometry_getType

```
void ArStreetscapeGeometry_getType(
  const ArSession *session,
  const ArStreetscapeGeometry *streetscape_geometry,
  ArStreetscapeGeometryType *out_type
)
```
Gets the `https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#arstreetscapegeometrytype` corresponding to this geometry.