原文地址:https://developers.google.com/ar/develop/java/cloud-anchors/overview-android#how-hosted
使用云锚点创建Android和iOS用户可以共享的多人或协作式AR体验。
通过使用云锚点,您的应用程序允许用户将虚拟对象添加到AR场景中。然后,多个用户可以从共享的物理空间中的不同位置同时查看这些对象并与之交互。
云锚点的行为和功能与锚点类似,但不同之处在于它们托管在ARCore云锚点服务上。该托管使用户可以共享体验。
为了实现这些共享体验,ARCore连接到ARCore云锚点服务,以托管和解析锚点。这需要有效的网络连接。
托管和解析涉及以下步骤:
要使用云锚点创建良好的用户体验,重要的是要详细了解托管过程,以便您可以调整应用程序的设计以帮助用户成功使用。
为了建立和托管锚点,ARCore使用锚点(兴趣中心[the center of interest])周围空间的3D特征图(feature map)。要获取此特征图,设备的后置摄像头必须在主机呼叫(hostCloudAnchor()
))前30秒内从不同的视角和位置映射兴趣中心及其周围的环境。
从ARCore SDK 1.12开始,此主机调用使ARCore将来自设备相机的最近30秒内的选定可视数据上传到ARCore 云锚点服务,该服务处理可视数据以构建3D特征图并返回云锚点 ID。
正确创建3D特征图对于获得出色的用户体验至关重要。否则,映射质量可能会受到限制,从而使解析更加困难。为了提高特征图质量,我们建议用户界面(UI)明确指示用户围绕锚点从不同的视角和位置移动设备,从而在兴趣中心周围尽可能多地绘制特征图。
托管云锚点:
hostCloudAnchor()
)函数发起托管请求。Anchor.CloudAnchorState
检查托管锚点(包括错误处理消息)的状态。ARCore 云锚点服务会创建空间的3D特征图,并将唯一的云锚点 ID返回到设备。
锚点应该被托管着。
Anchor.CloudAnchorState
使您可以检查托管锚点的状态(包括错误处理消息)。
当同一环境中的另一个用户将其设备摄像头指向托管云锚点的区域时,解析请求(resolveCloudAnchor()
))使ARCore 云锚点服务定期将场景中的视觉特征与创建的3D特征图进行比较。 ARCore用于确定用户相对于云锚点的位置和方向。这就是为什么在托管请求之前的30秒内尽可能在兴趣中心周围映射环境很重要。
您可以依次启动多个云锚点的解析。最多可以同时解析20个云锚点。
使用与托管设备相同或不同的设备,请按照以下步骤解析托管锚点。
在会话开始之前,请等待几秒钟,以使跟踪时间稳定下来,然后再尝试解析锚点。
在与托管锚相同的环境中,扫描原始的兴趣区域,确保:
调用resolveCloudAnchor()
)并使用 Anchor.CloudAnchorState
来定期检查解决请求的状态。
如果您想取消请求,请调用detach()
)。
ARCore不断轮询ARCore Cloud Anchor API,将可视数据发送到ARCore 云锚点服务。
ARCore 云锚点服务将场景中的视觉特征与创建的3D特征图进行比较。找到匹配项后,服务器将返回云锚点的姿势。
云锚点应该可以解析了。测试一下吧。
Anchor.CloudAnchorState
使您可以检查托管锚的状态(包括错误处理消息)。当您使用完云锚点后,请调用detach()
)。
为了符合我们更新的使用ARCore SDK 1.12或更高版本的隐私要求,您必须显着披露云锚点的使用。有关详细信息,请参阅用户隐私要求。
云锚点具有以下数据存储和访问限制:
以下最佳做法可帮助创建良好的云锚点用户体验。
要开始使用云锚点,请参阅云锚点快速入门。
如果您不熟悉锚点,请参阅使用锚点以获取介绍。