Unity-EasyAR篇-单,多图片识别

1、EasyAR图片识别都是基于以下两个预制体进行。
Unity-EasyAR篇-单,多图片识别_第1张图片
2、EasyAR_ImageTracker-1预制体
只需注意ImageTracker物体中的ImageTrackerFrameFilter脚本,有一个重要参数
Simultaneous Target Number是指最大识别数量,当参数为1时,只能识别一张图片(如果相机内有两张图片,他会识别到第一个识别的图片)
当参数为>=2时,会同时识别多张图片

Unity-EasyAR篇-单,多图片识别_第2张图片
3、ImageTarget预制体
ImageTargetController脚本参数

ActiveControl:HideWhenNotTracking 没检测到时隐藏,检测到时显示
HideBeforeFirstFound:没检测到时隐藏,一旦检测到即使图片丢失也不会隐藏

两种图片资源加载方式

方法一:ImageFile
path:图片的名字.png(例如:1.png)
name:图片的名字(名字随意,用于区分)
Scale:缩放,单位为米
Unity-EasyAR篇-单,多图片识别_第3张图片

方法二:TargetDataFile
Unity-EasyAR篇-单,多图片识别_第4张图片
把图片拖入到ImagePath中然后Generate,默认存放路径为StreamingAssets
Unity-EasyAR篇-单,多图片识别_第5张图片
脚本参数设置如下:
Unity-EasyAR篇-单,多图片识别_第6张图片

4、如何在代码中逻辑控制

using easyar;
using UnityEngine;
public class Test : MonoBehaviour
{
    public ImageTrackerFrameFilter tracker;
    //如果是多个图片的话直接创建多个 ImageTargetController即可
    public ImageTargetController targetController;
    void Awake()
    {
        if (targetController)
        {
            targetController.TargetFound += () =>
            {
                //当图像被跟踪到          
            };
            targetController.TargetLost += () =>
            {
              	//当图像从视野消失
            };
            targetController.TargetLoad += (Target target, bool status) =>
            {
              	//加载图像
            };
            targetController.TargetUnload += (Target target, bool status) =>
            {
               //卸载图像
            };
        }
    }
    public void SetTracker(bool status)
    {
        tracker.enabled = status;	//设置是否跟踪
    }
    public void SetTarget(bool status)
    {
        if (status)
        {
            targetController.Tracker = tracker; //加载图像
        }
        else
        {
            targetController.Tracker = null;    //卸载图像
        }
    }

}

你可能感兴趣的:(EasyAR,unity,ar,游戏引擎)