Vuforia学习实践笔记(一)
2015-04-14 17:57
267 查看
前言
Vuforia增强现实SDK,是高通推出的针对移动设备增强现实应用的软件开发工具包,它能够根据开发者设定的目标对象,例如二维图片、三维模型提取特征点标记。当开发者用移动设备的摄像头对准目标时,采用计算机视觉技术进行实时识别并叠加开发者实现添加的模型对象完成增强现实,例如下图的效果。Vuforia工具包目前有支持Android、iOS和Unity的三个版本,并且允许开发者免费下载使用带水印的工具包,如果想去掉水印或进行商业开发需要向高通缴纳一定的版权费。最近正好开始着手学习增强现实,写点东西记录一下。SDK下载以及License Key申请
首先,我们需要到Vuforia官网注册一个开发者账号(注意密码必须有大小写和数字,否则无法通过注册)。注册成功后,我们就可以从Downloads页面下载和我们的移动设备对应的SDK,我下载的是Unity Extension版本的unitypackage。
我们在应用中如果要使用Vuforia SDK,需要申请应用签名密钥(License Key)。在官网的
Develop页面可以看到有
License Manager和
Target Manager两个模块。其中License Manager就负责管理License Key。
点击
Add License Key按钮,填写应用签名密钥申请,其中就有商用开发的付费说明。
填写完申请后,就可以看到系统为我们自动生成了一条License Key记录。我尝试过想删除License Key记录但是似乎没有办法删掉。如果你有多个应用,就需要为每个应用都申请一个License Key。否则,如果你的两个应用都使用同一个License Key,发布到移动设备后运行时会弹出“Invalid Key”这样的错误提示。
识别图的制作
我们需要为每一个应用创建一个用于识别的数据库,里面存储的是我们上传的识别图数据。我们在Target Manager模块选择create database创建识别图数据库,并通过
Add Target向数据库中添加我们自己的识别图数据。
识别图除了是二维图片,还可以是简单几何体模型(盒装,圆柱体),高通刚推出一个利用Vuforia进行扫描建模的应用,因此识别图也可以使用Vuforia Scanner扫描建模生成的模型。我上传的识别图是一张恐龙的图片和蝴蝶的图片。图片宽度就填写自己上传的图片宽度,也可以写大些,高度会通过读取图片数据自动计算生成。
Vuforia通过在识别图上标记特征点来对目标进行识别(下图上的黄色十字就是标记点),图片越复杂识别点越多,识别效果越好。相似的图片由于识别点分布相近可能导致识别效果差。Vuforia会对每个用户上传的识别图进行评级,可以看出我的蝴蝶识别图的星级比恐龙识别高处不少,Vuforia针对用户如何提高图片的星级有一篇文章,以后有时间再认真看看吧。
识别图生成好之后,我们就可以下载识别图数据库了。选择对应的数据库,点击Download Database,在弹出的对话框中选择Unity Editor,下载完成后得到一个识别图的unitypackage(如图),可以导入到Unity工程中进行使用。
创建Vuforia Hello World工程
准备工作
我们创建一个新的Unity工程项目,将第一部分中下载的SDK包导入到工程中。导入完成后我们的工程目录变成下面这样。其中
StreamingAssets是存放我们的识别图数据的目录,目前是空的。
接下来我们将第二部分中下载的识别图unitypackage导入到工程中。导入完成后发现
StreamingAssets目录下就添加了我们制作的识别图数据库的信息。
场景搭建
首先添加摄像机对象。将Qualcomm Augmented Reality/Prefabs目录下的AR Camera预制件拖到
Hierarchy目录中,删去原来场景中的Main Camera对象。
接下来添加识别图对象,将
Qualcomm Augmented Reality/Prefabs目录下的ImageTarget预制件拖到
Hierachy目录中,场景中出现了一个二维图片对象,此时这个对象的材质和贴图都还未指定。
选中ImageTarget,在
Inspector面板中我们可以看到这个预制件上挂载了一些脚本,其中Image Target Behaviour和Default Trackable Event Handler是比较重要的两个。Image Target Behaviour是用于设置识别图对象属性的脚本,将其中的Data Set一项从默认的EMPTY改成我们数据库中的识别图名称。Defaut Trackable Event Handler实现了一些在目标识别过程中的事件处理函数,如果想进行扩展可以继承这个类来对其中的OnTrackingFound和OnTrackingLost方法进行改写,默认情况下,它会自动控制模型的加载和显示。
接下来,我们选中AR Camera,在
Inspector面板中进行设置。首先在App License Key一栏中填写我们第一部分申请得到的应用签名密钥。接着在Data Set Load Behaviour脚本中勾选 Load Data Set XXX一项,会弹出Activate勾选框,一并选中。
最后,将要叠加的模型添加到场景中,作为ImageTarget的子物体,调整好相机角度和模型位置,加上灯光照明,就完成了场景搭建。
应用发布
在Build Settings中添加场景,并选择要发布的移动平台,我使用的是Android,切记在
Player Settings中要将Bundle Identifier改成自己的identifier。编译后就生成了我们的第一个AR apk。
在手机上运行的效果图如下,感觉识别的效果还是挺不错的。另外似乎不能同时识别两幅图并加载模型,只能单幅图的识别。
总结
高通Vuforia AR 工具包对于AR初学者应该是一个比较容易上手的开发套件,官方文档也比较齐全,但应用场景还是比较受限,想深入AR开发的小伙伴还是建议研究Open CV和Open GL自己实现特征点提取、匹配,目标跟踪的算法。相关文章推荐
- 【学习笔记javascript设计模式与开发实践(职责链模式)----13】
- 分布式服务框架-原理与实践:11---服务灰度发布-学习笔记
- [SOA]学习《SOA 原理。方法。实践》笔记 (2)
- 《Javascript高级程序设计》(第2版)学习笔记19--最佳实践
- 【学习笔记+实践】简单的导航条菜单制作
- 分布式一致性原理与实践(学习笔记)
- Vue.js学习系列一 —— vue-router2学习实践笔记(附DEMO)
- Silverlight学习笔记:第一章:Silverlight3.0开发工具和开发实践
- 前端学习实践笔记--JavaScript深入【1】
- Linux实践工程师学习笔记十一
- JS DOM编程艺术——最佳实践—— JS学习笔记2015-7-10(第81天)
- Java并发编程实践 重庆大学 学习笔记 I
- 从实践中学习Oracle SQL笔记
- 【学习笔记javascript设计模式与开发实践(组合模式)----10】
- 《软件测试实践--测试Web MSN》 之我的学习笔记(一)
- C++ Primer 学习笔记_29_STL实践与分析(3) --操作步骤集装箱(下一个)
- Hadoop学习笔记—15.HBase框架学习(基础实践篇)
- 【day 2】python编程:从入门到实践学习笔记-列表以及其操作
- Grove.net实践ORM学习笔记
- java并发编程实践学习笔记