使用EasyAR.sdk创建一个简单的AR安卓应用

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脚本,还需要设置其参数,我的设置如下:使用EasyAR.sdk创建一个简单的AR安卓应用_第1张图片

path是图片的路径,Name是图片的名称,size则是大小,这里采用的是直接从assets中找到图片的办法,所以Storage选择assets,我在第一次做的时候在assets底下新建了一个Textures文件夹,将需要识别的图片文件(我使用的是一个身份证图片)命名为Target(texture格式)放在了这个文件夹底下,但是运行时始终都提示找不到图片,后来在assets底下创建了一个名为StreamingAssets的文件夹,一般会有这个文件夹,如果没有就手动创建一个,然后将target.jpg图片文件放在了这个文件夹底下,这样unity就可以找到图片了。此外还需要将target.jpg的图片拖到ImageTarget上,这样场景中就会出现图片的样式了,如下图所示:

使用EasyAR.sdk创建一个简单的AR安卓应用_第2张图片

,最后将EasyAr_Startup底下的ImageTracker拖动到loader里面就可以了。

10.接下来就需要将识别图片后需要生成的模型放进来了,具体就是将你的模型拖动到ImageTarget底下,我这里只是在ImageTarget底下新建了一个球体作为要显示的模型就可以了,效果如下图:

使用EasyAR.sdk创建一个简单的AR安卓应用_第3张图片

这就是识别到身份证图片后就会显示这个球体。

到这里就实现了PC端的部分,接下来就需要发布到手机上。

11.在unity中点击BuildSettings,选择android,选择playerSettings,首先设置Bundle Identifier,这里填入最早在官网上申请的ID(见第三步),一定不可以填错,否则应用会打不开

使用EasyAR.sdk创建一个简单的AR安卓应用_第4张图片

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设置如下图所示:

使用EasyAR.sdk创建一个简单的AR安卓应用_第5张图片

其他不用改变。

13.设置完这一切之后,就可以连接手机,将项目发布到手机上啦。


你可能感兴趣的:(unity,AR)