配置EasyAR Sense Unity Plugin

所有EasyAR Sense Unity Plugin文档将在近期更新,将会上线更多使用细节和API描述...

这篇文章介绍如何使用EasyAR Unity Package配置EasyAR。

安装需求

  • Unity 5.6.5f1或以上版本

  • (如果要发布Android应用) Unity 5.6.5f1 需要老的 Android SDK Tools 25.0.1,较新的Unity版本无此要求

    (请参考 Unity issue)

  • (如果要发布iOS应用) ARM64 CPU的iPhone、iPad等iOS真机(EasyAR不支持在模拟器和ARMv7上运行)

EasyAR Package

EasyAR Sense Unity Plugin unitypackage 分为三种

  • Basic unitypackage包含

    • HelloAR_BackAndFrontCamera 演示前后置摄像头切换

    • HelloAR_Coloring3D 演示如何创建“AR涂涂乐”,使绘图书中的图像实时“转换”成3D

    • HelloAR_ImageTarget 演示创建target的不同方法; 演示动态创建target

    • HelloAR_ImageTarget_Cloud 演示如何使用云识别

    • HelloAR_ImageTarget_Video 演示如何使用EasyAR加载并在target上播放视频

    • HelloAR_ImageTracking_ImageTargetData 演示通过ImageTargetData创建target的方法

    • HelloAR_Multi_ImageTarget 演示如何使用一个tracker同时跟踪多个目标

    • HelloAR_SurfaceTracking 演示如何使用表面跟踪

    • HelloAR_TargetOnFly 演示如何直接从相机图像中实时创建target并load到tracker中

    • HelloAR_TransparentVideo 演示如何使用Unity Video Player加载视频,用自定义shader实现透明视频播放

  • Pro unitypackage包含

    • HelloAR_ObjectTarget 演示如何跟踪3D物体

    • HelloAR_Recorder 演示如何录屏

  • CustomCamera unitypackage包含

    • HelloAR_CustomCamera 演示如何使用非系统API的自定义摄像头创建一个EasyAR应用

注意 Basic 版本没有 Pro 版本的功能,因此 Basic unitypackage 和 Pro unitypackage 中的 scene 不重合, 但 Pro unitypackage 里面有 Basic unitypackage 的全部代码。

Basic unitypackage 的代码、场景和资源可以直接移到 Pro unitypackage 的工程里。

Basic 和 Pro 版本都支持 CustomCamera。

创建工程

创建工程时,选择3D。EasyAR当前不支持Lightweight RP等其他Render Pipeline。如需使用,应自行实现摄像机背景渲染等功能。

../_images/image113.png

导入Package

首先,你需要下载EasyAR压缩包,找到EasyAR Unity Package(.unitypackage) ,打开并导入到Unity中。

../_images/image100.png

目录结构

  • [EasyAR] 存放EasyAR资源和代码的目录

    • [Common] 存放公共资源,注意里面有EasyARSetting专门填key的文件

    • [Scripts] 包含EasyARSample重要代码,以及原始API接口文件 csapi.cs

    • [Shaders] 公共shader,画相机画面背景,cube,以及透明视频相关的

  • [Plugins] Android/iOS/Window/Mac 平台二进制库和相关交互代码存放的目录

  • [samples] Sample的资源和代码存放的目录

    • [Resources] EasyAR sample场景资源,与Scenes对应

    • [Scenes] EasyAR sample场景

  • [StreamingAssets] Unity不会编译的资源文件, 然后EasyAR可以load这些文件作为target数据。

初始化EasyAR

EasyAR正常工作需要验证key初始化, 你需要找到EasyARKey, 在inspector面板中输入key。

../_images/image101.png

你可以在登录EasyAR网站后创建key。你可以在 EasyAR Sense入门 找到如何操作。然后使用这个key来初始化EasyAR。

Android API Level

EasyAR Sense 需要 Android Api Level 17 或以上。

../_images/image102.png

Bundle ID(Android/iOS)

你需要在生成Android/iOS应用的时候设置bundle ID。 bundle ID 应该与easyar网页上生成的ID相同。否则可能造成SDK初始化失败并黑屏。如果是在 Mac or Windows上,这个ID就不需要了。

../_images/image103.png

Graphics API(Android/iOS)

当使用录屏sample的时,导出Android和iOS应用的时候,应注意,

  • 设置Graphics API 为OpenGL ES 2.0/3.0。

  • Android应去掉对Multithreaded Rendering的勾选。

  • Android 配置如下

../_images/image104.png
  • iOS 配置如下,如果没有OpenGLES2,可以点击图中加号。

../_images/image105.png

关闭 bitcode 选项

EasyAR Sense不支持bitcode,可以在XCode BuildSetting里面搜索并设置该选项为NO。

../_images/image106.png

iOS 隐私配置

你可以在Unity playerSetting里设置

../_images/image108.png

或者

在Xcode里找到Info.plist文件里面。

如果要使用 camera,添加 Privacy - Camera Usage Description

../_images/image110.png

如果要使用录屏,添加 Privacy - Microphone Usage Description

../_images/image109.png

iOS ARM64 支持

Player Settings 中手动打开 IL2CPP 选项,并修改 architecture 为 Universal 或 arm64。iOS 上的 Mono 脚本后台和 armv7 已经不被支持。

../_images/image111.png

Android ARM64 支持

Unity 是从2017.4开始支持ARM64的。

具体请参考 Android官方文档

ARCore支持

在手机上通过Google Play Store安装Google Play Services for AR。当前支持1.6和以上版本。

保证在使用ARCore之前调用了

System.loadLibrary("arcore_sdk_c");

(示例中已经调用)

ARCore SDK升级

当前嵌入的ARCore SDK版本为1.6,支持Google Play Services for AR 1.6和以上版本。

可以升级到更新的ARCore SDK。以升级到1.14为例。

在任意Android Studio项目app/build.gradle的dependencies中加入

implementation 'com.google.ar:core:1.14.0'

并编译,可以在gradle缓存中获得core-1.14.0.aar。(可在计算机用户文件夹/.gradle中搜索)

作为.zip文件打开,并将其中的classes.jar复制到Assets/Plugins/Android/libs下改名为arcore-classes.jar,将jni/armeabi-v7a和jni/arm64-v8a文件夹下的libarcore_sdk_c.so复制到Assets/Plugins/Android/libs下对应文件夹中替换对应文件。