无需代码,开发属于自己的AR应用
无需代码,开发属于自己的AR应用
在这个生活方式都日新月异的时代,新技术,黑科技的衍生数量层出不穷,其中VR (VitualReality 虚拟现实)、MR (Mixed Reality 混合现实)以及AR也是近年来最火的热词之一, 随着技术的日渐成熟,这些科技也慢慢融入生活中,当然,科技的研发的目的就是为人所用,本篇所讲的就是关于AR(AugmentedReality,增强现实)的图像识别教程,来开发一款属于自己的应用APP,说到开发APP大部分人会联想到编程写代码,如何降低难度无需编程,那我们就可借助Vuforia的一款插件配合Unity快速帮助我们实现。
话不多说(无图说个X)
下载Unity,选择Unity的原因是其支持VuforiaSDK,是一款强大的游戏开发引擎并且可以多平台发布,PC、MAC、iOS、Android等等,本篇使用的是5.6版本,低版本的个别操作位置会有不同;可对应自己的电脑操作系统下载,附下载链接:https://unity3d.com/cn/get-unity/download/archive。
下载成功,新建一个Project
注册Vuforia账号,注册后可上传自己想识别的图像素材,官网地址:https://developer.vuforia.com/。
注册登录,我们先去Download页面下载对Unity支持的ARSDK。
下载成功后,将SDK包导入我们Unity新建的项目中,导入方法有多种,不在过多赘述,简便方法,可将安装包直接鼠标拖入Project中的Assets目录下,点击左边的All确保资源全部选中,Import进行导入。
导入成功,再次回到Vuforia网页,按箭头指示区域,创建一个Vuforia的案例,获取开发**。
创建一个案例名称,可以随便输入。
创建后,我们点开,会有一些字母与数字组成的内容,这就是我们创建成功的**,后续会在项目中用到。
准备工作已经差不多了,因为AR就是增强现实的含义,现实中的物体与虚拟结合,我们先创建一个数据库,用于我们上传想识别的图片素材。
为我们的数据库命名后,选择Device设备这一项,点击Create进入数据库,添加我们的图片素材。
添加的素材可选择四种类型,依次是:单张图片、长方体,圆筒,3D对象,我们选择第一种:Single Image,从本地上传准备好的图片,对于上传图片类型只能为Jpg或Png,大小限制在2M以内。
上传完毕后,Rating下方显示五角星,这是对于图片的识别度的一个评分,星级越高,识别成功率越高,所以建议上传内容易辨识,清晰度较高的图片。
点击右上角,下载我们的图片数据,因为我们借助Unity来实现,所以按照图片所示操作即可。
下载成功会生成一个数据包,我们将这个文件包也导入我们的Unity内,导入方法和之前一样,直接拖入Assets项目
导入成功,我们将左上角Hierarchy面板中的MainCamera Delete删除,将下方Project项目中的ARCamera及同目录的ImageTarget拖入Hierarchy面板中。
选中ImageTarge,在其右侧面板中选中我们之前导入的数据包,下方ImageTarget选中我们的图片素材。
选择完毕后,再次选中ARCamera,在右侧面板点击图片所示区域。
在面板中复制我们之前在Vuforia创建好的Key,对Datasets的选项打√。
预制体ARCamera上带有AR摄像机以及App相关设置;预制体ImageTarget代表一张识别图像,并且带有识别事件处理相关脚本,在ImageTarget下放一个物体模型,当做识别后显示出来的物体,这里放入一个事先准备好的超人模型,当然也可以在面板中右键点击3Dobject创建一个简易模型。然后调整模型的Transform使它处于合适位置与比例,并使ARCamera以一个合适的角度照射到此Target。
**运行测试:**点击运行按钮,然后将所要识别的图像对准电脑的摄像头前,虽然笔记本摄像头较渣,但还是成功识别。
**打包发布:**接下来我们可以发布到手机上,本次是发布安装到安卓手机,所以选择Android,具体发布安卓的环境配置可以参考链接:http://www.jianshu.com/p/3c67fbfbb67c,继续按图片步骤操作,找到Identification,将其中的 com.compan.ProductName的compan随便做改动,然后点Build,成功生成APK包后在手机端安装。
**手机端测试:**准备好所要识别的图片,为了方便识别事先打印了出来,手机运行Build生成的APK应用,对照图片后,也是成功识别,到此,一个简单的AR应用就完整开发完毕。
**摄像头自动对焦:**由于默认情况下摄像机不能对焦,我们可以给ARCamera写一个脚本挂在上面,在Start的时候开启对焦。
void Start () {
Vuforia.CameraDevice.Instance.SetFocusMode(Vuforia.CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO
);
**总结Vuforia的图片识别机制:**我们可以将上传的图片点开后点击底部Show Feature会看到很多星星点,这些星星点就是此图片的识别点,越密集代表辨识率越高。
服务器对上传图片进行灰度处理,图片变为黑白图像;
提取黑白图像特征点;
将特征点数据打包;
程序运行时对比特征点数据包。