ARCore 配置¶
什么情况下需要使用ARCore¶
EasyAR本身的功能并不依赖ARCore,EasyAR的功能也不一定需要在有ARCore的情况下才能运行。但在运行一些功能的时候,你可能会希望在支持ARCore的设备上使用ARCore的运动跟踪功能。
关于运动跟踪:EasyAR的运动跟踪功能(MotionTracker)与ARCore的运动跟踪功能是类似的,在Unity插件中,一个典型的ARSession会根据具体配置及设备支持情况来选择使用哪个运动跟踪功能。
在使用以下这些功能的时候,你是需要运行一个运动跟踪算法的,这时可以考虑使用ARCore,以便在支持ARCore的设备上使用ARCore的运动跟踪。如果在这些功能时不使用ARCore,一般情况下将使用EasyAR自身的运动跟踪功能。
运动跟踪
识别平面并在平面上放置物体(这时你需要使用EasyAR Motion Tracker或AR Foundation)
稀疏空间地图
稠密空间地图
运动融合
云空间地图
需要注意的是,在一些设备上,比如Nreal眼镜上,运动跟踪功能来自眼镜设备本身,而非EasyAR或ARCore。
在仅使用以下这些功能的时候,你不需要使用运动跟踪算法,这时如有需要可以关闭ARCore的打包检查,
平面图像跟踪(不使用运动融合)
3D 物体跟踪(不使用运动融合)
云识别
多目标跟踪
表面跟踪
选择 ARCore SDK¶
根据对ARCore的不同使用方式来更改 ARCore SDK
选项。
AR Foundation Or Optional
: 随EasyAR或AR Foundation
一起分发的ARCore SDK将会被包含在应用中,根据ARCore XR Plugin的设置决定。一般情况下推荐使用这个选项,它会自动处理AR Foundation
的情况。Optional
: ARCore 功能在支持ARCore并安装了Google Play Services for AR的设备上可以使用。Required
: 应用将只能在支持ARCore并安装了Google Play Services for AR的设备上运行。External
: 如果你在使用AR Foundation
或其它ARCore SDK分发,可以使用这个选项。这样随EasyAR一起分发的ARCore SDK将不会使用。你也可以使用这个选项来完全排除ARCore SDK在应用中的使用。
关于 Optional
和 Required
的详细说明及上线Google Play Store应用需要做的其它配置可以参考 Google的说明 。
使用随插件分发的 ARCore SDK¶
在EasyAR Sense Unity Plugin中,ARCore的支持所需的库文件和配置已经在插件包中,但要在手机上运行,仍需在手机上安装 Google Play Services for AR 。
EasyAR的ARCore 封装在使用随EasyAR一起分发的ARCore SDK时,不会要求使用GLES3,这与 AR Foundation
所使用的 ARCore XR Plugin
不同。但是我们没有导出 ARCore
的丰富功能。如果你需要使用ARCore的平面检测等功能,仍旧建议使用 AR Foundation
。
使用ARCore必须使用Gradle 5.6.4或更高版本打包。如果当前使用的Gradle版本过低,打包时会弹出错误信息,这时如果选择继续打包,将会打包失败。
Unity 2019.4自带的Gradle版本低于上述要求,需按下面要求进行配置。对于其它版本的Unity,如果使用了自定义的Gradle,也需要确保Gradle版本满足要求。
Unity 2019.4¶
可以参考以下说明或 Google的说明 来更新工程使用的Gradle版本。
前往 Preferences > External Tools > Android > Gradle
,并设置Gradle为Gradle 5.6.4或更高版本。可以访问 Gradle构建工具 下载Gradle。
前往 Project Settings > Player > Android tab > Publishing Settings > Build
,选择这两个,
Custom Main Gradle Template
Custom Launcher Gradle Template.
然后根据下面描述修改这两个文件,
Assets/Plugins/Android/mainTemplate.gradle
Assets/Plugins/Android/launcherTemplate.gradle
删除文件顶部注释(如果存在),
// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN
然后在文件顶部插入以下几行,
buildscript {
repositories {
google()
jcenter()
}
dependencies {
// Must be Android Gradle Plugin 3.6.0 or later. For a list of
// compatible Gradle versions refer to:
// https://developer.android.com/studio/releases/gradle-plugin
classpath 'com.android.tools.build:gradle:3.6.0'
}
}
allprojects {
repositories {
google()
jcenter()
flatDir {
dirs 'libs'
}
}
}
如果你使确实不需要使用ARCore,可以选择 Continue and disable ARCore
,或者选择 Disable AR Core
选项,这将关闭打包时的检查。如果在关闭ARCore的情况下使用EasyAR的ARCore封装(包含它在场景中时对其自动进行可用性检查),将在运行时弹出提示信息。
Target Architecture¶
根据Google的政策,在arm64的设备上运行仅有armv7的程序,ARCore不会正常工作。在打包时如果未选择ARM64会弹出警告,
这时需要修改项目配置,使用IL2CPP编译并选择ARM64支持。
如确有需要,你可以选择 Continue and don't warn me again
,或者关闭 Verify 32bit Only AR Core When Build
选项,这将关闭打包时的检查。关闭检查只是在打包时不弹出提示,但运行时在一些设备上将有可能出现异常,包括但不限于崩溃或黑屏等。
使用 AR Foundation的 ARCore SDK¶
如果需要使用 AR Foundation的 ARCore SDK,可以参考 Google的说明 进行配置,这时 ARCore SDK
选项需要选择 AR Foundation Or Optional
或 External
。
使用其它ARCore SDK¶
如果有其它第三方插件或项目内有ARCore SDK的分发,也可以使用这些ARCore SDK。这时 ARCore SDK
选项需要选择 External
,并根据具体插件或项目的要求进行配置。