EasyAR(一)——显示模型

一、开发环境:unity5.6.0,EasyAR2.1


二、导入SDK

1.安装unity并被配置androidSDK跟javaJDK路径(见博客环境配置)

2.从EasyAR官网下载EasyAR(这里下载的是EasyAR2.0)下载网址http://www.easyar.cn/view/download.html

EasyAR(一)——显示模型_第1张图片

3.新建unity项目,命名随意

EasyAR(一)——显示模型_第2张图片

4.将下载的EasyAR文件解压,解压之后有一个文件夹和一个pakage包,将EasyAR_SDK_2.1.0_Basic.unitypackage

导入至建好的unity项目中,效果如图:


三、配置识别图

1.在unity里新建一个目录,命名为"StreamingAssets",准备一张需要识别的图片(格式最好为jpg),拖入StreamingAssets文件夹中,给图片命名为“idback”

EasyAR(一)——显示模型_第3张图片


2.EasyAR Target配置

详见官网http://www.easyar.cn/doc/EasyAR%20SDK/Guides/EasyAR-Target-Configure.html

在StreamingAssets目录下新建一个json文件,命名为“targets”这里格式如下:

{
  "images" :
  [
    {
      "image" : "idback.jpg",
      "name" : "idback",
      "size" : [8.56, 5.4],
      "uid" : "uid-string, should NOT duplicate",
      "meta" : "what ever string you like."
    }
  ]
}
四、获取key

1.进入官网http://www.easyar.cn/view/open/app.html申请key
EasyAR(一)——显示模型_第4张图片


2.点击创建应用,应用名称输入你的项目名字,bundleid(package name)处填写   .com+playersettings处的CompanyName+playersettings处的ProductName

EasyAR(一)——显示模型_第5张图片

EasyAR(一)——显示模型_第6张图片

2.填入完成后确定即可查看我们需要的key

EasyAR(一)——显示模型_第7张图片

3.按你用的EasyAR版本选择查看key,这里用的2.1所以

EasyAR(一)——显示模型_第8张图片

4.复制此处的key

EasyAR(一)——显示模型_第9张图片

五、开发

1.回到刚刚创建的unity项目中,删除原有场景中的MainCamera,然后从EasyAR->Prefabs将预制件EasyAR_Startup拖入到Hierarchy面板

EasyAR(一)——显示模型_第10张图片

2.将刚刚复制的key黏贴到"EasyAR_Startup"中

EasyAR(一)——显示模型_第11张图片

3.从EasyAR->Prefabs->Primitives中的预制件ImageTarge拖入到Hierarchy面板中

EasyAR(一)——显示模型_第12张图片

4.编辑挂在ImageTarget组件上的“ImageTargetBehaviour”脚本(这个段脚本的主要功能是当捕捉到识别图时控制模型的显示与消失),在这里我直接移除了ImageTargetBehaviour,新建了个脚本继承ImageTargetBehaviour(单纯因为新建个脚本看着比较开心,这个看个人习惯是直接在上面编辑还是新建个脚本),具体内容如下:

namespace EasyAR
{
    public class TargetDemo : ImageTargetBehaviour
    {


        protected override void Awake()
        {
            base.Awake();
            TargetFound += OnTargetFound;
            TargetLost += OnTargetLost;
            TargetLoad += OnTargetLoad;
            TargetUnload += OnTargetUnload;
        }

        

        protected override void Start()
        {
            base.Start();
           // HideObjects(transform);
            //TargetAbstractBehaviour.
            GameObjectActiveControl = false;
        }

        //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);
        //}

        private void OnTargetLost(TargetAbstractBehaviour obj)
        {
            GameObjectActiveControl = true;
            Debug.Log("Found: " + Target.Id);
        }

        private void OnTargetFound(TargetAbstractBehaviour obj)
        {
            GameObjectActiveControl = false;
            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);
        }
    }
}
因为EasyAR的版本不一样,API接口可能不太一样,2.1是不需要去写显示跟隐藏的方法了,直接通过控制GameObjectActive的值来显示隐藏模型,其他版本可能需要写显示隐藏方法,显示隐藏方法,我在上面注释了,具体关于API问题可以去查看每个版本的配置EasyAR Unity SDK文档,例如EasyAR2.1查看地址为: http://www.easyar.cn/doc/EasyAR%20SDK/Getting%20Started/2.0/Setting-up-EasyAR-Unity-SDK.html

EasyAR1.0查看地址为:http://www.easyar.cn/doc/EasyAR%20SDK/Getting%20Started/1.0/Setting-up-EasyAR-Unity-SDK.html
5.在Hierarchy面板放入你需要显示的模型,并设成ImageTargert的子物体,然后将模型的transform reset

EasyAR(一)——显示模型_第13张图片

6.在Inspector面板填写ImageTarget信息

EasyAR(一)——显示模型_第14张图片

按json文件填入配置path、name、size

注意:Storage处需要修改为Assets

EasyAR(一)——显示模型_第15张图片

EasyAR(一)——显示模型_第16张图片

新建个材质球,将识别图idback复制另存一份png格式图(不用放在StreamAssets文件夹),作为贴图放入材质球,将材质球放入如下图地方

EasyAR(一)——显示模型_第17张图片

EasyAR(一)——显示模型_第18张图片

六、测试

1.将当前场景保存

2.File->BuildSettings,将保存场景拖入BuildSettings面板中,确定面板如下

EasyAR(一)——显示模型_第19张图片

保证框选区域如图(场景名不必一样),确定无误后,点击PlayeSettings,按照申请key时填入的信息填入下面

EasyAR(一)——显示模型_第20张图片

Package Name:填入申请key时的BundleID

Company Name:与申请Key时的公司或团队名相同,就是.com中间那个

Product Name:与申请key时填入的应用名相同,就是.com末尾那个

最后需要设置GraphicAPI,unity4.x跟unity5.x设置是不一样的

unity4.x:将Graphic设置为force Open GL ES 2.0,Graphics API设置为 Open GL ES 2.0(没有4.x没有截图)

unity5.x:如下图

EasyAR(一)——显示模型_第21张图片

最后build生成app,放到手机安装测试就可以了

你可能感兴趣的:(EasyAR)