文档章节

高通Vuforia+Unity——实现简单的AR功能

落叶-归根
 落叶-归根
发布于 2017/04/01 14:56
字数 1901
阅读 2939
收藏 1

一、什么是AR

        增强现实(Augmented Reality,简称AR),是一种将计算机生成的虚拟物体、场景或者系统提示信息叠加到真实场景中,从而时实现对现实的增强的一种技术。

        目前我们常见的体验形式是,各式各样的AR手机应用,它们通常需要我们提供手机的相机使用权限,这些应用通过对相机中得到的实际场景信息进行识别,将现实场景中的信息体与程序中内置的特征物进行比对,如果比对成功,则将相应的模型或者视屏叠加到相机中的实际景象中。

        这篇博客我们首先来讲一下如何实现简单的AR应用。

 

二、工具

        显然,真正从0开始实现一个AR功能,我们需要熟知图形学的底层知识,在这个提倡开源的时代,任何功能都从0开始开发显然是不明智的。

        高通Vuforia就为我们提供了一款功能较为完备的AR插件,Vuforia SDK是一套相对比较完整的可以直接调用的AR API,并且相比较其他的AR SDK来说,它对图像的识别更加稳定。

        这里我们用到的开发环境是Unity3D这款免费的游戏引擎。它提供的强大的跨平台性使我们能够轻松地生成移动端的应用。

        1、Unity——这里我使用的版本是5.5.2f1,并且要求是带有完整安卓环境的Unity,即它能够成功的将工程发布成apk。这篇博客对于这一内容不过多阐述,有需要的小伙伴可以关注网上大神们的博客。

        2、VuforiaSDK——可从官网(https://developer.vuforia.com/downloads/sdk)下载最新的版本。写这篇博客时的版本是vuforia-unity-6-2-10。

                

 

三、让我们跑起来

        以下的步骤,为了节省篇幅,我这里不太希望描述太多过程化的东西,会着重描述一下需要注意的点,大多数都是我在学习过程中遇到过的问题。如果小伙伴们在某些步骤卡壳了,及时百度哦。

        1、我们首先需要在Vuforia官网(https://developer.vuforia.com/)注册账号并登录。

        2、我们要告诉Vuforia官方,我们需要使用它们的SDK,所以我们在开始开发之前,要在官网注册一个应用。我们选择Develop/License Manager/,点击Add License Key,输入我们即将开发的项目名称,添。名称可随意定义,我由于个人习惯,将应用名称定为VuforiaARTest20130331。

                

                

         生成成功后,将在上图中马赛克的区域生成一段License Key,到时候我们需要将它复制到我们的项目中去,现在我们暂时不管它。

        3、我们注册了一个应用,但是我们希望我们的应用识别哪些图呢?

        使用Vuforia识别图片,首先我们需要将待识别的图片上传到Vuforia的图片库中,再将服务器处理过的图片资源包下载下来,导入到工程中。

        a、这里我们进入Develop/TargetManager页面,点击Add Database添加新的图片库。为了方便查找,我们将图片库的名称和应用的名称设置为相同。

                   

        b、选定新建的图片库的名字,打开图片库,点击Add Target添加待识别的图片。

                    

                        

                        

                添加成功,Rating中星数表示识别图的可识别级别,星数越多,可识别级别越高。我们勾选这张图片,选择Download Database,可以得到一个跟对应的Database相同的资源包,VuforiaARTest20170331.unitypackage,这就是我们这个项目的图片资源库。

        4、好了,5个五星白达摩已经准备好了,现在就差一个茨木了。我们拿好碗,开始讨碎片吧。

        5、在Unity中新建项目,同样为了方便查找,将项目名称定为VuforiaARTest20170331。

        6、导入我们下载好的Vuforia SDK包,vuforia-unity-6-2-10.unitypackage。

        7、将默认场景中的Main Camera删掉,将Vuforia/Prefabs目录下的ARCamera相机拖至场景中。

        8、这篇博客我们主要讨论AR中识别图片显示模型这一功能,所以我们需要将Vuforia/Prefabs目录下的ImageTarget也拖至场景中。相机位置可以不调节,对APP功能不会有影响,我个人为了方便查看,会选择将相机位置调整一下,直到在Game视图出现:

                

              即相机视角与ImageTarget平面垂直。由于我们还没有设置待识别的图片,所以当前ImageTarget是空白的。添加图片完成之后,程序会调用手机的摄像头,检测现实画面中是否存在这样的图片。接下来我们就来添加待识别图片。
       9、我们导入我们下载好的图片资源库VuforiaARTest20170331.unitypackage

       10、我们选择ImageTarget,在Inspector面板中对Image Target Behavior脚本进行设置。我们选择Database为我们导入的图片库名VuforiaARTest20170331,选择ImageTargrt为我们希望识别的图,即我们上传的待识别图。如果没有导入图片库VuforiaARTest20170331.unitypackage,这里将显示Empty,并且只能选择Vuforia SDK自带的识别图。

                

                到这里小伙伴们可能会发现,步骤是一样的,但是并不能显示我上图的图片,ImageTarget还是一样是空白的。这是因为上图中右下角的材质没有附上图片。

              我们在Assets/Editor/QCAR/ImageTargetTextures/VuforiaARTest20170331下找到我们的图片xinbake_scaled,由于图片库把我们的图片shape改成了cube,我们没有办法将它附到ImageTarget这样的平面上,所以需要先将它改为2D。点击Apply,

                

                再选中ImageTarget,将图片拖到途中红框区域中就可以了。

                

        11、我们选中ARCamera,选择Open Vuforia configuration,进行ARCamera的设置。

                

                我们将之前得到的License Key复制到下图中马赛克的区域,没有这段码,apk无法成功运行。

                勾选上我们需要用到的图片库。如果不勾选,将无法识别。

                

       12、我们拖入一个模型,这个模型是在成功识别了之后才会显示的模型。我们将这个模型作为ImageTarget的子物体,调节它的位置和坐标到合适的位置。

                

        13、我们保存场景,发布成apk,发布过程小伙伴们可以查找网上大神的博客或者教程。然后将apk安装到手机上,打开应用,对准识别图,即可查看最终效果:

                       

 

四、最后说两句

        说两句?不知道说啥了,算了还是不说了,刷石距去吧...

        以下是样例中使用的项目源文件与资源,有需要的同学可以自行下载。

        1、项目源文件:链接:http://pan.baidu.com/s/1hrKz9je 密码:8jyi

        2、apk文件:链接:http://pan.baidu.com/s/1qYlTBJ2 密码:wsiq

        3、识别图文件:链接:http://pan.baidu.com/s/1pLnX6Wj 密码:wgdk

        4、模型资源文件:链接:http://pan.baidu.com/s/1dFiSqJJ 密码:vpgf

        以上项目中我还添加了识别图片,叠加视屏的功能。这会在下一篇博客中提到,小伙伴们可以先下下来看看。

        由于我也是正在学习,如果上述过程有什么错误的地方,希望小伙伴们艾特我一下,如果网盘链接失效了,请提示我更新。

© 著作权归作者所有

共有 人打赏支持
落叶-归根
粉丝 8
博文 86
码字总数 75177
作品 0
朝阳
其他
高通推全球首款XR1专用平台,支持4K、6Dof和VIO

雷锋网获悉,5月29日,在增强现实世界博览会(AWE)前举行的发布会上,高通旗下子公司Qualcomm Technologies推出了全球首款扩展现实(XR)专用平台——Qualcomm骁龙XR1平台。 据介绍,XR1平台...

李诗
05/30
0
0
高通成立AI研究部整合AI能力,骁龙710移动平台发布

     大数据文摘作品   记者:魏子敏   5月24日,人工智能创新论坛现场,高通(Qualcomm)对近期在人工智能上的布局进行了一次大盘点。   除了几个重磅产品的发布,在合作生态和部...

大数据文摘
05/24
0
0
关闭 Tango 扶正 ARCore 谷歌确定未来 AR 方向

摘要 Tango 曲终人未散,化作春泥护 AR 近日,Google 在官方博客上宣布,将于 2018 年 3 月正式停止对 Tango 项目的技术和服务支持,转而将全部精力投入到 ARCore 解决方案上。从 2012 年正式...

靖宇
2017/12/18
0
0
「镁客·请讲」影创孙立:AR市场规模正在急剧扩大,铺设线下体验店将成为2018年制胜关键

  技术的提升与融合、C端市场的培育等将是AR行业2018年着重要做的事情。   可能因为AR/VR较为贴近娱乐及游戏行业,所以国内很多AR/VR公司的创始人,都有过非常丰富的游戏开发类从业经验,...

镁客网
2017/12/19
0
0
高通AI产品主管:AI重要的是给用户带来改变,而不是简单的两个字母

雷锋网按:“紧密关注但又谨慎”——或许是高通对于AI态度的最好概括。 作为手机SoC平台和通信技术方面的技术龙头之一,高通对于智能手机乃至各种端智能设备有着极其大的影响力。在上星期举行...

dzz2sein13yv
2017/12/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周三乱弹 —— 公司女同事约我

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子:分享水木年华的单曲《蝴蝶花(2002年大提琴版)》 《蝴蝶花(2002年大提琴版)》- 水木年华 手机党少年们想听歌,请使劲儿戳(这里) ...

小小编辑
9分钟前
28
4
Linux环境搭建 | VMware下共享文件夹的实现

在进行程序开发的过程中,我们经常要在主机与虚拟机之间传递文件,比如说,源代码位于虚拟机,而在主机下阅读或修改源代码,这里就需要使用到 「共享文件」 这个机制了。本文介绍了两种共享文...

良许Linux
今天
5
0
JUC锁框架——AQS源码分析

JUC锁介绍 Java的并发框架JUC(java.util.concurrent)中锁是最重要的一个工具。因为锁,才能实现正确的并发访问。而AbstractQueuedSynchronizer(AQS)是一个用来构建锁和同步器的框架,使用A...

长头发-dawn
今天
3
0
docker中安装了RabbitMQ后无法访问其Web管理页面

在官网找了"$ docker run -d --hostname my-rabbit --name some-rabbit -p 8080:15672 rabbitmq:3-management"这条安装命令,在docker上安装了RabbitMQ,,结果输入http://localhost:8080并不......

钟然千落
今天
4
1
spring-cloud | 分布式session共享

写在前面的话 各位小伙伴,你们有福了,这一节不仅教大家怎么实现分布式session的问题,还用kotlin开发,喜欢kotlin的小伙伴是不是很开心! 以前在写Android的时候,就对客户端请求有一定的认...

冯文议
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部