ARPin 是增强现实(AR)中的固定的现实世界位置,你可以在虚幻引擎将虚拟内容附加到该位置。ARPin API在所有平台中都是一样的,但每个平台都有自己的ARPin数据实现方法。如果底层平台支持追踪现实世界的位置或现实世界的几何体,则此功能可提高ARPin位置的稳定性,使这些位置保持锁定到现实世界中对应的位置或几何体。
存储ARPin数据
除了将虚拟内容锁定到特定位置或几何体,部分平台还支持将位置数据存储在本地或云端。能够存储位置数据意味着,虚拟内容可以通过某些实现在应用程序会话与多用户体验之间保持一致。
下表介绍哪些AR平台支持将ARPin数据存储在本地或使用Microsoft Azure云服务存储在云端。
| 平台 | ARPin平台实现 | ARPin持久性平台实现 | 支持ARPin本地存储功能? | 支持Azure空间锚? |
|---|---|---|---|---|
| ARCore | 锚 | 云锚 | 否 | 是 |
| ARKit | ARAnchor | ARGeoAnchor | 否 | 是 |
| Magic Leap | PersistentCoordinateFrame (PCF) | PersistentCoordinateFrame (PCF) | 是,使用Magic Leap ARPin功能。 | 否 |
本地存储ARPin
将数据存储在本地AR设备上,内容可在应用程序会话中持久留存。有关如何在项目中添加ARPin功能的详情,参见ARPin快速入门。
将ARPin存储在云端
可以通过Azure空间锚、带ARCore的云锚和带ARKit的Geo Anchor,将ARPin存储在云端。
Azure空间锚点
将数据存储在云端意味着,虚拟内容和现实世界位置可随时在多个设备和平台之间共享。Azure空间锚是一种云实现,作为插件包含在虚幻引擎中,可以使用Microsoft Azure存储和检索ARPin数据。Azure空间锚受多个AR平台支持,其中包括:
-
支持ARCore的Android设备
-
支持ARKit的iOS设备
Azure空间锚需要用到Azure账号。
若要在项目中使用Azure空间锚,启用 Azure空间锚(Azure Spatial Anchors) 插件和特定于平台的Azure空间锚插件。
点击查看大图。
具体如何在项目中使用Azure空间锚,参见虚幻引擎中Microsoft的Azure空间锚文档。
带ARCore的云锚
除了能够在支持ARCore的设备上使用Azure空间锚,Google在云中的ARPin平台实现云锚(Cloud Anchor)通过UGoogleARCoreServicesFunctionLibrary在虚幻引擎中公开。
要使用API:
-
通过调用
UGoogleARCoreServicesFunctionLibrary::CreateAndHostCloudARPin(),根据现有ARPin创建云ARPin。 -
创建云ARPin后,调用
UCloudARPin::GetCloudID()可以访问云ID,即该引脚独有的uuid。 -
你可以在任何给定时间内通过调用
UGoogleARCoreServicesFunctionLibrary::CreateAndResolveCloudARPin()来解析之前创建的云ARPin。如果解析成功,该云ARPin将提供引脚的世界变换,显示该引脚在物理世界中的创建位置。
带ARKit的Geo Anchor
除了能够在支持ARKit的设备上使用Azure空间锚,Apple在云中的ARPin平台实现ARGeoAnchor在虚幻引擎中公开,作为UARTrackedGeometry的一个子类。
要使用API:
-
如果返回的对象可用,则调用该对象上的函数。例如,要新建Geo Anchor,使用函数
UARGeoTrackingSupport::AddGeoAnchorAtLocation()。