文档章节

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

落叶-归根
 落叶-归根
发布于 2017/04/01 14:56
字数 1901
阅读 3408
收藏 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
深度感知、视点渲染,骁龙 845 将如何改变 VR/AR 的普及

摘要 骁龙845是移动VR方面的唯一选择 北京时间 12 月 6 日,芯片大厂高通在夏威夷正式发布旗舰处理器骁龙 845,新产品除了在计算力上有较大提升,同时也在 AI 方面进行了强化。另外,对于「下...

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

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

镁客网
2017/12/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

5whys分析法在美团工程师中的实践

前言 网站的质量和稳定性对于用户和公司来说至关重要,但是在网站的快速发展过程中,由于各种原因导致事故不可避免的发生,这些大大小小的事故对公司难免会造成一些负面的影响,为了避免同类...

Skqing
26分钟前
1
0
Android 接收监听开机完成,并且开机自启动

1,定义一个广播接收者的类 ,并重写抽象方法 public class BootCompleteReceiver extends BroadcastReceiver 2,在Androidmanifest 注册 <receiver android:name=".receiver.BootCompleteRece......

lanyu96
30分钟前
2
0
小程序记录

1、button的边框、角等需要在伪元素after修改去除

originDu
32分钟前
1
0
微博什么技术啊……还说支持八个明星并发出轨,结果…

是的,大家可能都知道了,女神张靓颖结婚了。。 我去,写错了,是————赵丽颖。 为什么我头脑一瞬间出现的是张靓颖,作为一个码农,技术宅,拼音缩小都是 ZLY,博主我真有点傻傻分不清楚了...

Java技术栈
32分钟前
10
0
模块化

1,什么是模块化? 模块化是指将一个复杂的系统分解为多个模块,方便编码。 2,为什么要用模块化? 降低复杂性,降低代码耦合度,部署方便,提高效率。 3,模块化的好处? a,避免命名冲突,减少...

羊皮卷
33分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部