Vuforia学习实践笔记(一)

前言

Vuforia增强现实SDK,是高通推出的针对移动设备增强现实应用的软件开发工具包,它能够根据开发者设定的目标对象,例如二维图片、三维模型提取特征点标记。当开发者用移动设备的摄像头对准目标时,采用计算机视觉技术进行实时识别并叠加开发者实现添加的模型对象完成增强现实,例如下图的效果。Vuforia工具包目前有支持Android、iOS和Unity的三个版本,并且允许开发者免费下载使用带水印的工具包,如果想去掉水印或进行商业开发需要向高通缴纳一定的版权费。最近正好开始着手学习增强现实,写点东西记录一下。

图1 Vuforia增强现实实现效果


SDK下载以及License Key申请

首先,我们需要到Vuforia官网注册一个开发者账号(注意密码必须有大小写和数字,否则无法通过注册)。注册成功后,我们就可以从Downloads页面下载和我们的移动设备对应的SDK,我下载的是Unity Extension版本的unitypackage。
我们在应用中如果要使用Vuforia SDK,需要申请应用签名密钥(License Key)。在官网的Develop页面可以看到有License ManagerTarget Manager两个模块。其中License Manager就负责管理License Key

图2 License Manager页面

点击Add License Key按钮,填写应用签名密钥申请,其中就有商用开发的付费说明。

图3 添加密钥申请

填写完申请后,就可以看到系统为我们自动生成了一条License Key记录。我尝试过想删除License Key记录但是似乎没有办法删掉。如果你有多个应用,就需要为每个应用都申请一个License Key。否则,如果你的两个应用都使用同一个License Key,发布到移动设备后运行时会弹出“Invalid Key”这样的错误提示。

识别图的制作

我们需要为每一个应用创建一个用于识别的数据库,里面存储的是我们上传的识别图数据。我们在Target Manager模块选择create database创建识别图数据库,并通过Add Target向数据库中添加我们自己的识别图数据。

图4 Target Manager页面

图5 新建的数据库页面

识别图除了是二维图片,还可以是简单几何体模型(盒装,圆柱体),高通刚推出一个利用Vuforia进行扫描建模的应用,因此识别图也可以使用Vuforia Scanner扫描建模生成的模型。我上传的识别图是一张恐龙的图片和蝴蝶的图片。图片宽度就填写自己上传的图片宽度,也可以写大些,高度会通过读取图片数据自动计算生成。

图6 添加识别图操作

Vuforia通过在识别图上标记特征点来对目标进行识别(下图上的黄色十字就是标记点),图片越复杂识别点越多,识别效果越好。相似的图片由于识别点分布相近可能导致识别效果差。Vuforia会对每个用户上传的识别图进行评级,可以看出我的蝴蝶识别图的星级比恐龙识别高处不少,Vuforia针对用户如何提高图片的星级有一篇文章,以后有时间再认真看看吧。

图7 蝴蝶识别图

图8 恐龙识别图

识别图生成好之后,我们就可以下载识别图数据库了。选择对应的数据库,点击Download Database,在弹出的对话框中选择Unity Editor,下载完成后得到一个识别图的unitypackage(如图),可以导入到Unity工程中进行使用。

图9 识别图数据库下载

创建Vuforia Hello World工程

准备工作

我们创建一个新的Unity工程项目,将第一部分中下载的SDK包导入到工程中。

图10 导入Vuforia SDK

导入完成后我们的工程目录变成下面这样。其中StreamingAssets是存放我们的识别图数据的目录,目前是空的。

图11 导入SDK后的工程目录

接下来我们将第二部分中下载的识别图unitypackage导入到工程中。导入完成后发现StreamingAssets目录下就添加了我们制作的识别图数据库的信息。

图12 添加识别图信息后的StreamingAssets目录

场景搭建

首先添加摄像机对象。将Qualcomm Augmented Reality/Prefabs目录下的AR Camera预制件拖到Hierarchy目录中,删去原来场景中的Main Camera对象。
接下来添加识别图对象,将Qualcomm Augmented Reality/Prefabs目录下的ImageTarget预制件拖到Hierachy目录中,场景中出现了一个二维图片对象,此时这个对象的材质和贴图都还未指定。

图13 向场景中添加AR Camera和ImageTarget

选中ImageTarget,在Inspector面板中我们可以看到这个预制件上挂载了一些脚本,其中Image Target BehaviourDefault Trackable Event Handler是比较重要的两个。Image Target Behaviour是用于设置识别图对象属性的脚本,将其中的Data Set一项从默认的EMPTY改成我们数据库中的识别图名称。Defaut Trackable Event Handler实现了一些在目标识别过程中的事件处理函数,如果想进行扩展可以继承这个类来对其中的OnTrackingFoundOnTrackingLost方法进行改写,默认情况下,它会自动控制模型的加载和显示。

图14 ImageTarget

图15 目标检测事件函数

接下来,我们选中AR Camera,在Inspector面板中进行设置。首先在App License Key一栏中填写我们第一部分申请得到的应用签名密钥。接着在Data Set Load Behaviour脚本中勾选 Load Data Set XXX一项,会弹出Activate勾选框,一并选中。

图16 AR Camera

最后,将要叠加的模型添加到场景中,作为ImageTarget的子物体,调整好相机角度和模型位置,加上灯光照明,就完成了场景搭建。

图17 最终场景

应用发布

Build Settings中添加场景,并选择要发布的移动平台,我使用的是Android,切记在Player Settings中要将Bundle Identifier改成自己的identifier。编译后就生成了我们的第一个AR apk。
在手机上运行的效果图如下,感觉识别的效果还是挺不错的。另外似乎不能同时识别两幅图并加载模型,只能单幅图的识别。

图18 Vuforia增强现实实现_1

图19 Vuforia增强现实实现_2

图20 Vuforia增强现实实现_3

总结

高通Vuforia AR 工具包对于AR初学者应该是一个比较容易上手的开发套件,官方文档也比较齐全,但应用场景还是比较受限,想深入AR开发的小伙伴还是建议研究Open CV和Open GL自己实现特征点提取、匹配,目标跟踪的算法。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值