GARSession(CloudAnchors)
Category adding Cloud Anchor functionality to GARSession
.
Summary
Public methods |
|
---|---|
estimateFeatureMapQualityForHosting:
|
Estimates the quality of the visual features seen by ARCore in the preceding few seconds and visible from the provided camera transform.
|
hostCloudAnchor:
|
nullable GARHostCloudAnchorFuture *
Uses the transform and other data from
anchor to host a new Cloud Anchor. |
hostCloudAnchor:
|
nullable GARAnchor *
This will create a new Cloud Anchor with a given lifetime in days, using the transform of the provided anchor.
|
hostCloudAnchor:
|
nullable GARAnchor *
Hosts a new Cloud Anchor based on an
ARAnchor . |
resolveCloudAnchorWithIdentifier:
|
nullable GARResolveCloudAnchorFuture *
Attempts to resolve a Cloud Anchor using the provided
identifier . |
resolveCloudAnchorWithIdentifier:
|
nullable GARAnchor *
Resolves a Cloud Anchor with a given identifier.
|
Public methods
estimateFeatureMapQualityForHosting:error:
- (GARFeatureMapQuality)estimateFeatureMapQualityForHosting:(simd_float4x4) transformerror:(NSError **) error
Estimates the quality of the visual features seen by ARCore in the preceding few seconds and visible from the provided camera transform.
Cloud Anchors hosted using higher quality features will generally result in easier and more accurately resolved Cloud Anchor transforms.
Details | |||||
---|---|---|---|---|---|
Parameters |
|
||||
Returns |
The estimated quality of the visual features seen by ARCore in the preceding few seconds and visible from the provided camera transform.
|
GARSession
.hostCloudAnchor:TTLDays:completionHandler:error:
- (nullable GARHostCloudAnchorFuture *)hostCloudAnchor:(ARAnchor *) anchorTTLDays:(NSInteger) TTLDayscompletionHandler:(void(^)(NSString *_Nullable cloudIdentifier, GARCloudAnchorState cloudState)) completionHandlererror:(NSError **) error
Uses the transform and other data from anchor
to host a new Cloud Anchor.
A Cloud Anchor is assigned an identifier that can be used to create an GARAnchor
in the same position in subsequent sessions across devices using resolveCloudAnchorWithIdentifier:completionHandler:error:
. See the Cloud Anchors developer guide for more information.
The duration that a Cloud Anchor can be resolved for is specified by TTLDays
. When using Token authorization, the maximum allowed value is 365 days. When using an API Key to authenticate with the ARCore API, the maximum allowed value is 1 day.
This launches an asynchronous operation used to query the Google Cloud ARCore API. See GARFuture
for information on obtaining results and cancelling the operation.
Cloud Anchors requires a GARSessionConfiguration
with GARCloudAnchorModeEnabled
set on this session. Use GARSessionConfiguration.cloudAnchorMode
to set the Cloud Anchor API mode and setConfiguration:error: (GARSession)
to configure the session.
Hosting a Cloud Anchor works best when ARCore is able to create a good feature map around the ARAnchor
. Use estimateFeatureMapQualityForHosting:error:
to determine the quality of visual features seen by ARCore in the preceding few seconds. Cloud Anchors hosted using higher quality features will generally result in quicker and more accurately resolved Cloud Anchor transforms.
ARCore can have up to 40 simultaneous Cloud Anchor operations, including resolved anchors and active hosting operations.
Details | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameters |
|
||||||||
Returns |
GARSession
.hostCloudAnchor:TTLDays:error:
- (nullable GARAnchor *)hostCloudAnchor:(ARAnchor *) anchorTTLDays:(NSInteger) TTLDayserror:(NSError **) error
This will create a new Cloud Anchor with a given lifetime in days, using the transform of the provided anchor.
The cloud state of the returned anchor will be set to GARCloudAnchorStateTaskInProgress
and the initial transform will be set to the transform of the provided anchor. However, the returned anchor is completely independent of the original anchor, and the two transforms might diverge over time.
Hosting requires an active session for which the tracking state is ARTrackingStateNormal
, as well as a working internet connection. ARCore will continue to retry silently in the background if it is unable to establish a connection to the ARCore API service.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameters |
|
||||||
Returns |
The new
GARAnchor , or nil if there is an error. |
GARSession
.hostCloudAnchor:error:
- (nullable GARAnchor *)hostCloudAnchor:(ARAnchor *) anchorerror:(NSError **) error
Hosts a new Cloud Anchor based on an ARAnchor
.
The new anchor will have a cloud state of GARCloudAnchorStateTaskInProgress
and its initial transform will be set to that of the passed-in anchor. However, the two transforms may differ over time.
Details | |||||
---|---|---|---|---|---|
Parameters |
|
||||
Returns |
The new
GARAnchor , or nil if there is an error. |
GARSession
.resolveCloudAnchorWithIdentifier:completionHandler:error:
- (nullable GARResolveCloudAnchorFuture *)resolveCloudAnchorWithIdentifier:(NSString *) identifiercompletionHandler:(void(^)(GARAnchor *_Nullable anchor, GARCloudAnchorState cloudState)) completionHandlererror:(NSError **) error
Attempts to resolve a Cloud Anchor using the provided identifier
.
The Cloud Anchor must previously have been hosted by hostCloudAnchor:TTLDays:completionHandler:error:
or another Cloud Anchor hosting method within the allotted TTLDays
. See the Cloud Anchors developer guide for more information.
This launches an asynchronous operation used to query the Google Cloud ARCore API. See GARFuture
for information on obtaining results and cancelling the operation.
When resolving a Cloud Anchor, the ARCore API periodically compares visual features from the scene against the anchor's 3D feature map to pinpoint the user's position and orientation relative to the anchor. When it finds a match, the task completes.
Cloud Anchors requires a GARSessionConfiguration
with GARCloudAnchorModeEnabled
set on this session. Use GARSessionConfiguration.cloudAnchorMode
to set the Cloud Anchor API mode and setConfiguration:error: (GARSession)
to configure the session.
ARCore can have up to 40 simultaneous Cloud Anchor operations, including resolved anchors and active hosting operations.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameters |
|
||||||
Returns |
GARSession
.resolveCloudAnchorWithIdentifier:error:
- (nullable GARAnchor *)resolveCloudAnchorWithIdentifier:(NSString *) identifiererror:(NSError **) error
Resolves a Cloud Anchor with a given identifier.
The new anchor is immediately added to the session and returned, but without a valid transform. You don’t need to wait for a call to resolve a Cloud Anchor to complete before initiating another call. A session can be resolving up to 40 Cloud Anchors at a given time. If resolving fails, the anchor will be automatically removed from the session.
Details | |||||
---|---|---|---|---|---|
Parameters |
|
||||
Returns |
The new
GARAnchor , or nil if there is an error. |
GARSession
.