前言
增强现实技术是当前信息技术领域的一项重要的综合性技术,融合了模式识别、计算机图形学等多个学科的知识。今天我们就和大家一起来看一下,这个技术到底可以带给我们什么吧。
左边是通过手机观看图片,可以看到叠加在背景图片上的栩栩如生的恐龙,右图是使用微软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上,当然这还需要额外的配置哦。