ARCoreExtensions

Summary

Enumerations

enum
Type of hardware depth sensor usage for a camera config, such as a time-of-flight (ToF) sensor.
enum
Facing direction options for camera config.
enum
Stereo Camera usage options.
enum
The camera frame rate filter for the currently selected camera.
enum
Describes the desired behavior of the ARCore Cloud Anchor API.
enum
Describes the current state of Earth localization.
enum
Indicates the quality of feature points seen by ARCore in the preceding few seconds from a given camera Pose .
enum
Indicates whether a feature or capability is supported on the device.
enum
Describes the desired behavior of the ARCore Geospatial API.
enum
Results from attempting to set playback dataset filepath.
enum
Describes the current playback status.
PromiseState {
Pending = 0,
Cancelled = 1,
Done = 2
}
enum
Describes state of an async operation.
enum
Describes the current recording status.
SemanticLabel {
Unlabeled = 0,
Sky = 1,
Building = 2,
Tree = 3,
Road = 4,
Sidewalk = 5,
Terrain = 6,
Structure = 7,
Object = 8,
Vehicle = 9,
Person = 10,
Water = 11
}
enum
Defines the labels the Scene Semantics API is able to detect and maps human-readable names to per-pixel semantic labels.
enum
Describes the desired behavior of Scene Semantics.
enum
Describes the desired behavior of the Geospatial Streetscape Geometry API.
enum
Describes the quality of the mesh data.
enum
Describes the type of a Streetscape Geometry.
enum
Describes the result of a Terrain anchor resolving operation.
enum
Describes the result of checking VPS availability at specific location.

Classes

Extensions to AR Foundation's ARAnchorManager class.

The ARCloudAnchor is an ARCore Extensions object that provides a similar service to AR Foundation's ARAnchor as an anchor for game objects in your scene.

ARCore Extensions, this script allows an app to specify and provide access to AR Foundation object instances that should be used by ARCore Extensions.

The ARCoreExtensionsCameraConfigFilter class is used by the camera manager to derive a list of camera configurations available on the device at runtime.

Holds settings that are used to configure the ARCore Extensions.

Configuration to record camera and sensor data from an ARCore session.

Provides localization in Earth-relative coordinates.

The ARGeospatialAnchor is an ARCore Extensions object that provides a similar service to AR Foundation's ARAnchor as an anchor for game objects in your scene.

Provides access to session playback functionality.

Extensions to AR Foundation's ARRaycastManager class.

Provides access to session recording functionality.

Provides access to the Scene Semantics API.

Defines geometry such as terrain, buildings, or other structures obtained from the Streetscape Geometry API.

Provides ARCore Geospatial Streetscape Geometry APIs.

Result object from HostCloudAnchorPromise containing the hosted Cloud Anchor ID and final state.

Result object from ResolveCloudAnchorPromise containing the resolved Cloud Anchor and Anchor state.

Provides access to information about the current ARCore Extensions package runtime.

Extensions to AR Subsystem's XRCameraConfiguration struct.

Extensions to AR Subsystem's XRCameraFrame struct.

Structs

Describes a specific location, elevation, and compass heading relative to Earth.

Definition of a track to record on.

Data that was recorded to an external Track .

Enumerations

CameraConfigDepthSensorUsage

  
 CameraConfigDepthSensorUsage 

Type of hardware depth sensor usage for a camera config, such as a time-of-flight (ToF) sensor.

Properties

Indicates that ARCore will not attempt to use a hardware depth sensor, such as a time-of-flight sensor (or ToF sensor), even if it is present.

Most commonly used to filter camera configurations when the app requires exclusive access to the hardware depth sensor outside of ARCore, for example to support 3D mesh reconstruction. Available on all ARCore supported devices .

Indicates that a hardware depth sensor, such as a time-of-flight sensor (or ToF sensor), must be present on the device, and the hardware depth sensor will be used by ARCore.

Not supported on all devices.

CameraConfigFacingDirection

  
 CameraConfigFacingDirection 

Facing direction options for camera config.

Properties

Back-facing (world) camera is enabled.

Available on all ARCore supported devices .

Front-facing (selfie) camera is enabled.

See ARCore supported devices for available camera configs by device.

To limit distribution of your app to only devices that have a front-facing camera, use uses-feature with android.hardware.camera .

CameraConfigStereoCameraUsage

  
 CameraConfigStereoCameraUsage 

Stereo Camera usage options.

Properties

ARCore will not attempt to use a stereo camera, even if one is present.

Valid on all ARCore supported devices .

A stereo camera is present on the device and will be used by ARCore.

Not available on all ARCore supported devices.

CameraConfigTargetFps

  
 CameraConfigTargetFps 

The camera frame rate filter for the currently selected camera.

Properties

Target 30fps camera capture frame rate.

Available on all ARCore supported devices .

Target 60fps camera capture frame rate.

Increases power consumption and may increase app memory usage.

See the ARCore supported devices page for a list of devices that currently support 60fps.

CloudAnchorMode

  
 CloudAnchorMode 

Describes the desired behavior of the ARCore Cloud Anchor API.

The Cloud Anchors API uses feature maps to persist an anchor throughout sessions and across devices. See the Cloud Anchors developer guide for more information.

The default value is CloudAnchorMode.Disabled . Use ARCoreExtensionsConfig.CloudAnchorMode to set the desired mode.

Properties

The Cloud Anchor API is disabled.

Calling ARAnchorManagerExtensions.HostCloudAnchorAsync(this ARAnchorManager, ARAnchor, int) and ARAnchorManagerExtensions.ResolveCloudAnchorAsync(this ARAnchorManager, string) will cause the promise to fail immediately.

This is the default value.

The Cloud Anchor API is enabled.

ARAnchorManagerExtensions.HostCloudAnchorAsync(this ARAnchorManager, ARAnchor, int) and ARAnchorManagerExtensions.ResolveCloudAnchorAsync(this ARAnchorManager, string) can be used to host and resolve Cloud Anchors.

Using this mode requires your app to do the following:

Use ARCoreExtensionsConfig.CloudAnchorMode to set this mode.

CloudAnchorState

  
 CloudAnchorState 

Result status of a Cloud Anchor hosting or resolving operation.

Properties

Hosting failed because the server could not successfully process the dataset for the given Cloud Anchor.

The developer should try again after the devices has gathered more data from the environment.

The ARCore API was unreachable.

This can happen because of a number of reasons. The device may be in airplane mode or does not have a working internet connection. The request sent to the server could have timed out with no response, there could be a bad network connection, DNS unavailability, firewall issues, or anything that could affect the device's ability to connect to the ARCore API.

A hosting or resolving task for this Cloud Anchor has completed with an internal error.

The app should not attempt to recover from this error.

The app cannot communicate with the ARCore API because of an invalid authentication.

Check Project Settings > XR Plug-in Management > ARCore Extensions for a valid authentication strategy.

Resolving failed because the ARCore API could not find the provided Cloud Anchor Id.

The Cloud Anchor could not be acquired because the ARCore Extensions package used to host the Cloud Anchor was older than and incompatible with the version being used to acquire it.

The Cloud Anchor could not be resolved because the ARCore Extensions package used to host the Cloud Anchor was newer than and incompatible with the version being used to acquire it.

The application has exhausted the request quota alloted to the given API key.

The developer should request additional quota for the ARCore API for their API key from the Google Cloud Developers Console.

Not a valid value for a Cloud Anchor hosting or resolving operation.

A hosting or resolving task for this Cloud Anchor has completed successfully.

A hosting or resolving task is in progress for this Cloud Anchor.

Once the task completes in the background, the Cloud Anchor will get a new state after the next update.

Deprecated. Not returned by async methods - replaced by PromiseState.Pending .

EarthState

  
 EarthState 

Describes the current state of Earth localization.

When AREarthManager.EarthTrackingState does not become UnityEngine.XR.ARSubsystems.TrackingState.Tracking , EarthState may contain the cause of this failure.

Properties

Earth localization is enabled, and has not encountered any problems.

Check AREarthManager.EarthTrackingState to determine if the Geospatial API can be used.

Failed to acquire Earth.

This is returned when the current session is initializing Geospatial functionalities. This state should not be active for more than a few frames.

Earth localization has been disabled on this session.

All ARGeospatialAnchor created during this session will have UnityEngine.XR.ARSubsystems.XRCpuImage set to UnityEngine.XR.ARSubsystems.TrackingState.None and should be destroyed.

Earth localization has encountered an internal error.

The app should not attempt to recover from this error. Please see application logs for additional information.

The authorization provided by the application is not valid.

  • The Google Cloud project may not have enabled the ARCore API.
  • When using API key authentication, this will happen if the API key in the manifest is invalid, unauthorized. It may also fail if the API key is restricted to a set of apps not including the current one.
  • When using keyless authentication, this may happen when no OAuth client has been created, or when the signing key and package name combination does not match the values used in the Google Cloud project. On Android, it may also fail if Google Play Services isn't installed, is too old, or is malfunctioning for some reason (e.g. killed due to memory pressure).

The package is older than the supported version.

The application has exhausted the quota allotted to the given Google Cloud project.

The developer should request additional quota for the ARCore API for their project from the Google Cloud Console.

Failed to find a valid ARCore session.

This is returned when the session is not active or not fully initialized, see UnityEngine.XR.ARFoundation.ARSession.state for details on the state of the session.

FeatureMapQuality

  
 FeatureMapQuality 

Indicates the quality of feature points seen by ARCore in the preceding few seconds from a given camera Pose .

A higher quality indicates that a Cloud Anchor hosted at the current time, with the current set of recently seen feature points, is generally easier to resolve more accurately. See the Cloud Anchors developer guide for more information.

Properties

The quality of feature points seen from the pose in the preceding few seconds is likely sufficient for ARCore to successfully resolve a Cloud Anchor with a high degree of accuracy.

The quality of feature points seen from the pose in the preceding few seconds is low.

This state indicates that ARCore will likely have more difficulty resolving the Cloud Anchor. Encourage the user to move the device, so that the desired position of the Cloud Anchor to be hosted is seen from different angles.

The quality of feature points seen from the pose in the preceding few seconds is likely sufficient for ARCore to successfully resolve a Cloud Anchor, although the accuracy of the resolved pose will likely be reduced.

Encourage the user to move the device, so that the desired position of the Cloud Anchor to be hosted is seen from different angles.

FeatureSupported

  
 FeatureSupported 

Indicates whether a feature or capability is supported on the device.

Properties

The feature or capability is supported.

Support is unknown.

This could be because support is still being determined.

The feature or capability is not supported.

GeospatialMode

  
 GeospatialMode 

Describes the desired behavior of the ARCore Geospatial API.

The Geospatial API uses a combination of Google's Visual Positioning System (VPS) and GPS to determine the geospatial pose.

The Geospatial API is able to provide the best user experience when it is able to generate high accuracy poses. However, the Geospatial API can be used anywhere, as long as the device is able to determine its location, even if the available location information has low accuracy.

  • In areas with VPS coverage, the Geospatial API is able to generate high accuracy poses. This can work even where GPS accuracy is low, such as dense urban environments. Under typical conditions, VPS can be expected to provide positional accuracy typically better than 5 meters and often around 1 meter, and a rotational accuracy of better than 5 degrees. Use AREarthManager.CheckVpsAvailabilityAsync(double, double) to determine if a given location has VPS coverage.
  • In outdoor environments with few or no overhead obstructions, GPS may be sufficient to generate high accuracy poses. GPS accuracy may be low in dense urban environments and indoors.

A small number of ARCore supported devices do not support the Geospatial API. Use AREarthManager.IsGeospatialModeSupported(GeospatialMode) to determine if the current device is supported. Affected devices are also indicated on the ARCore supported devices page .

When the Geospatial API and the Depth API are enabled, output images from the Depth API will include terrain and building geometry when in a location with VPS coverage. See the Geospatial Depth Developer Guide for more information.

The default value is GeospatialMode.Disabled . Use ARCoreExtensionsConfig.GeospatialMode to set the desired mode.

Properties

The Geospatial API is disabled.

When a configuration with Disabled becomes active on the AR session, current anchors created from ARAnchorManagerExtensions.AddAnchor( UnityEngine.XR.ARFoundation.ARAnchorManager, double, double, double, UnityEngine.Quaternion) will stop updating and have their UnityEngine.XR.ARSubsystems.TrackingState set to UnityEngine.XR.ARSubsystems.TrackingState.None .

ARCore Extensions will not request location permissions.

The Geospatial API is enabled, and AREarthManager can be used.

Using this mode requires your app do the following:

Location is tracked only while ARSession is enabled. While it is disabled, AREarthManager.EarthTrackingState will be UnityEngine.XR.ARSubsystems.TrackingState.None .

For more information, see documentation on the Geospatial API on Google Developers .

This mode is not compatible with the CameraFacingDirection.User (selfie) camera; use the CameraFacingDirection.World camera instead.

Not all devices support this mode, use AREarthManager.IsGeospatialModeSupported(GeospatialMode) to check if the current device and selected camera support enabling this mode.

When the Geospatial API and the Depth API are enabled, output images from the Depth API will include terrain and building geometry when in a location with VPS coverage. See the Geospatial Depth Developer Guide for more information.

PlaybackResult

  
 PlaybackResult 

Results from attempting to set playback dataset filepath.

Properties

Playback failed.

The session was not paused when setting the playback dataset.

Operation is unsupported with the current session.

OK

The request completed successfully.

The call to ARPlaybackManager.SetPlaybackDataset(string) failed because ARCore is currently attempting to resume or pause the session.

Try calling it again in the next frame. Note:

  • Resuming session may require several frames to complete.
  • Pausing session may take up to 10 seconds to pause.

PlaybackStatus

  
 PlaybackStatus 

Describes the current playback status.

Properties

Playback has finished successfully.

The session is waiting on the final frame of the dataset. To resume a live camera feed or play another dataset, pause the session, call ARPlaybackManager.SetPlaybackDataset(string) , and resume the session.

Playback has stopped due to an error.

The session is not playing back a dataset.

OK

Playback is in process without issues.

PromiseState

  
 PromiseState 

Describes state of an async operation.

Properties

The operation has been cancelled.

The operation is completed and the result is available.

The operation is still pending.

It may still be possible to cancel the operation. The result of the operation isn't available yet.

RecordingResult

  
 RecordingResult 

Results from recording methods.

Properties

When using ARRecordingManager.StartRecording(ARCoreRecordingConfig) , this means a recording is already in progress.

When using ARRecordingManager.RecordTrackData(Guid, byte[]) , this means either RecordingStatus is not currently RecordingStatus.OK or the system is currently under excess load for images to be produced. The system should not be under such excess load for more than a few frames and an app should try to record the data again during the next frame.

When using ARRecordingManager.StartRecording(ARCoreRecordingConfig) , this means the ARCoreRecordingConfig was null or invalid.

When using ARRecordingManager.RecordTrackData(Guid, byte[]) , this means the track id or payload given are null or invalid.

IO or other general failure.

OK

The request completed successfully.

The call to ARRecordingManager.StartRecording(ARCoreRecordingConfig) failed because ARCore is currently attempting to resume or pause the session.

Try calling it again in the next frame. Note:

  • Resuming session may require several frames to complete.
  • Pausing session may take up to 10 seconds to pause.

RecordingStatus

  
 RecordingStatus 

Describes the current recording status.

Properties

There was an IO error while recording.

The recorder is not recording.

OK

The recorder is recording normally.

RooftopAnchorState

  
 RooftopAnchorState 

Describes the Rooftop anchor state of an synchronous operation launched by ARAnchorManagerExtensions.ResolveAnchorOnRooftopAsync(this ARAnchorManager, double, double, double, UnityEngine.Quaternion) .

Obttained by ResolveAnchorOnRooftopResult.RooftopAnchorState .

Properties

A resolving task for this Rooftop anchor has completed with an internal error.

The app should not attempt to recover from this error.

The app cannot communicate with the ARCore Cloud because of an invalid authentication.

Check Project Settings > XR Plug-in Management > ARCore Extensions for a valid authentication strategy.

There is no rooftop or terrain information at this location, such as the center of the ocean.

Not a valid value for a Rooftop anchor operation.

A resolving task for this Rooftop anchor has completed successfully.

SemanticLabel

  
 SemanticLabel 

Defines the labels the Scene Semantics API is able to detect and maps human-readable names to per-pixel semantic labels.

See the Scene Semantics Developer Guide for more information.

Use ARSemanticManager.TryGetSemanticTexture(ref Texture2D) to obtain an image containing these pixels and ARSemanticManager.TryGetSemanticConfidenceTexture(ref Texture2D) , and ARSemanticManager.GetSemanticLabelFraction(SemanticLabel) to query what percentage of the image contains these pixels.

Properties

Pixels of buildings, including houses, garages, etc.

Includes all structures attached to the building, such as signs, solar panels, scaffolding, etc.

Pixels of general temporary and permanent objects and obstacles, including street signs, traffic signs, free-standing business signs, billboards, poles, mailboxes, fire hydrants, street lights, phone booths, bus stop enclosures, cones, parking meters, animals, etc.

Pixels of humans, including pedestrians and bicycle/motorcycle riders.

Pixels of drivable surfaces for vehicles, including paved, unpaved, dirt, driveways, crosswalks, etc.

Pixels of sidewalks for pedestrians and cyclists, including associated curbs.

Sky

Pixels of the open sky, including clouds.

Thin electrical wires in front of the sky are included, but leaves/vegetation are not included.

Pixels of structures that are not buildings, including fences, guardrails, stand-alone walls, tunnels, bridges, etc.

Pixels of walkable vegetation areas, including grass, soil, sand, mountains, etc.

In contrast, 'tree' specifies non-walkable vegetation, like trees and bushes.

Pixels of non-walkable vegetation, like trees and shrubs.

In contrast, 'terrain' specifies walkable vegetation, like grass.

Pixels with no semantic label available in the API output.

Pixels of vehicles, including cars, vans, buses, trucks, motorcycles, bicycles, trains, etc.

Pixels of ground surfaces covered by water, including lakes, rivers, etc.

SemanticMode

  
 SemanticMode 

Describes the desired behavior of Scene Semantics.

Scene Semantics uses a machine learning model to label each pixel from the camera feed with a SemanticLabel . See the Scene Semantics Developer Guide for more information.

The Scene Semantics API is currently able to distinguish between outdoor labels specified by SemanticLabel . Usage indoors is currently unsupported and may yield unreliable results.

A small number of ARCore supported devices do not support the Scene Semantics API. Use ARSemanticManager.IsSemanticModeSupported(SemanticMode) to query for support for Scene Semantics. Affected devices are also indicated on the ARCore supported devices page .

The default value is SemanticMode.Disabled .

StreetscapeGeometryMode

  
 StreetscapeGeometryMode 

Describes the desired behavior of the Geospatial Streetscape Geometry API.

The Streetscape Geometry API provides polygon meshes of terrain, buildings, and other structures in a radius surrounding the device. See the Streetscape Geometry Developer Guide for additional information.

When Streetscape Geometry is enabled, ARStreetscapeGeometryManager can be used.

The Streetscape Geometry API requires both StreetscapeGeometryMode to be set to StreetscapeGeometryMode.Enabled and GeospatialMode to be set to GeospatialMode.Enabled .

The default value is StreetscapeGeometryMode.Disabled . Use ARCoreExtensionsConfig.StreetscapeGeometryMode to set the desired mode.

Properties

The Streetscape Geometry API is disabled.

This is the default mode.

The Streetscape Geometry API is enabled.

ARStreetscapeGeometryManager can be used.

Use ARCoreExtensionsConfig.StreetscapeGeometryMode to set this mode.

StreetscapeGeometryQuality

  
 StreetscapeGeometryQuality 

Describes the quality of the mesh data.

The values correspond to the levels of detail (LOD) defined by the CityGML 2.0 standard .

Obtained by ARStreetscapeGeometry.quality .

Properties

The StreetscapeGeometryType.Building geometry is the building footprint extruded up to a single flat top.

The building contains empty space above any angled roofs.

The StreetscapeGeometryType.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 mesh.

The quality of the geometry is not defined, e.g.

when the StreetscapeGeometryType is StreetscapeGeometryType.Terrain .

StreetscapeGeometryType

  
 StreetscapeGeometryType 

Describes the type of a Streetscape Geometry.

Obtained by ARStreetscapeGeometry.streetscapeGeometryType .

Properties

This geometry represents a building.

This geometry represents the ground or floor.

TerrainAnchorState

  
 TerrainAnchorState 

Describes the result of a Terrain anchor resolving operation.

Properties

A resolving task for this Terrain anchor has completed with an internal error.

The app should not attempt to recover from this error.

The app cannot communicate with the ARCore Cloud because of an invalid authentication.

Check Project Settings > XR Plug-in Management > ARCore Extensions for a valid authentication strategy.

There is no terrain info at this location, such as the center of the ocean.

Not a valid value for a Terrain anchor operation.

A resolving task for this Terrain anchor has completed successfully.

A resolving task is in progress for this Terrain anchor.

Once the task completes in the background, the Terrain anchor will get a new state after the next update.

Deprecated. Not returned by async methods. Replaced by PromiseState.Pending .

VpsAvailability

  
 VpsAvailability 

Describes the result of checking VPS availability at specific location.

Properties

VPS is available at the requested location.

An internal error occurred while determining availability.

The external service could not be reached due to a network connection error.

An authorization error occurred when communicating with the Google Cloud ARCore API.

See Enable the Geospatial API for troubleshooting steps.

Too many requests were sent.

VPS is not available at the requested location.

The request to the remote service is not yet completed, so the availability is not yet known, or the AR Subsystem is not ready yet.

Design a Mobile Site
View Site in Mobile | Classic
Share by: