配置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。如需使用,应自行实现摄像机背景渲染等功能。
导入Package¶
首先,你需要下载EasyAR压缩包,找到EasyAR Unity Package(.unitypackage) ,打开并导入到Unity中。
目录结构¶
[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。
你可以在登录EasyAR网站后创建key。你可以在 EasyAR Sense入门 找到如何操作。然后使用这个key来初始化EasyAR。
Android API Level¶
EasyAR Sense 需要 Android Api Level 17 或以上。
Bundle ID(Android/iOS)¶
你需要在生成Android/iOS应用的时候设置bundle ID。 bundle ID 应该与easyar网页上生成的ID相同。否则可能造成SDK初始化失败并黑屏。如果是在 Mac or Windows上,这个ID就不需要了。
Graphics API(Android/iOS)¶
当使用录屏sample的时,导出Android和iOS应用的时候,应注意,
设置Graphics API 为OpenGL ES 2.0/3.0。
Android应去掉对Multithreaded Rendering的勾选。
Android 配置如下
iOS 配置如下,如果没有OpenGLES2,可以点击图中加号。
关闭 bitcode 选项¶
EasyAR Sense不支持bitcode,可以在XCode BuildSetting里面搜索并设置该选项为NO。
iOS 隐私配置¶
你可以在Unity playerSetting里设置
或者
在Xcode里找到Info.plist文件里面。
如果要使用 camera,添加 Privacy - Camera Usage Description。
如果要使用录屏,添加 Privacy - Microphone Usage Description。
iOS ARM64 支持¶
在 Player Settings 中手动打开 IL2CPP 选项,并修改 architecture 为 Universal 或 arm64。iOS 上的 Mono 脚本后台和 armv7 已经不被支持。
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下对应文件夹中替换对应文件。