• 【转载】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简单小游戏开发的最基础的介绍以及相关异常处理就到这里​,当然要想做的更好你需要足够的耐心,一定的编程能力,充分的面向对象思维,以及一个好的美工

  • 相关阅读:
    MySQL Binlog Digger 4.28 【mysql日志分析工具】
    为什么要把MySQL的binlog格式修改为row
    MySQL Binlog Digger与binlog2sql对比
    为什么MySQL binlog_format一定要设置成row
    mysql binlog 参数_MySQL Binlog常用参数
    解决webstorm不能识别vue的@路径引用
    Datetime and Interval Data Types
    管理视图
    oracle权限类型大全
    oracle监听器
  • 原文地址:https://www.cnblogs.com/dudu580231/p/6656074.html
Copyright © 2020-2023  润新知