使用高通Vuforia开发AR增强现实游戏(开篇)

来源:互联网 发布:淘宝开店虚拟是什么 编辑:程序博客网 时间:2024/06/05 18:24

@废话在前


之前想做暴风魔镜的VR游戏,最后来香港学习设备没带过来就没继续做,现在开始学习研究做一下AR游戏开发,毕竟对设备的要求比较低,很方便,看了不少资料,最后还是选了Vuforia这个经典的AR框架来学习,虽然说高通的Vuforia去年刚被PTC收购,以后的发展路线未知,但我看不久前还是有更新的,也是对开发者开放的,至少用来学习没问题,毕竟体验一下AR技术,也就不在乎什么框架了。


说到增强现实游戏,说一下众所周知的pokmon go(口袋妖怪)这个火爆的游戏,开始听说这个游戏也是充满憧憬,十分兴奋,但当时还在大陆玩不了,现在来香港下载玩了一下结果好失望好失望orz... ...我本以为真的是实时将摄像头下的场景简化建模,能够识别场景里的物体比如桌子、墙壁啥的在合理的位置出现小精灵,但还是太天真了,实际上的地图就是谷歌地图的简化,精灵出现的位置是一个靠近屏幕的随机的世界坐标,位置跟摄像头下的场景没啥关系,基本上就是用了GPS定位而已,与现实世界的联系并不紧密,增强现实的元素并不多。不过毕竟第一个增强现实游戏,也不该期望过高的 :(


*先说一下以下几个步骤准备工作准备的东西是用来干嘛的,要使用unity开发vuforia游戏首先需要申请一个License key,这个key可以在多个工程中多次使用,是给工程权限来调用vuforia sdk包中的资源;之后是识别对象的数据库,这里的识别比如单一图片识别,实际上就是预先添加的target中添加图片,vuforia的服务器制作该target的识别数据库,该数据库要下载并导入工程绑定target,然后于摄像头中获取的一帧帧图像进行特征匹配,匹配成功后会有事件告诉工程发现目标,然后在以摄像头为背景的界面上渲染虚拟的untiy游戏物体。




一、Vuforia支持的开发平台


Vuforia支持的开发平台有:安卓,IOS,Unity3dy以及Windows平台(UWP)和数字眼镜等,这里主要使用unity来进行AR游戏开发并打包xcode工程在iPhone上运行测试。


各平台的环境搭建以及SDK安装方法见官网教程:https://library.vuforia.com/getting-started




二、注册Vuforia开发帐号登陆并获取APP License Key


1. 进入vuforia开发者门户,注册一个帐号并登录:https://developer.vuforia.com


2.登陆后可在Develop --> License manager下添加一个License Key:


添加成功后打开添加的License Key可以看到生成的key,一个长字符串,之后在unity工程中的ARCamera组件中需要添加这个key,否则工程无法使用sdk:




三、添加Vuforia识别数据库并添加识别目标对象


与License Manager并列有个Target Manager,用于添加管理识别对象的数据库;

添加一个数据库,设置名字选择device类型,数据库名字之后可以改,但好像不可以删除:





点开刚创建的数据库,可以在数据库中添加不同类型的识别对象(有图中四种,比如single image就是识别匹配一张单一的图片):



这里创建一个image target对象,注意其中待识别的图片要小于2m,jpg或png格式;参数width之后可以在unity工程中改,所以可以随便填一个;添加这个target的名字方便区分。

之后可以下载该数据库添加到unity工程中使用。




四、在unity中搭建Vuforia开发环境


1.新建一个unity空project工程;


2.下载Vuforia第三方SDK(一个unitypackage可直接导入unity工程): https://developer.vuforia.com/downloads/sdk


根据开发需要选择不同的版本下载,这里选择unity的sdk:


3.在unity空工程的project面板右键选择import custom package导入下载的vuforia for unity idk包;



4.之后需要新一个场景,将场景中原有的main camera删除,换成vuforia包里面prefabs中的ARCamera,ARCamera物体上的脚本要添加license key来使工程能够有权限使用sdk,然后添加prefabs文件夹中其他的imgtarget等识别对象:



PS:有了上面的准备工作,下一步就可以正式开始Vuforia 的AR游戏开发了,下一篇介绍最简单的单一图片识别对象(single image target)的方法。

1 0