从零创建可运行的工程¶
这篇文章将详细描述如何使用 EasyAR Sense Unity Plugin 快速创建一个包含 平面图像跟踪 能力的AR应用的过程。
准备工作¶
准备Unity环境¶
阅读 平台需求,了解EasyAR Sense Unity Plugin支持的系统和Unity版本,并从Unity官方获取并安装Unity安装包。
如果你是初次使用,建议使用Unity官方的 长期支持版本 。
Unity 2019.4
Unity 2018.4
Unity 2017.4
准备插件包¶
从 下载页 获取EasyAR Sense Unity Plugin的发布包。本文描述的内容针对不包含sample的纯净插件包,由于所有sample的发布包都完整包含了插件本身,因此也可以使用 文件说明 中描述的任意一个发布。
获取许可证授权¶
使用EasyAR Sense之前需要先在官网 www.easyar.cn 注册并 获取许可证授权 。
创建工程¶
创建空Unity工程¶
创建工程时,Template 选择 3D。EasyAR当前默认不支持Universal Render Pipeline等其他 Scriptable Render Pipeline 。
![../_images/image_01.png](../_images/image_01.png)
![../_images/image_0_11.png](../_images/image_0_11.png)
导入插件包¶
将下载好的插件包解压,找到Unity Package(.unitypackage),双击或者托拽到Unity编辑器的Assets目录下。
![../_images/image_11.png](../_images/image_11.png)
![../_images/image_21.png](../_images/image_21.png)
填写许可证(License Key)¶
从Unity菜单中选择<EasyAR -> Change License Key>并在Inspector面板中输入准备工作中创建的License Key。
![../_images/image_31.png](../_images/image_31.png)
![../_images/image_41.png](../_images/image_41.png)
编辑场景¶
创建场景¶
创建场景或使用工程自动创建的场景,确保场景中含有Camera和光照
![../_images/image_211.png](../_images/image_211.png)
在场景中添加ARSession¶
有两种做法:
使用组装好的Composite Prefab,添加EasyAR_ImageTracker-1 Prefab到场景
![../_images/image_16.png](../_images/image_16.png)
使用独立的Primitive Prefab,添加EasyAR Prefab到场景,并添加ImageTracker Prefab、VideoCameraDevice Prefab、RenderCamera Prefab为EasyAR子节点
![../_images/image_17.png](../_images/image_17.png)
![../_images/image_18.png](../_images/image_18.png)
在场景中添加ImageTarget¶
添加ImageTarget Prefab到场景
![../_images/image_19.png](../_images/image_19.png)
这时候场景中ImageTarget应该会显示成问号
![../_images/image_20.png](../_images/image_20.png)
配置Camera¶
![../_images/image_22.png](../_images/image_22.png)
Tag: 设置Camera Tag为 MainCamera 。如果不做这个设置,则需要在场景中 EasyAR 节点的配置中选择 Assemble Mode 为 Manual 并手动配置Camera。
Clear Flags: 需要选择为 Solid Color 以确保Camera图像可以正常渲染。如果选择为 Skybox ,Camera图像将无法显示。
Background: 这个非必需配置,考虑到使用体验,建议将背景颜色设为黑色以便在Camera设备打开前和切换时以黑色显示。
Clipping Planes: 根据识别物体实际的物理距离设置。这里设置Near为0.1(米)以避免相机离物体较近时无法显示。
在StreamingAssets中添加识别图¶
在Assets中创建StreamingAssets文件夹
![../_images/image_23.png](../_images/image_23.png)
将需要识别的图片拖入StreamingAssets中。这里选用名片图。
![../_images/image_24.png](../_images/image_24.png)
配置ImageTarget¶
ImageTarget有多种创建方法,这里使用其中的一种,使用StreamingAssets中的图片创建target。
![../_images/image_25.png](../_images/image_25.png)
Source Type: 这里设置为 Image File ,表示将使用图片文件创建ImageTarget。
Path Type: 这里设置为 StreamingAssets ,表示 Path 将使用相对于StreamingAssets的路径。
Path: 图片相对于StreamingAssets的路径。
Name: target名字,可以随意输入。
Scale: 根据识别图宽度实际的物理大小设置。这里使用的名片实际大小为9mm,因此设为0.09(米)。
Tracker: 需要加载ImageTarget的Tracker。在添加ImageTarget时,它会被默认设为场景中的其中一个ImageTracker,添加后仍可修改。
场景中ImageTarget的显示将随Path的输入而随时改变
![../_images/image_26.gif](../_images/image_26.gif)
添加跟随ImageTarget的3D内容¶
在ImageTarget节点下添加3D物体,这里以添加一个Cube进行示例
![../_images/image_27.png](../_images/image_27.png)
![../_images/image_28.png](../_images/image_28.png)
Scale: Transform配置根据需求随意配,这里配置scale为 {0.5, 0.3, 0.3}。
Position: Transform配置根据需求随意配,这里为使Cube底面与识别图对其,调整position的z值为 -0.3 / 2 = -0.15 。
在编辑器中运行¶
如果电脑上连接着摄像头,经过上面的配置之后,就可以直接在Unity编辑器中运行了。
![../_images/image_29.gif](../_images/image_29.gif)
在Android设备上运行¶
根据 Android 工程配置 配置工程,然后点击Build Settings的Build按钮或通过其它方式编译项目并在手机上安装,运行时需允许相应权限。
![../_images/image_601.png](../_images/image_601.png)
在iOS设备上运行¶
根据 iOS 工程配置 配置工程,然后在XCode中编译项目并在手机上安装,运行时需允许相应权限。