分享

【新提醒】【Unity3D上手Vuforia增强现实应用(一)】

 雪柳花明 2016-12-07
原文链接http://www./thread-96009-1-1.html

前言:

    本工程使用的3D版本为5.3.2f1(64bit)

    本工程使用的Vuforia版本为vuforia-unity-5-5-9.unitypackage,下载地址https://developer.


    我以前都用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的问题




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

Unity Services


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


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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多