AR Foundation 场景构建

建议先阅读 AR Foundation 配置 以正确配置AR Foundation,并确保 EasyAR 配置Unity XR > AR Foundation Support 是开启状态。

什么情况下需要使用AR Foundation

Unity AR Foundation封装了一些跨平台的运动跟踪能力,请阅读 运动跟踪与EasyAR功能 来了解EasyAR功能与运动跟踪的关系,以及是否需要和什么时候需要使用AR Foundation。

多数情况下,你完全可以不使用AR Foundation,EasyAR将在所有受支持的设备上正常工作。你需要在以下两种情况下考虑使用AR Foundation:

  1. 如果你需要在所有支持ARCore的小米和红米手机上使用ARCore,请使用AR Foundation。由于小米厂商实现有bug,EasyAR的ARCore实现已经禁用部分小米手机,包括米9、米10、红米K20、红米K30、红米K40等系列(这里列出的不全,我们会根据情况随时调整)。在这些手机上,默认配置下将不会使用ARCore,在支持EasyAR运动跟踪的手机上会使用EasyAR运动跟踪。

  2. 如果你需要使用的ARCore或ARKit提供的一些功能在EasyAR中未封装,你也可以使用AR Foundation。比如AR Foundation提供了对ARKit的 ARKitFaceManager 的支持,EasyAR并没有封装这个功能。

然而使用AR Foundation对EasyAR的功能来说有时并不是最优的:

  1. 在使用EasyAR Mega时,AR Foundation默认使用的配置并不是最优的,虽然EasyAR提供了选项对其进行优化,但需要注意的是,部分手机自身(比如小米10)存在bug,在修改配置之后无法获取图像,EasyAR将无法使用。使用时需要注意。

  2. 在EasyAR禁用的部分小米手机上,输入EasyAR的数据是灰度图而非彩色图,这会影响部分算法的效果。

注意

AR Foundation的支持是通过EasyAR Sense的自定义相机实现的。在自定义相机或头显上使用试用产品(个人版license、试用版XR license或试用版Mega服务等)时,EasyAR Sense每次启动后会在固定的有限时间内停止响应。使用付费版本的EasyAR Sense和付费的EasyAR Mega服务没有这个限制。

在AR Foundation场景中添加EasyAR支持

在AR Foundation场景添加EasyAR没有太多的特殊性,可以参考 AR SessionCameraXR Origin 进行创建和配置。

需要注意XR Origin及Camera需要使用场景中现有的物体,不需要单独创建。

在EasyAR场景中添加AR Foundation支持

移除Camera和XR Origin (EasyAR)

如果你的场景里已经存在 Camera ,需要将其删除

../_images/image_as4_1.png

如果你的场景里已经存在 XR Origin (EasyAR) ,需要将其删除

../_images/image_as4_2.png

该节点下的所有子物体应该移动到下面新创建的XR Origin节点下,如果不移动则这些子节点不会按预期工作。

添加Unity AR Session和XR Origin

请遵循 AR Foundation 介绍 中的 Project Setup > Scene Setup 来添加AR Foundation的组件。注意选择你所使用的AR Foundation的版本来阅读。至少需要在场景中添加 AR Session 和 XR Origin。

使用右键菜单 XR > AR Session 添加 Unity的ARSession到场景中(这与EasyAR的ARSession不是一个东西,不冲突),

../_images/image_as4_3.png

使用右键菜单 XR > XR Origin (Mobile AR) 添加 Unity的XR Origin到场景中(这与EasyAR的XR Origin用途类似,你需要删除EasyAR的XR Origin),

../_images/image_as4_4.png

参考 Camera 调整Camera参数。

设备兼容与AR Foundation的动态启用

EasyAR兼容的设备比AR Foundation多的多,只要你不是只需要在支持AR Foundation的手机上运行,就都需要进行配置,只在需要时启用AR Foundation,其余情况需要完全关闭AR Foundation。

确保ARSession中包含你所需要的Frame Source

参考 AR Session 的描述,通过功能菜单创建的ARSession通常会自动添加 ARCore ARFoundation 以及 ARKit ARFoundation (部分图像跟踪等不需要SLAM功能的除外)。

../_images/image_as4_5.png

如果它们不在你的ARSession中,你也可以通过菜单手动添加。

../_images/image_as4_6.png

为了在AR Foundation不支持的手机上运行,还需要确保ARSession包含AR Foundation以外的Frame Source。一个典型的ARSession(通过菜单创建的默认配置)可能是这样的,

../_images/image_as4_7.png

可以参考 AR Session 的描述,根据需要使用菜单对FrameSource进行排序。

仅在受支持的设备上启用AR Foundation

由于Unity的AR Foundation在手机上底层实现是ARCore和ARKit,只能在有限的设备上使用,尤其是很多国产Android手机上无法使用,所以通常建议仅在受支持的设备上启用对应脚本。

插件内置了这样的功能,确保 EasyAR 配置Unity XR > Unity XR Auto Switch 启用即可。可以阅读 Unity XR 自动切换 来了解其行为,或根据需要自行修改AR Foundation脚本功能开关。

保留AR Foundation兼容性的EasyAR场景

正确添加了AR Foundation组件的场景,可以在AR Foundation包安装或未安装时都正常工作。

未安装AR Foundation时AR Foundation的功能及对应Frame Source不可用,且场景中会有部分脚本缺失,属于正常情况。

../_images/image_as4_8.png ../_images/image_as4_9.png

插件有很多sample都是属于这样的配置。如果你需要在这些sample中启用AR Foundatin支持,仅需按照 AR Foundation 配置 说明正确配置AR Foundation即可。