文档章节

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

落叶-归根
 落叶-归根
发布于 2017/04/01 14:56
字数 1901
阅读 3747
收藏 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

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

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

© 著作权归作者所有

共有 人打赏支持
落叶-归根
粉丝 9
博文 88
码字总数 81526
作品 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
颠覆智能手机的下一代设备已出现?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/csdnnews/article/details/83805330 经历了中华上下五千年的历史,彼时的我们很难想象传统的书信、烽火台、钟...

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

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

镁客网
2017/12/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

为什么只有你每次提交代码,log里面会出现merge

http://www.cnblogs.com/Sinte-Beuve/p/9195018.html

踏破铁鞋无觅处
10分钟前
0
0
如何学习大数据:spark发布程序

一、对于spark程序只是用于默认的spark包的情况 直接点击pcakage 将程序进行在linux当中进行发布 客户端模式:测试 spark-submit --class com.keduox.App \ --master yarn \ --deploy-mode ...

架构师springboot
10分钟前
0
0
oracle job(定时任务)

创建 定时任务 job declare job number;BEGIN DBMS_JOB.SUBMIT( JOB => job, -- job任务的唯一标识(自动生成) WHAT => 'INSERT into TEXTL (id) VALUES(TEXT......

骑羊放狼灬
14分钟前
0
0
Spring声明式事务在抛出异常时不回滚(RollBack)

Spring声明式事务默认只在RuntimeException时Rollback(回滚),不当的try catch会导致事务不回滚。 spring事务默认运行时异常回滚,RuntimeException 配置时添加异常回滚 rollback-for="Th...

叶落花开
14分钟前
0
0
赋能时空云计算 阿里云数据库时空引擎Ganos上线

随着移动互联网、位置感知技术、对地观测技术的快速发展,时空信息已从传统GIS行业渗透到大众应用及各行各业。从静态POI(兴趣点)到APP位置信息,从导航电子地图到车辆行驶轨迹,从卫星影像...

阿里云云栖社区
16分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部