【转载】Unity3D上手Vuforia增强现实应用
前言:
本工程使用的版本为5.3.2f1(64bit)
本工程使用的Vuforia版本为vuforia-unity-5-5-9.unitypackage,下载地址https://developer.vuforia.com
我以前都用4.x的Unity3D和3.x.x的Vuforia版本,因为稳定性高且省的各种验证和API不兼容,不过高版本毕竟是大势所趋,所以这里用高版本。本文的最大意义在于异常处理,在实践中你能发现本文的重要性。(关于异常处理集中在下篇讲,因为博主积分不够,每一篇博文能粘贴的图片有限,敬请谅解)。废话不多说,开始动手。
1、首先打开Unity3D,并新建一个工程,怎么建工程就不用多说了吧,以下是空白工程:
空工程
2、导入我们所需要的Vuforia插件包。
注意:插件的路径一定是英文路径,不能包含中文或特殊字符,否则很可能导入失败。把vuforia-unity-5-5-9.unitypackage拖动到Unity3D的Asset中,稍等会弹出包里面的内容:
导入Vuforia
![](http://img.manew.com/data/attachment/forum/201610/12/180526agdmqq8j2qbcg24g.png.thumb.jpg)
3、打开/Asset/Vuforia/Prefabs文件夹,会出现:
![](http://img.manew.com/data/attachment/forum/201610/12/180526sgajshcm14ddst8p.png.thumb.jpg)
这些都是Vuforia插件的预制件,使用这些预制件我们就能做出AR的最基本的东西了。
4、我们把Hierarchy里面的MainCamera删除,然后把预制件ARCamera拖到场景中去:
![](http://img.manew.com/data/attachment/forum/201610/12/180527bjb66j1jppmfpj8c.png.thumb.jpg)
在Hierarchy中选中ARCamera,查看Inspector视窗:
选中ARCamera
![](http://img.manew.com/data/attachment/forum/201610/12/180527n8xic3u5udb93ax9.png.thumb.jpg)
在这里填写APP Key,也就是Vuforia官网上登录自己账号,Develop栏目下Lisence Manager里面你之前建立的APP Key(Vuforia4之前的插件版本不需要这个,这也是我之前喜欢用低版本插件的原因),如果没有APP Key就新建一个。然后把下面复制了,粘贴到Unity里面。
![](http://img.manew.com/data/attachment/forum/201610/12/180527sm253pbxypaoamml.png.thumb.jpg)
粘贴后如下,当然还有一些参数设置根据自己需求改,我是如下设置的:
![](http://img.manew.com/data/attachment/forum/201610/12/180527ve3z3qhfydx8deqa.png.thumb.jpg)
5、把预制件的ImageTarget拖动到场景之中
![](http://img.manew.com/data/attachment/forum/201610/12/180527pooxx2l5xc65uvm3.png.thumb.jpg)
这时候,选中Hierarchy中的ImageTarget,查看Inspector视窗,会看到ImageTargetBehavior下有个“No target defines.... ”,猛戳它,然后跳进Vuforia官网,登陆后,进入Develop栏目下的Target Manager,如果你之前在这里建过Target好办,选择你需要的下载下来,没有建立过的自己琢磨一下建一个。
![](http://img.manew.com/data/attachment/forum/201610/12/180527nl8oq0iofj8qi8kq.png.thumb.jpg)
选中你所需要的target Name,并点击下载
![](http://img.manew.com/data/attachment/forum/201610/12/180528w0cov5eeo2e0flvv.png.thumb.jpg)
选择平台为Unity Editor并点击下载
![](http://img.manew.com/data/attachment/forum/201610/12/180528z7ikrb9k9fu5kh7t.png.thumb.jpg)
然后就会弹出下载提示框,将文件保存到你所需要的位置。为了方便我保存在桌面。(路径必须是全英文路径)
6、像导入Vuforia一样,将刚刚下载的unitypackage文件导入Unity的Asset,如下图,依旧默认全选,点击Import导入。
![](http://img.manew.com/data/attachment/forum/201610/12/180528gjyzspwqcs8nj3lc.png.thumb.jpg)
7、导入完成后这时候再在hierarchy中选中ImageTarget,查看Inspector如下:
![](http://img.manew.com/data/attachment/forum/201610/12/180528flzrfyr0r0l95bfc.png.thumb.jpg)
这时在ImageTargetBehavior中会出现DateBase和ImageTarget选项。先选择dateBase,这里出现的就是你刚刚导入的包;再选择ImageTarget,里面是刚刚导入的包里面包含的目标图片,选择一个你需要的,这时候你的Scene就会变成这样:
![](http://img.manew.com/data/attachment/forum/201610/12/180528f41wl31gzmeyy331.png.thumb.jpg)
场景里的这张图片就是你所选择的Target图片。
8、这时候我们再Hierarchy中新建一个物体,为了方便演示我用球代替。
![](http://img.manew.com/data/attachment/forum/201610/12/180529b2c0nfiyin52i081.png.thumb.jpg)
9、我们把刚建的模型拖动为ImageTarget的子物体
拖动为子物体
这样最简单的AR demo就完成了
10、演示效果:点击运行按钮开始运行
![](http://img.manew.com/data/attachment/forum/201610/12/180529rr2t0idi5nant5on.png.thumb.jpg)
异常处理:
异常处理是本篇的重点,因为很多刚刚从事相关开发的开发者凭着摸索或者参照其他材料,以上内容也很容易完成。但实际中可能会遇到一些因缺少经验而难以解决的问题,所以,前面的种种都是为了我接下来讲异常处理做的铺垫。
正文:
1、在Editor中运行调试程序,如果出现“Screen is to small to display authorization dialog. Authorization denied”这个bug导致演示失败,是因为Game视窗太小导致的,直接调整Game视窗大小即可。
![](http://img.manew.com/data/attachment/forum/201610/14/155947oyzkp1xcx7c6krzr.png.thumb.jpg)
2、如果ARCamera的WebCamBehavior.cs脚本出现“An error occured while trying to enable Vuforia Play Mode”,以及当你使用的摄像头不是主流摄像头时出现的“Webcam profiles ensure that Play Mode performs well with your webcam. You can create a custom profile for your camera by editing .... profiles.xml”.截图如下:
![](http://img.manew.com/data/attachment/forum/201610/14/155947ztcwleqlvgr4guxt.png.thumb.jpg)
对于前一个问题:这种问题是由于Unity版本问题而引起的,如果你使用Unity4.x就不会出现这个问题。这种情况该怎么办呢,继续看:
![](http://img.manew.com/data/attachment/forum/201610/14/155947h6vizx599z56zhlo.png.thumb.jpg)
按上图打开Project下文件目录,你会惊奇的发现WebcamProfiles文件夹及其中的文件都在/Asset/Vuforia/Editor/之下,这就好办了,按上图方式拖动就行了。拖动完成是这样的
![](http://img.manew.com/data/attachment/forum/201610/14/155948e1905qttw8snp51w.png.thumb.jpg)
对于第二个问题:
打开该文件夹下的profiles.xml文件,如果发现没有我们当前想用的摄像头,就按照原有的格式添加一个 ......就行了。
![](http://img.manew.com/data/attachment/forum/201610/14/155948gy6hrehrerhypph3.png.thumb.jpg)
3、如果你遇到下面这个问题:“Failed to load 'Assets/Plugins/VuforiaWrapper.dll',expected 64 bit architecture ... But was IMAGE_FILE_MACHINE_I386 . You must recompile your plugins for 64 bit architecture”
![](http://img.manew.com/data/attachment/forum/201610/14/155948p6vuqvxz6w3qjq2q.png.thumb.jpg)
这是由于Vuforia的库不匹配引起的,希望以后Vuforia能修复这个问题,我们该怎么办呢?
别急,查看Project文件目录如下:
![](http://img.manew.com/data/attachment/forum/201610/14/155948brgr4ff46f7d6zgj.png.thumb.jpg)
在/Plugins/文件夹下新建文件夹,命名“x86”。并把上面红框里("/Assets/Plugins/")四个文件拖动到该新建的文件夹下。如图:
![](http://img.manew.com/data/attachment/forum/201610/14/155948qnudcasnjsjvaunq.png.thumb.jpg)
4、如果在导出应用时遇到“Unhandled Exception: System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded. ”问题,这是Unity3D 5.x的问题
![](http://img.manew.com/data/attachment/forum/201610/14/155949srdyoypt0ot6rrfp.png.thumb.jpg)
解决办法是打开Unity Service的广告或者In-APP purchase。
![](http://img.manew.com/data/attachment/forum/201610/14/155949nj7mlmljs40em1am.png.thumb.jpg)
按下这朵云的图标即可进入Unity Services,然后你可以打开 Ads,In-APP purchase等等,问题就能解决了。
P.S.关于Unity3D加Vuforia的AR简单小游戏开发的最基础的介绍以及相关异常处理就到这里,当然要想做的更好你需要足够的耐心,一定的编程能力,充分的面向对象思维,以及一个好的美工