与 AR Foundation 协同工作

EasyAR 支持的 AR Foundation 版本

EasyAR Sense Unity Plugin 支持 AR Foundation 4.0.8 或更新版本。

导入 AR Foundation Package

如果你在使用EasyAR的sample,需要确保在导入AR Foundation Package之后再打开sample场景,否则可能会出现异常。如果在这之前已经打开并保持了场景,建议删除并重新导入。

如果你已经有一个可以运行的AR Foundation工程,可以跳过这一步。

使用Unity Package Manager导入 AR Foundation Unity Package,

../_images/image_g7_1.png

为了在 Android 或 iOS 上使用 AR Foundation,通常还需要导入 ARCore XR PluginARKit XR Plugin Unity package 到工程中。遵循 AR Foundation 介绍 来配置必要的package。

创建可运行AR Foundation的场景

如果你已经有一个可以运行的AR Foundation工程,可以跳过这一步。

遵循 AR Foundation 介绍 来创建一个可以使用和运行 AR Foundation的场景。

一个典型的 AR Foundation 场景包含一个 AR Session 和一个 AR Session Origin.

../_images/image_g7_2.png

一般建议在这个场景可以正常运行后再进行下一步。

在场景中添加 EasyAR 组件

注意:AR Foundation 通常会设置其剪裁平面为 (0.1, 20) ,这可能会导致离 Camera (真实世界中的设备)超过20米的物体会无法显示出来。请在使用前根据具体需求来修改。

参考 从零创建可运行的工程 中的描述,在场景中添加EasyAR的AR Session及其它需要的节点。可以使用GameObject菜单中的 EasyAR Sense > 一些AR Session预设或单独功能创建完成所需功能需要的AR Session。 需要确保 session中有 ARFoundationFrameSource

SpatialMap, Cloud SpatialMap, Motion Tracking 的 AR Session 预设都包含 ARFoundationFrameSource

../_images/image_g7_3.png

Image TrackingObject Tracking 的 AR Session 预设中名字中含有 Motion Fusion 的也包含 ARFoundationFrameSource

../_images/image_g7_4.png

为了让EasyAR与 AR Foundation协同使用, 需要注意在AR Session启动后 ARFoundationFrameSource 可以被选择为Session的frame source。

通常可以设置 ARComponentPicker.FrameSourceFirstAvailableActiveChild 并确保 ARFoundationFrameSource 的transform顺序是所有可以使用的frame source的第一个,

../_images/image_g7_5.png

在上图中,如果Nreal SDK没有导入或没有添加进场景, NrealFrameSource 不会被选择使用,所以这种使用是安全的。

或者也可以设置 ARComponentPicker.FrameSourceSpecify 并手动指定为 ARFoundationFrameSource

../_images/image_g7_6.png

如果AR Session中还没有 ARFoundationFrameSource ,可以通过菜单 EasyAR Sense > Motion Tracking > Frame Source : AR Foundation 添加。

../_images/image_g7_7.png

然后需要在场景中创建 Target 或 Map,比如,如果你需要使用 稀疏空间地图 建图功能,你需要使用 EasyAR Sense > SpatialMap > Map : Sparse SpatialMap 创建 SparseSpatialMapController

../_images/image_g1_18.png

最后,一个简单的可以在使用AR Foundation同时运行稀疏空间地图和稠密空间地图建图功能的场景可能是这样的,

../_images/image_g7_8.png

场景可能会根据使用的 AR Foundation 或EasyAR Sense Unity Plugin 功能不同而不同。

运行时选择 AR Foundation

MotionTracking_Fusion 样例展示了一种高级使用,可以在app启动时根据设备能力选择 frame source ,以及允许运行时在所有可用 frame source 间切换。为了实现这种用法,你需要deactive AR Foundation使用的所有GameObject,并设置所有frame source可用性检查所需要的数值,然后在这个frame source被选择后active AR Foundation 的GameObject。

../_images/image_g7_9.png

更多说明可以阅读 ARFoundationFrameSource