[AR]Vumark(下一代条形码)
VuMark
准备知识
Vumark的说明: https://library.vuforia.com/articles/Training/VuMark
https://library.vuforia.com/articles/Solution/Working-with-VuMarks-in-Unity
SVG的制作工具:AI(Adobe Illustrator)
SVG查看工具:IE9以上、Chrome、Firefox类的浏览器,或者其它看图软件,以下是在AI中查看SVG文件,可以看到vumark的属性信息。

建议先查看Vuforia自带的Vumark Demo。
操作环境
Vuforia 6.0.112
Unity3D 5.3.6f1
Windows 7 x64
操作步骤
1、登录vuforia的后台:https://developer.vuforia.com,创建一个Database,类型为 Vumark
2、点击Add Target ,上传一个SVG文件,此svg文件带有标识点,由美术根据相关制作标准制作

3、下载database ( UnityPackage 文件),如果你是Android和IOS,请选择其它格式。
4、新建一个Unity工程,导入vuforia的SDK,将下载好的unitypackage文件导入到unity中
获取VuMark图
接下来要做的事情,就是扫描识别图,进行识别,那么识别图从那儿获取呢?
在vuforia的后台中,在Target 的右侧有个 Generate VuMark,它可以通过这张svg图片文件,生成N多张VuMark图片。
点击“Generate VuMark”,在弹出的窗口中,输入需要生成的ID(100),选择图片的格式,点击 Download

点击“Generate VuMark”,在弹出的窗口中,输入需要生成的ID(50),选择图片的格式,点击 Download
这样就得到了ID=100和ID=50的两张VuMark图,这两张图就可以拿来进行识别了。
经测试识别最大值和最小值,可正确地识别,打印结果如下:
New VuMark: 999999999999
New VuMark: 0
最多生成图片数量
从上面的图中可知,ID Length =40,约是2的40次方,范围在:0 ~ 999 999 999 999,也就是可以生成 999999999999 +1 张Vumark图。
以下是生成图片的ID,尝试输入不在范围内的值。
输入负数

输入超出最大值

识别成功和丢失
从Example中,可以看到丢失和识别成功的事件写在以下两个文件中:
VuMarkHandler.cs 绑定在单独的GameObject上
VuMarkEventHandler.cs 绑定在VuMark上
这两个脚本日后研究完善并做更加详细地注释:https://github.com/zhaoqingqing/blog_samplecode/tree/master/ar-vr-mr/vuforia/vumark
相关FQ
1、是否可以同时Active多个database?
在目前的6.0.112版本中,我的测试,不可以同时Load 多个database(包括两个)
与FrameMarker比较
FrameMarker

FrameMarker特征图是由高通设计的,如上图所示,ID从 0~511,对应着512张图片,ID=1,ID=2 两张图像之间的差异就是最外圈的黑白点之间的差异。
Vumark
1、Vumark的特征图是可以自定义的,可以不是黑白点了。
2、最大ID在数量上提升了N倍,0 ~ 999 999 999 999
[AR]Vumark(下一代条形码)的更多相关文章
- Vuforia开发完全指南---不懂编程也能做AR程序
不懂编程也能做AR程序 可能一听到要做AR程序,很多人都会想到这是程序员的事.如果不懂编程,不会写代码,是做不了AR程序的.其实,Vuforia的Unity SDK非常人性化,即使你不会编程,也能做出 ...
- 时代杂志发文:2017 AR/MR将变得比VR更加重要
每到年末都有很多企业或高管分析科技产业明年趋势.近日,时代杂志网页版刊登了2017年科技行业的五大趋势和热点话题的预测.该本作者TimBajarin,是硅谷市场研究公司CreativeStrategi ...
- Vuforia开发完全指南---Vuforia概述
Vuforia概述 AR(Augmented Reality)增强现实,想必大家都已经很熟悉了.这是当下最热的技术之一,是利用计算机视觉和计算机图像学领域的相关知识将虚拟世界融入到现实生活当中.AR和 ...
- Vuforia开发完全指南---License Manager和Target Manager详解
License Manager和Target Manager License Manager 对于每一个用Vuforia开发的AR程序来说,都有一个唯一的license key,在Unity中必须首先 ...
- Vuforia笔记1(Vuforia8.0.10与Unity2018.3.6f1)
一丶ARCamera(AR的灵魂) 1.World Center Mode SPECIFIC_TARGET:制定一个物体作为世界中心坐标 FIRST_TARGET:摄像机所照射到的第一个需要识别的目标 ...
- 一、Vuforia_AR
一.AR概念: 增强现实(Augmented Reality,简称AR),是一种将虚拟信息与真实世界巧妙融合的技术,广泛运用了多媒体.三维建模.实时跟踪及注册.智能交互.传感等多种技术手段,将计算机生 ...
- 2019年台积电进军AR芯片,将用于下一代iPhone
近日,有报道表示台积电10nm 芯片可怜的收益率可能会对 2017 年多款高端移动设备的推出产生较大的影响,其中自然包括下一代 iPhone 和 iPad 机型.不过,台积电正式驳斥了这一说法,表明1 ...
- Leap Motion发布新平台,直击下一代移动端VR/AR手部追踪
2013年,动作捕捉技术公司Leap Motion发布了面向PC的体感控制器,不过销量并不乐观.随着2014年虚拟现实技术的再一次兴起,它发布一款用于Oculus Rift的附加设备,从而正式登上VR ...
- [AR]高通Vuforia Getting Started
Vuforia Getting Started 简介 Vuforia创建增强现实应用程序是一个软件平台.开发人员可以轻松地将先进的计算机视觉功能添加到任何应用程序中,允许它识别图像和对象,或在现实 ...
随机推荐
- 1Z0-053 争议题目解析
1Z0-053 争议题目解析 Summary 题目NO. 题目解析链接地址 题库答案 参考答案 考查知识点 24 http://www.cnblogs.com/jyzhao/p/5319220.ht ...
- android快捷开发之Retrofit网络加载框架的简单使用
大家都知道,安卓最大的特点就是开源化,这自然会产生很多十分好用的第三方API,而基本每一个APP都会与网络操作和缓存处理机制打交道,当然,你可以自己通过HttpUrlConnection再通过返回数据 ...
- 用eclipse开发项目时遇到的常见错误整理,和配套解决方案(1)
01. MyEclipse项目导入eclipse后,怎么发布不了? 今天导入了之前的一个MyEclipse项目,更改jdk后,发现发布不了.解决方案如下: 打开项目根目录,找到.settings文件夹 ...
- Hadoop学习之旅一:Hello Hadoop
开篇概述 随着计算机网络基础设施的完善,社交网络和电商的发展以及物连网的推进,产生了越来越多的大数据,使得人工智能最近几年也有了长足的发展(可供机器学习的样本数据量足够大了),大数据的存储和处理也越来 ...
- C#遐想/瞎想
泛型约束更强大.比如支持有参构造函数.枚举.委托: void Foo<T>() where T : new(string, int), enum, delegate 空值判断符允许对属性/ ...
- spring笔记5 spring IOC的基础知识1
1,ioc的概念 Inverse of control ,控制反转,实际的意义是调用类对接口实现类的依赖,反转给第三方的容器管理,从而实现松散耦合: ioc的实现方式有三种,属性注入,构造函数注入,接 ...
- 【转】zigbee终端无法重连的问题解决
zigbee终端无法重连的问题解决 1.zigbee重连的原因 (1)zigbee由于各种原因的干扰导致信号太差而掉线. (2)协调器重启. 2.zigbee终端重连的处理 (1)zigbee掉线后会 ...
- go-使用 unsafe 修改 struct 中的 field 的值
以下是方法,不要纠结原理,等东西积累多了,你才有能力纠结原理: 首先,你需要有一个这样的函数,这是在 nsq 的源码里直接抄过来的: func unsafeValueOf(val reflect.Va ...
- springmvc配置文件web.xml详解各方总结(转载)
Spring分为多个文件进行分别的配置,其中在servlet-name中如果没有指定init-param属性,那么系统自动寻找的spring配置文件为[servlet-name]-servlet.xm ...
- ThinkPHP 整合Bootstrap Ajax分页
ThinkPHP Ajax分页代码 publicfunction index() { $where=array(); $name = I('name'); if(!empty($name)){ $wh ...