Vuforia的Vumark功能很适合新项目的需求,就决定把研究的成果记录一下,希望能帮到同样想使用这个技术的人。
我的理解,Vumark就是把图像编码融入到了识别图中,这样就可以在识别AR图片时读取用户设置的图像编码,这样就不用一个识别图片只对应一个识别信息,我们可以通过图像编码读取的信息来进行不同的处理。简单来说,以前一个识别图只能识别一个3D模型,现在可以用Vumark标识不同的3D模型。
首先介绍一下Vumark的使用方法:
1)制作Vumark模板文件。
2)把模板文件上传到Vuforia官网。
3)使用此模板文件产生Vumark图像文件,此时输入定义的ID信息(字符串、数字或二进制码)。
4)使用此模板文件生成Dataset文件。
之后的使用就和普通的识别图差不多了,在Unity中是使用vumark预设。这是我刚开始看了半天官网说明也没弄明白,直到最后实际操作了一遍才搞清楚。
制作Vumark,制作过程在Vuforia官网介绍的非常详细(https://library.vuforia.com/articles/Training/VuMark-Design-Guide),在这里只简要的介绍一下。
Vumark主要包括以下部分:
1)Contour轮廓线:算法最先识别的部分,首先找到它才能识别图像编码,我觉得它是Border和空白区域交界的闭合曲线。
2)Border边线
3)Clear Space空白区域:可以在边线里面也可以在边线外面,但它的颜色要与边线有足够的对比度,才能让算法识别。
4)Code/Element图像编码:一般就是简单的图形,比如圆形或四边形;同一个形状要有亮和暗两种图形,它们的颜色要有足够的对比度。其实Vumark的信息就存储在这些小色块中,信息越多,需要的小色块越多。
5)Background背景:这里可以放自定义的图像不用于存储信息,但用来做识别图。
Vumark的制作主要使用Adobe Illustrator CC2015或其以上版本,而且要安装MyriadPro-Bold,MyriadPro-Regular和MyriadPro-Semibold字体否则会报错。制作工具需要到Vuforia官网下载(https://developer.vuforia.com/downloads/tool?d=windows-4851025-17-4124#downloadModal),按照其中的说明操作即可,但制作Vumark还是挺繁琐的,由于时间原因,我就直接使用了示例中的vumark。
Vumark制作好后,将下载的Dataset文件和VuforiaSDK6.2导入到Unity中,从Vuforia目录中找出ARCamera和Vumark预设拖到Hierarchy面板中并删除原来的Camera。在添ARCamera加license key并把Datasets选项选择成你导入的vumark,Vumark预设也选择Database和Vumark Template为你导入的文件。
最后编写代码,新建一个空物体,命名为VumarkManager(名字随意),在上面附加一个C#脚本,内容:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Vuforia;
public class VuMarkHandler : MonoBehaviour
{
[SerializeField]
private Text vuText;//用于显示ID
private VuMarkManager mVuMarkManager;
private VuMarkTarget mClosestVuMark;
void Start()
{
// 得到管理对象
mVuMarkManager = TrackerManager.Instance.GetStateManager().GetVuMarkManager();
}
void Update()
{
UpdateClosestTarget();
}
void UpdateClosestTarget()
{
foreach(var bhvr in mVuMarkManager.GetActiveBehaviours())
{ //得到扫描到的vumark
mClosestVuMark = bhvr.VuMarkTarget;
}
if(mClosestVuMark!=null)
{
vuText.text = mClosestVuMark.InstanceId.StringValue;
}
}
}
最后再新建一个Text把它赋值给脚本中的变量即可。此代码也是研究了示例程序的代码后简化出来的,只保留了最基本的功能,示例(https://developer.vuforia.com/downloads/samples)。此程序可以直接在pc上运行,把之前用模板制作的含有ID数据的图片放在摄像头前就可以直接显示出ID数据。
由于对此技术还只是初步研究,所以可能有错误的地方还请大家帮忙指正。