文档章节

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

Kerwin_zZ
 Kerwin_zZ
发布于 2017/04/01 14:56
字数 1901
阅读 1.2W
收藏 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

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

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

© 著作权归作者所有

Kerwin_zZ
粉丝 10
博文 119
码字总数 154291
作品 0
海淀
项目经理
私信 提问
加载中

评论(0)

高通推全球首款XR1专用平台,支持4K、6Dof和VIO

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

李诗
2018/05/30
0
0
Qualcomm NPU 高通神经网络处理芯片

“专人专事专办”听起来是个很诱人的事情,当在某一方面有需要就去找专门对应的人员或是硬件进行快速处理和反馈,这个道理似乎很简单。然而在当今的移动领域满足人工智能运算需求这方面,移动...

Omni-Space
03/31
0
0
#游戏unity#AR手机游戏的平台构建

#游戏unity#AR手机游戏的平台构建 在上篇博客中,博主向大家简单又通俗易懂的介绍了AR与AR在手机游戏领域的应用,而这篇文章,博主将教大家如何构建一个AR手机游戏平台。要知道,只有构建平台...

zys91011_muse
03/31
0
0
高通成立AI研究部整合AI能力,骁龙710移动平台发布

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

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

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

靖宇
2017/12/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

给大家讲一个笑话:技术是无国界的!

在我接触互联网的最初几年,总会在技术论坛上看到有人宣称:技术是没有国界的,我深信不疑! 做程序员之后,我慢慢接触到了很多很多的开源软件,我真的无比的感慨:开源是人类最伟大的发明。...

osc_hzf6peqc
13分钟前
13
0
医学多模态图像分割小结 - 知乎

在医学图象中,多模态数据因成像机理不同而能从多种层面提供信息。多模态图像分割包含重点问题为如何融合(fusion)不同模态间信息,本文主要记录笔者最近所读,欢迎批评指正补充 1. A review:...

osc_htns3spg
14分钟前
24
0
Curve-GCN:图卷积网络用于活动轮廓演变 - 知乎

CNN做分割需要处理数据量很大的grid数据,需要对所有点的label进行预测,而且传统CNN并不会结合点与点之间的联系。 使用图结构建模分割轮廓或分割曲面,然后采用GCN,仿照传统的deformable ...

osc_q7wo0k6s
15分钟前
15
0
录好的音频在哪个文件夹?迅捷录音软件还能这么查找!

录好的音频在哪个文件夹?在录制之前经常忘记调整保存位置,等到录完音频才发现,自己竟然找不到音频文件了。这种情况在录音的时候并不少见,软件的音频文件会默认保存在安装目录下,找起来确...

dawda
16分钟前
22
0
docker: Error response from daemon: Conflict. The container name "/xx" is already in use

使用docker 出现Error response from daemon: Conflict. The container name “***” is already in use 解决方法: (1)给容器换一个名字, 比如说 docker run -it --name=mycentos2 centos......

osc_h7q38oso
16分钟前
23
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部