基于Unity3D 的Vuforia SDK开发基础教程
最新博客地址已转到:
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开发基础教程的更多相关文章
- RPG游戏开发基础教程
RPG游戏开发基础教程 第一步 下载RPG Maker 开发工具包 1.RPG Maker 是什么? RPG Maker 是由Enterbrain公司推出的RPG制作工具. 中文译名为RPG制作大师. ...
- 商业规则引擎IBM WebSphere ILog JRules概述,开发基础教程
Ilog Jrules开发基础教程有7篇,地址规则引擎Ilog Jrules开发基础教程[连载1]-- 概述篇 概述篇 规则引擎是一种嵌套在应用程序中的组件,它实现了将业务规则从应用程序代码中分离出来 ...
- iOS 9音频应用开发基础教程
iOS 9音频应用开发基础教程(大学霸内部资料) 介绍:iOS 9音频应用开发基础教程(内部资料)是iOS 9音频应用开发专向教程.本书采用Swift 2.0语言开发基于iOS 9的音频应用.实现 ...
- iOS 9应用开发基础教程下册
iOS 9应用开发基础教程下册 介绍: 本教程是国内第一本iOS 9开发应用教程.本教程基于Xcode 7.0,使用Swift 2.0语言讲解如何开发iOS 9的应用App. 学习建议:本教程针对 ...
- Xamarin图表开发基础教程(2)OxyPlot框架
Xamarin图表开发基础教程(2)OxyPlot框架 OxyPlot图表设计 OxyPlot是一个基于.Net的跨平台图表库.该图表库也支持Xamarin应用开发.该组件支持多种类型的图表.本章将主 ...
- [转载]Unity3D游戏引擎最详尽基础教程
原文地址:Unity3D游戏引擎最详尽基础教程作者:ShangShang 我一直向所有想做游戏的朋友推荐Unity3D,为什么呢?首先是因为专业,Unity3D非常强大,用它创建一个类似MiniGor ...
- Xamarin图表开发基础教程(13)OxyPlot框架支持的其它图表
Xamarin图表开发基础教程(13)OxyPlot框架支持的其它图表 除了以上提到的图表外,OxyPlot组件还包含了6种类型的其它图表,分别为等高线图.箱线图.饼图.热图.散点图和散点误差图,如图 ...
- Xamarin图表开发基础教程(12)OxyPlot框架支持的金融图表类型
Xamarin图表开发基础教程(12)OxyPlot框架支持的金融图表类型 OxyPlot组件中支持5种类型的金融图表,它们分别为销量图.高低图.股票K线图.股票走势图和旧式股票图,如图1.20~1. ...
- Xamarin图表开发基础教程(11)OxyPlot框架支持的图表类型
Xamarin图表开发基础教程(11)OxyPlot框架支持的图表类型 OxyPlot组件中支持7种类型的条型图表,分别为普通条形图.线型条形图.矩形条形图.差值图.龙卷风图.普通柱形图和柱形误差图, ...
随机推荐
- [LeetCode] Transpose File 转置文件
Given a text file file.txt, transpose its content. You may assume that each row has the same number ...
- [LeetCode] 3Sum Closest 最近三数之和
Given an array S of n integers, find three integers in S such that the sum is closest to a given num ...
- C#将WebBowser控件替换为Chrome内核
摘要 由于最近要做一个浏览器式的软件,其中有不少地方需要使用到jQuery和BootStrap,但是在C#中,默认的WebBrowser控件默认使用的是IE的core,而低版本的IE在JS加载上总是容 ...
- Chrome浏览器调试,console简述
作为一个前端开发者,不可避免的需要进行各种各样的调试. 在谷歌浏览器出来以前,火狐的firebug是特别有名的一款调试工具,不过自从谷歌浏览器诞生以来,其自带的开发者工具足以媲美firebug,某种程 ...
- [板子]最小费用最大流(Dijkstra增广)
最小费用最大流板子,没有压行.利用重标号让边权非负,用Dijkstra进行增广,在理论和实际上都比SPFA增广快得多.教程略去.转载请随意. #include <cstdio> #incl ...
- asp.net获取服务器绝对路径和相对路径
绝对路径 AppDomain.CurrentDomain.SetupInformation.ApplicationBase 相对路径 Server.MapPath("~/")表示当 ...
- ASP.NET 正则替换URL参数值
public class HomeController : Controller { public ActionResult Index() { var url = "http://www. ...
- iOS 读取大文件时候的注意点
转: 使用NSData读取数据,采用NSData的dataWithContentsOfFile:方法.不少人反馈说如果直接使用,将会耗尽iOS的内存. 其实这个是可以改善的. NSData还有一个AP ...
- intellij idea 12 编码不可映射字符
IntelliJ IDEA中错误提示:java: Syntax error on token "Invalid Character", delete this token Inte ...
- Sql的decimal、float、double类型的区别
三者的区别介绍 float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位) double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E ...