Vuforia——VuMark 的使用
程序员文章站
2022-04-28 21:26:46
...
一.创建KEY就不详说了
二.创建VuMark图片
Download DataBase 将资源导入 unity 其中Gnerate VuMark用于下载供手机扫描的不同ID图片
三,将图中两个预制物拖入Hierarchy中
填入key 勾选资源包
四,修改图片的Texture type
五,在VuMark物体上挂上如图脚本
五,新建一个物体 管理VuMark
六,编写脚本VuMarkMethod
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一样的功能