欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Vuforia——VuMark 的使用

程序员文章站 2022-04-28 21:26:46
...

一.创建KEY就不详说了

Vuforia——VuMark 的使用

二.创建VuMark图片

Vuforia——VuMark 的使用

Vuforia——VuMark 的使用

Vuforia——VuMark 的使用

Vuforia——VuMark 的使用

Vuforia——VuMark 的使用

Vuforia——VuMark 的使用


Download DataBase 将资源导入 unity  其中Gnerate VuMark用于下载供手机扫描的不同ID图片

Vuforia——VuMark 的使用


三,将图中两个预制物拖入Hierarchy中

Vuforia——VuMark 的使用Vuforia——VuMark 的使用

填入key 勾选资源包

Vuforia——VuMark 的使用Vuforia——VuMark 的使用

四,修改图片的Texture type

Vuforia——VuMark 的使用Vuforia——VuMark 的使用


五,在VuMark物体上挂上如图脚本

Vuforia——VuMark 的使用Vuforia——VuMark 的使用

五,新建一个物体 管理VuMark

Vuforia——VuMark 的使用Vuforia——VuMark 的使用

Vuforia——VuMark 的使用

六,编写脚本VuMarkMethod 

Vuforia——VuMark 的使用

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Vuforia;
public class VuMarkMethod : MonoBehaviour
{

	// I am girl!!!!
    public VuMarkManager mVuMarkManager;
    public int vuMarkID;
    private int defID = -1;
	void Start () {
        //赋值
        mVuMarkManager = TrackerManager.Instance.GetStateManager().GetVuMarkManager();
        //注册事件
        mVuMarkManager.RegisterVuMarkDetectedCallback(OnVuMarkDetected);
        mVuMarkManager.RegisterVuMarkLostCallback(OnVuMarkLost);
        vuMarkID = defID;
	}
    //当销毁时 注销事件
    void OnDestroy()
    {
        // unregister callbacks from VuMark Manager
        mVuMarkManager.UnregisterVuMarkDetectedCallback(OnVuMarkDetected);
        mVuMarkManager.UnregisterVuMarkLostCallback(OnVuMarkLost);
    }
   //当丢失图片时
    private void OnVuMarkLost(VuMarkTarget obj)
    {
        print("相机没有扫描到图片");
        // 将当前存储ID 改为默认ID
        vuMarkID = defID;
    }
    //当追踪到图片时 
    private void OnVuMarkDetected(VuMarkTarget obj)
    {
        print("相机扫描到了目标图片");
       //获取图片的ID
        vuMarkID = int.Parse(GetVuMarkString(obj));
    }
    //获取具体内容,最终返回string 类型
    private string GetVuMarkString(VuMarkTarget vumark)
    {
        switch (vumark.InstanceId.DataType)
        {
            case InstanceIdType.BYTES:
                return vumark.InstanceId.HexStringValue;
            case InstanceIdType.STRING:
                return vumark.InstanceId.StringValue;
            case InstanceIdType.NUMERIC:
                return vumark.InstanceId.NumericValue.ToString();
        }
        return "";
    }
}

七,另外 VuMarkBehaviour还提供的一些其他的获取当前状态的方法

 public VuMarkBehaviour vuMark;

//如果当前状态为没有找到目标状态 (当然还有其他枚举状态)

if (vuMark.CurrentStatus == TrackableBehaviour.Status.NOT_FOUND){  }


八,  在VuMark下建子物体 类似于像ImageTarget一样的功能