高通Vuforia+Unity——实现简单的AR功能
高通Vuforia+Unity——实现简单的AR功能
落叶-归根 发表于1年前
高通Vuforia+Unity——实现简单的AR功能
  • 发表于 1年前
  • 阅读 2221
  • 收藏 1
  • 点赞 0
  • 评论 0

【腾讯云】新注册用户域名抢购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

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

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

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 7
博文 82
码字总数 74489
×
落叶-归根
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: