最新博客地址已转到:

  http://blog.csdn.net/zzlyw?viewmode=contents  

------------------------------------------------------------------------

前言

  增强现实技术是当前信息技术领域的一项重要的综合性技术,融合了模式识别、计算机图形学等多个学科的知识。今天我们就和大家一起来看一下,这个技术到底可以带给我们什么吧。

 

  左边是通过手机观看图片,可以看到叠加在背景图片上的栩栩如生的恐龙,右图是使用微软Hololens所获得的增强现实场景。由于微软Hololens这类产品还使用了SLAM等空间建模与跟踪技术,做起来比较复杂,所以我们主要集中在左图所示的基于图案的AR应用。

----------------------------------------------------------------------------------------------------

  今天的主要任务是自己动手从头做一个基于Unity3D和Vuforia SDK 平面跟踪模块的增强现实应用。

  所需环境:

  Windows 10(64-bit)操作系统、Unity 3D 5.4.1 f1(64-bit)、Vuforia 6 SDK

  这里需要对开发环境进行简要的说明。

  (1)首先Windows系统和Mac OS 都是可以的,我平时用Windows 10,所以就以此为例子来进行讲解。当然Win7、Win8 也都是可以的。目前虽然也有支持Linux的Unity3D 非官方版本,但是将Vuforia导入后运行会报错,目前还没解决。所以推荐使用Windows或者Mac OS。

  (2)Unity3D从Unity 5 开始分为了32位版本和64位版本,如果你的计算机是64位系统,可以自由选择,但是注意,Vuforia SDK只有到Vuforia 6才开始支持64位的Unity。这也就意味着,如果你使用VuforiaSDK之前的一些版本,例如Vuforia 4和Vuforia 5,你就只能使用32位的Unity了。

  我们现在默认你已经有了一个合适的版本的操作系统了,例如win10 64位。下面开始一步一步完成我们的预定任务吧。

1 下载Unity 3D

https://store.unity.com/cn/?_ga=1.18936120.1875984010.1467707827

  打开Unity商店网址,会看到如下的界面。

  选择免费的个人版,点击进入。

  可以直接点击下载安装程序,也可以点击底部最右侧的“Unity旧版本”。我一般会选择后者,因为这样就可以自由选择要安装的版本。开发中最好采用一样的版本,否则在打开别的程序的时候总会根据Unity版本重新生成工程,来回转换难免不会出现什么隐含的Bug。点击“Unity旧版本”后,实际上看到的列表中也包含最新的版本。

  根据你的系统选择相应的版本下载即可。例如我的是Win10 64位,我就点击5.4.1的“下载(Win)”按钮,选择Unity编辑器(64位)下载。我没有选择最新的版本,因为我已经有其他的程序是使用这个版本编辑的。如果你喜欢最新版,完全可以下载最新版,都是没问题的。

  之后在你的下载目录会有“UnitySetup64-5.4.1f1.exe”这个文件,双击运行。一路点继续,到安装路径的页面可以更改安装路径,其他都默认即可。安装完后,如果没有使用破解补丁破解,界面是灰白色的,破解后是深灰色的。其实使用功能上没什么区别,反正现在有了免费的个人版,对于我们做研究来说,破解与否没差别。

  第一次打开Unity可能需要登陆账号,可以随便注册一个登陆即可。点击“NEW”,输入工程名和路径,点击“Create project”。可以看到一个空工程就建立好了。

2 下载Vuforia 6

2.1 下载Vuforia 6 SDK

https://developer.vuforia.com/downloads/sdk

  当前SDK最新的版本是Vuforia 6。SDK选项卡下有不同平台的开发包。Samples选项卡下有不同平台的例程,你可以在熟悉使用SDK后自己下载使用,其中就包括平面跟踪和物体跟踪等常见功能。

  点击Download for Unity,下载到本地,下载路径最好是纯英文的,否侧导入unity时会报错。如果需要注册账号,就注册一个,并且要记录下来。因为以后管理秘钥和数据库还会用到。

2.2 申请License

  点击Develop选项卡下的License Manager选项卡,点击Add License Key。

然后选择相应的信息,如下图,并输入一个App Name。

  

  点击Next,出现确认信息界面,再确认即可。

  然后回到License Manager面板,发现已经有了刚刚建立的MyFirstAR(你肯定用的是其他的名字吧,都是可以的)

  点开这个刚刚建立的条目,显示如下。

  把上面这一大段字符复制到本地保存起来,以备以后使用。

2.3 建立数据库

  点击Develop下的Target Manager选项卡,会看到如图所示。

  然后点击Add Database,在弹出的对话框中输入名字,并选择Type为Device,然后Create。

  然后Target Manager中会显示新添加的数据库,打开它,显示如下。

  点击Add Target来添加自己的标志图,作为被跟踪的标志板。

  由于我使用的是平面标志板,所以Type中选择Single Image,File选择自己准备好的图像。我是选择了一个龙珠人物的图像。图像要求纹理复杂并且不能是对称的。Width要求输入图像的宽度。我使用的图像打印出来是0.4m,所以为了符合实际尺寸,我就将宽度设置为了0.4。这里需要知道,unity里面默认的单位是米。然后点Add,就成功将图案上传到服务器了。

  如上图,我们建立的数据库中已经有了添加的图像,并且评分为5星,表明图像上特征点很多,适合作为标志图案。然后点击Download Database(All),选择开发平台为Unity Editor。

3 建立AR工程

  打开之前建立的空工程,导入下载的Vuforia 6 SDK和下载下来的数据库。

  依次选择Assets——Import Package——Custom Package,分别导入上述文件(vuforia-unity-6-0-117.unitypackage和MyDataset.unitypackage,也许你用的是其他的名称,只要选对相应文件即可)。

  将当前场景保存为AR.unity,然后找到Project下的All Prefabs,点击会在右侧显示下图。

  将ARCamera和ImageTarget两个都拖放到Hierarchy中,点击刚拖进来的ImageTarget,在右侧的Inspector中找到C#脚本ImageTargetBehaviour,其下拉选项的Database选择“MyDataset”,ImageTarget就选择你的图片名,其他默认。

  然后在Hierarchy中点击ARCamera,在右侧的C#脚本Vuforia Behaviour下拉选项中找到App License Key,将申请的License key复制到方框中。找到Database Load Behaviour脚本,勾选Load MyDataset Database,然后它下面会出现Activate,也勾选上。

  现在所有的软件设置已经完成,现在需要在场景中叠加一些虚拟物体。我们先创建一个Cube,并将它作为ImageTarget的子物体,调整位置和大小,如图所示。

  保证你的摄像头是正常连接上的。查看的方法是,点击Hierarchy中的ARCamera,然后查看右侧Inspector中的WebCamBehaviour脚本是否检测到了Camera Device。如图,我的摄像头采用的是Logitech HD Pro C920。

  一切就绪后,保存场景,并点击运行按钮。可以看到,虚拟的方块已经正确叠加到实际的标志板上了。

  一个方块貌似有些简陋,于是从网上下载了一个游戏中的NPC角色模型,替换cube,效果如图。

  Enjoy it!从此开始快乐的增强现实应用开发之旅吧!

-----------------------------------------------------------------------------------------------------------------

小结

  今天从头讲述了怎样搭建基于Unity的Vuforia开发环境,并且进行了最基本的基于平面标志板的AR测试。有了这个基础,读者还可以进行3D物体跟踪实验以及其他一些高级功能。程序要发布到安卓手机或iOS,可以参考其他一些教程。现在,Vuforia也支持发布UWP应用了。如果你用的是Windows 10,可以发布Windows store应用,部署到自己的PC上,当然这还需要额外的配置哦。

基于Unity3D 的Vuforia SDK开发基础教程的更多相关文章

  1. RPG游戏开发基础教程

    RPG游戏开发基础教程 第一步 下载RPG Maker 开发工具包 1.RPG Maker 是什么? RPG Maker 是由Enterbrain公司推出的RPG制作工具. 中文译名为RPG制作大师. ...

  2. 商业规则引擎IBM WebSphere ILog JRules概述,开发基础教程

    Ilog Jrules开发基础教程有7篇,地址规则引擎Ilog Jrules开发基础教程[连载1]-- 概述篇 概述篇 规则引擎是一种嵌套在应用程序中的组件,它实现了将业务规则从应用程序代码中分离出来 ...

  3. iOS 9音频应用开发基础教程

    iOS 9音频应用开发基础教程(大学霸内部资料)   介绍:iOS 9音频应用开发基础教程(内部资料)是iOS 9音频应用开发专向教程.本书采用Swift 2.0语言开发基于iOS 9的音频应用.实现 ...

  4. iOS 9应用开发基础教程下册

    iOS 9应用开发基础教程下册   介绍: 本教程是国内第一本iOS 9开发应用教程.本教程基于Xcode 7.0,使用Swift 2.0语言讲解如何开发iOS 9的应用App. 学习建议:本教程针对 ...

  5. Xamarin图表开发基础教程(2)OxyPlot框架

    Xamarin图表开发基础教程(2)OxyPlot框架 OxyPlot图表设计 OxyPlot是一个基于.Net的跨平台图表库.该图表库也支持Xamarin应用开发.该组件支持多种类型的图表.本章将主 ...

  6. [转载]Unity3D游戏引擎最详尽基础教程

    原文地址:Unity3D游戏引擎最详尽基础教程作者:ShangShang 我一直向所有想做游戏的朋友推荐Unity3D,为什么呢?首先是因为专业,Unity3D非常强大,用它创建一个类似MiniGor ...

  7. Xamarin图表开发基础教程(13)OxyPlot框架支持的其它图表

    Xamarin图表开发基础教程(13)OxyPlot框架支持的其它图表 除了以上提到的图表外,OxyPlot组件还包含了6种类型的其它图表,分别为等高线图.箱线图.饼图.热图.散点图和散点误差图,如图 ...

  8. Xamarin图表开发基础教程(12)OxyPlot框架支持的金融图表类型

    Xamarin图表开发基础教程(12)OxyPlot框架支持的金融图表类型 OxyPlot组件中支持5种类型的金融图表,它们分别为销量图.高低图.股票K线图.股票走势图和旧式股票图,如图1.20~1. ...

  9. Xamarin图表开发基础教程(11)OxyPlot框架支持的图表类型

    Xamarin图表开发基础教程(11)OxyPlot框架支持的图表类型 OxyPlot组件中支持7种类型的条型图表,分别为普通条形图.线型条形图.矩形条形图.差值图.龙卷风图.普通柱形图和柱形误差图, ...

随机推荐

  1. [LeetCode] Longest Substring Without Repeating Characters 最长无重复子串

    Given a string, find the length of the longest substring without repeating characters. For example, ...

  2. PPS传奇生死

    地址 :http://game.pps.tv/events/cqss_sign 调用encryptedString('password') RSA加密,通过function(a) 定义 window= ...

  3. 关于FloatingActionButton

    由于FloatingActionButton本质上是ImageView,跟ImageView相关的就不介绍,这里重点介绍新加的几个属性. app:fabSize:FloatingActionButto ...

  4. 锋利的jquery-读书笔记(一)

    最近转职做前端,学了两个月目前学到jquery的部分,看的是<锋利的jquery>这本书,特地开了博客将自己学习过程中看到的一些知识做一个笔记. 第一章: 一.jQuery对象和DOM对象 ...

  5. PHP 做文件校验,MD5,CRC32,SHA等

    函数 hash_file(): 使用给定文件的内容生成哈希值 说明 string hash_file ( string $algo , string $filename [, bool $raw_ou ...

  6. POJ1704 Georgia and Bob

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9771   Accepted: 3220 Description Georg ...

  7. Day6-python基础之模块

    模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...

  8. 人工智能之一《tensorflow》

    http://wiki.jikexueyuan.com/project/tensorflow-zh/

  9. 【原】webp图片牛刀小试

    其实今年很早就有接触到webp图片的概念,只是一直没怎么弄.今天在一个小项目中小用了一番.总结总结 采用 what,why,how的方式来总结 what? 什么是webp图片? 维基百科:       ...

  10. Linux下Steam中支持中文的办法

    搜索过好几个解决方案,诸如添加skin等等,在我的ARCH机器上似乎都不行然后在搜索linux steam cjk时, 发现一个链接中有解决DOTA2显示中文不正确的问题,感觉可能有用,就参考着搞定了 ...