ARFoundation快速入门-13图像跟踪

一、新建识别图库

1.Create->XR->Reference Image Library 新建一个2D识别图库

ARFoundation快速入门-13图像跟踪_第1张图片

2.将需要识别的图片加入新建好的识别图库

ARFoundation快速入门-13图像跟踪_第2张图片

3.参数解释

Name 识别图名称,不是唯一标识,同一识别图库中可以重复。
Physical Size 识别图物理大小,可选属性。填写后可以增加识别率
Keep Texture at Runtime 运行时保持纹理

 

二、环境搭建

1.在Unity中新建一个空场景,将默认的 Main Camera 删除掉

2.在Hierarchy面板中右键->XR->AR Session Origin 创建“AR Session Origin”组件

ARFoundation快速入门-13图像跟踪_第3张图片

3.在Hierarchy面板中右键->XR->AR Session 创建“AR Session”组件

ARFoundation快速入门-13图像跟踪_第4张图片

4.在Hierarchy中右键->3D Object->Cube, 新建一个 Cube ,命名为“ImageInfoPrefab”,并且设置大小为(0.1,0.1,0.1),制作成为预制体

ARFoundation快速入门-13图像跟踪_第5张图片

5.在创建出来的“AR Session Origin”组件上添加 ARTrackedImageManager.cs 脚本,并且将上面创建好的识别图库,拖动到 Serialized Library 属性上, 将上面制作好的 ImageInfoPrefab 预制体,拖动到Tracked Image Prefab 属性上。

ARFoundation快速入门-13图像跟踪_第6张图片

6.打包并且运行

 

三、多图跟踪

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;

/// 多图跟踪
public class MultiImageTracking : MonoBehaviour
{
    private ARTrackedImageManager ImgTrackedManager;
    private List mPrefabs = new List();

    private void Awake()
    {
        ImgTrackedManager = GetComponent();
    }

    private void Start()
    {
        mPrefabs.Add(Resources.Load("你需要加载资源路径") as GameObject);
        mPrefabs.Add(Resources.Load("你需要加载资源路径") as GameObject);
        mPrefabs.Add(Resources.Load("你需要加载资源路径") as GameObject);
    }

    private void OnEnable()
    {
        ImgTrackedManager.trackedImagesChanged += OnTrackedImagesChanged;
    }

    private void OnDisable()
    {
        ImgTrackedManager.trackedImagesChanged -= OnTrackedImagesChanged;
    }

    private void OnTrackedImagesChanged(ARTrackedImagesChangedEventArgs eventArgs)
    {
        foreach (var trackedImage in eventArgs.added)
        {
            OnImagesChanged(trackedImage);
        }
    }

     private void OnImagesChanged(ARTrackedImage referenceImage)
    {
        Debug.Log("Image name:" + referenceImage.referenceImage.name);

        switch(referenceImage.referenceImage.name)
        {
           case"Rafflesia":

           Instantiate(mPrefabs[0], referenceImage.transform);
           break;

           case"Logo":

           Instantiate(mPrefabs[1], referenceImage.transform);
           break;

           case"QRCode":

           Instantiate(mPrefabs[2], referenceImage.transform);
           break;
        }
     }

}

 

推荐学习资料

1.Unity官方API:学习一门技术,官方教程是最权威的

2.ARFoundation Samples :ARFoundation 示例地址

3. ARFoundation之路: 作者:yolon3000,目前找到的ARFoundation教程中最全面的

欢迎对AR技术感兴趣的朋友,加入QQ群:883655607 讨论 

你可能感兴趣的:(ARFoundation)