1.在EasyAR的官网注册一个账号,网址:http://www.easyar.cn/;
2.从官网下载EasyAR.SDK,链接:http://www.easyar.cn/view/download.html,下载下来为一个压缩包,里面有两个文件夹“package”和“unity”,unity文件夹中有一个EasyAR.unitypackage,我们用unity开发应用只需要用到这个;
3.点击官网的“开发”,从官网申请key,创建应用,注意这里的ID bunddle 在发布到安卓的时候会用到,会是你的应用名称;
从现在就可以开始在unity中创建项目了
4.新建一个unity工程,我用的版本是5.3.4;
5.导入第二步的EasyAR.unitypackage到unity;
6.删除场景中的main camera,从project面板中EasyAR–>prefabs中拖动EasyAR_Startup预制体到场景中;
7.再从project面板中EasyAR–>prefabs–>primitives中拖动ImageTarget预制体到场景中;
8.从hierarchy面板中选中EasyAR_Startup,其inspector面板需要输入key值,这个key值是之前在官网上创建应用时生成的,去官网将这个key复制过来就可以了,注意这个值必须要填,否则无法运行;
9.编写脚本来处理模型识别和显示,我的脚本内容如下:
//easyImageTargetBehaviour.cs
using UnityEngine;
namespace EasyAR
{
public class EasyImageTargetBehaviour : ImageTargetBehaviour
{
protected override void Awake()
{
base.Awake();
TargetFound += OnTargetFound;
TargetLost += OnTargetLost;
TargetLoad += OnTargetLoad;
TargetUnload += OnTargetUnload;
}
protected override void Start()
{
base.Start();
HideObjects(transform);
}
void HideObjects(Transform trans)
{
for (int i = 0; i < trans.childCount; ++i)
HideObjects(trans.GetChild(i));
if (transform != trans)
gameObject.SetActive(false);
}
void ShowObjects(Transform trans)
{
for (int i = 0; i < trans.childCount; ++i)
ShowObjects(trans.GetChild(i));
if (transform != trans)
gameObject.SetActive(true);
}
void OnTargetFound(ImageTargetBaseBehaviour behaviour)
{
ShowObjects(transform);
Debug.Log(“Found: “ + Target.Id);
}
void OnTargetLost(ImageTargetBaseBehaviour behaviour)
{
HideObjects(transform);
Debug.Log(“Lost: “ + Target.Id);
}
void OnTargetLoad(ImageTargetBaseBehaviour behaviour, ImageTrackerBaseBehaviour tracker, bool status)
{
Debug.Log(“Load target (“ + status + “): “ + Target.Id + “ (“ + Target.Name + “) “ + “ –> “ + tracker);
}
void OnTargetUnload(ImageTargetBaseBehaviour behaviour, ImageTrackerBaseBehaviour tracker, bool status)
{
Debug.Log(“Unload target (“ + status + “): “ + Target.Id + “ (“ + Target.Name + “) “ + “ –> “ + tracker);
}
}
}
将easyImageTargetBehaviour.cs脚本挂载在ImageTarget上,替换掉其上面的ImageTargetBehaviour脚本,还需要设置其参数,我的设置如下:
path是图片的路径,Name是图片的名称,size则是大小,这里采用的是直接从assets中找到图片的办法,所以Storage选择assets,我在第一次做的时候在assets底下新建了一个Textures文件夹,将需要识别的图片文件(我使用的是一个身份证图片)命名为Target(texture格式)放在了这个文件夹底下,但是运行时始终都提示找不到图片,后来在assets底下创建了一个名为StreamingAssets的文件夹,一般会有这个文件夹,如果没有就手动创建一个,然后将target.jpg图片文件放在了这个文件夹底下,这样unity就可以找到图片了。此外还需要将target.jpg的图片拖到ImageTarget上,这样场景中就会出现图片的样式了,如下图所示:
,最后将EasyAr_Startup底下的ImageTracker拖动到loader里面就可以了。
10.接下来就需要将识别图片后需要生成的模型放进来了,具体就是将你的模型拖动到ImageTarget底下,我这里只是在ImageTarget底下新建了一个球体作为要显示的模型就可以了,效果如下图:
这就是识别到身份证图片后就会显示这个球体。
到这里就实现了PC端的部分,接下来就需要发布到手机上。
11.在unity中点击BuildSettings,选择android,选择playerSettings,首先设置Bundle Identifier,这里填入最早在官网上申请的ID(见第三步),一定不可以填错,否则应用会打不开
12.最后设置graphic API,这里unity4.x与unity 5.x设置有些不同
unity4.x,需要将graphics设置为force Open GL ES 2.0,graphics API设置为 Open GL ES 2.0;
unity5.X设置如下图所示:
其他不用改变。
13.设置完这一切之后,就可以连接手机,将项目发布到手机上啦。