【转载】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

    我们直接点Import导入就行,点击后会出现进度条,这时候你可以想一想下一顿吃什么,差不多进度条就走完了,导入成功,Asset目录下会出现Plugins文件夹和Vuforia文件夹。

Asset目录


3、打开/Asset/Vuforia/Prefabs文件夹,会出现:

prefabs


    这些都是Vuforia插件的预制件,使用这些预制件我们就能做出AR的最基本的东西了。

​4、我们把Hierarchy里面的MainCamera删除,然后把预制件ARCamera拖到场景中去:

拖入ARCamera


​    在Hierarchy中选中ARCamera,查看Inspector视窗:

选中ARCamera

此处填写APP License Key


    在这里填写APP Key,也就是Vuforia官网上登录自己账号,Develop栏目下Lisence Manager里面你之前建立的APP Key(Vuforia4之前的插件版本不需要这个,这也是我之前喜欢用低版本插件的原因),如果没有APP Key就新建一个。然后把下面复制了,粘贴到Unity里面。

Vuforia APPLisence


    粘贴后如下,当然还有一些参数设置根据自己需求改,我是如下设置的:

ARCamera Inspector设置


5、把预制件的ImageTarget拖动到场景之中

拖入ImageTarget


    这时候,选中Hierarchy中的ImageTarget,查看Inspector视窗,会看到ImageTargetBehavior下有个“No target defines.... ”,猛戳它,然后跳进Vuforia官网,登陆后,进入Develop栏目下的Target Manager,如果你之前在这里建过Target好办,选择你需要的下载下来,没有建立过的自己琢磨一下建一个。

 
选中目标


    选中你所需要的target Name,并点击下载

选择target并下载


    选择平台为Unity Editor并点击下载

选择UnityEditor


    然后就会弹出下载提示框,将文件保存到你所需要的位置。为了方便我保存在桌面。(路径必须是全英文路径)
6、像导入Vuforia一样,将刚刚下载的unitypackage文件导入Unity的Asset,如下图,依旧默认全选,点击Import导入。

导入target


7、导入完成后这时候再在hierarchy中选中ImageTarget,查看Inspector如下:

选择database


    这时在ImageTargetBehavior中会出现DateBase和ImageTarget选项。先选择dateBase,这里出现的就是你刚刚导入的包;再选择ImageTarget,里面是刚刚导入的包里面包含的目标图片,选择一个你需要的,这时候你的Scene就会变成这样:

场景中ImageTarget


    场景里的这张图片就是你所选择的Target图片。
8、这时候我们再Hierarchy中新建一个物体,为了方便演示我用球代替。

新建Sphere物体


9、我们把刚建的模型拖动为ImageTarget的子物体

拖动为子物体


    这样最简单的AR demo就完成了

10、演示效果:点击运行按钮开始运行

演示效果


异常处理:
    异常处理是本篇的重点,因为很多刚刚从事相关开发的开发者凭着摸索或者参照其他材料,以上内容也很容易完成。但实际中可能会遇到一些因缺少经验而难以解决的问题,所以,前面的种种都是为了我接下来讲异常处理做的铺垫。


正文:

1、在Editor中运行调试程序,如果出现“Screen is to small to display authorization dialog. Authorization denied”这个bug导致演示失败,是因为Game视窗太小导致的,直接调整Game视窗大小即可。​

解决方案

​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”.截图如下:

 

​对于前一个问题:这种问题是由于Unity版本问题而引起的,如果你使用Unity4.x就不会出现这个问题。这种情况该怎么办呢,继续看:

拖动示例

按上图打开Project下文件目录,你会惊奇的发现WebcamProfiles文件夹及其中的文件都在/Asset/Vuforia/Editor/之下,这就好办了,按上图方式拖动就行了。拖动完成是这样的

拖动完成

对于第二个问题:

打开该文件夹下的profiles.xml文件,如果发现没有我们当前想用的摄像头,就按照原有的格式添加一个 ......就行了。​

编写profiles.xml

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”

异常截图

这是由于Vuforia的库不匹配引起的,希望以后Vuforia能修复这个问题,我们该怎么办呢?

别急,查看Project文件目录如下:

/Assets/Plugins/

在/Plugins/文件夹下新建文件夹,命名“x86”。并把上面红框里("/Assets/Plugins/")四个文件拖动到该新建的文件夹下。如图:​

解决成功截图

4、如果在导出应用时遇到“Unhandled Exception: System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded. ”问题,这是Unity3D 5.x的问题

 

图片44.png (22.28 KB, 下载次数: 3)

下载附件  保存到相册

2016-10-14 15:59 上传

解决办法是打开Unity Service的广告或者In-APP purchase。

Unity Services

按下这朵云的图标即可进入Unity Services,然后你可以打开 Ads,In-APP purchase等等,问题就能解决了。

P.S.关于Unity3D加Vuforia的AR简单小游戏开发的最基础的介绍以及相关异常处理就到这里​,当然要想做的更好你需要足够的耐心,一定的编程能力,充分的面向对象思维,以及一个好的美工

原文地址:https://www.cnblogs.com/dudu580231/p/6656074.html