e2d41230a917495b33f5bba0117f701c.png

大家好,先给大家拜个早年。新的一年要继续坚持做游戏哦!

fea19ce54c72f7a2cfdd3538a795b2c2.png

Vuforia

之前的文章中,我们大体介绍了Unity中主流的几种AR插件。

本文我们来了解在Unity中使用高通的Vuforia制作AR游戏。

Vuforia是与高通公司的合作产品,致力于虚拟现实的技术。VR和AR的结合在Android端和iOS端表现效果相当不错,并且可以通过终端自带的摄像头进行虚拟现实,同时支持VR和AR的交互工作,达到体验不输给传感器的效果。

Unity2017.3平台开始全面支持Vuforia 7。通过Unity编辑器,开发人员可以直接将各种各样的实物、环境与 3D 图像混合,从而开发出跨平台的AR应用

Vudoria也是当今AR行业使用较广的方案。


开始前准备

在学习Vuforia前,我们需要做一些准备工作,同时来了解一下Vuforia中比较重要的一些功能参数。

1.安装vuforia

Unity2017.3及之后的版本中,我们可以直接通过Unity安装包来安装Vufoia,如图所示:

0505520620e36e31e34e0240be29b2d1.png

2.vuforia游戏对象

安装完成后,Vuforia相关的对象,便可以在GameObject菜单中创建 :

e7f6fa6909fbab0ebffb2c511429792a.png

3.激活vuforia

在使用Vuforia之前,我们必须在项目中激活Vuforia,然后才能构建Vuforia应用程序 ,如下图所示:

dd438f37ca269cacf991a2a8da62fb4a.png

勾选右侧Inspector面板中Vuforia Augmented Reality选项

vuforia的重要参数

ARCamera:ARCamera可以说是Vuforia的灵魂所在,其中包含了大部分AR表现的参数设置。

b568bbdd01a1be6bc773647bdffa44dc.png

点击Open Vuforia Configuration会出现如下界面:

8178ebbf1d2bf94d687b8eb302ffb434.png

我们可以了解一下其中比较重要的参数:

1.World Center Mode:

SPECIFIC_TARGET:指定一个物体为世界中心的坐标,此物体必须继承Vuforia Behaviour ;FIRST_TARGET:摄像机所照射到的第一个需要识别的目标 ;
CAMERA:以摄像机为世界中心坐标 DEVICE_TRACKING 设备追踪,以设备正在追踪的物体。

2.Camera Device Mode(设备的模式)

质量优先,优化质量;
速度优先,优化速度;
默认的模式,在以上两种间做一个平衡,在没有特殊需求时使用。

3.Max Simultaneous Tracked Images:最大追踪识别图片数量 为1时,就是无论有多少需要识别的图片,只能一张一张的识别,识别一张后,其它的就不能识别。
Max Simultaneous Tracked Objects:同上,只不过是识别物体。

4.Camera Direction 摄像头的方向
CAMERA_DEFAULT:默认摄像头,调用系统默认的摄像头;
CAMERA_BACK:后置摄像头,但是在PC时会调用电脑的前置摄像头;
CAMERA_FRONT:前置摄像头,会调用PC的后置,但是PC没有后置,所以当调用时GAME视图会黑屏 手机正常。

5.Digital Eyewear 设备类型

Handheld:手持;
Digital Eyewear:微软眼镜;
Phone + Viewer:MR。

6.DataBases 数据库 把需要识别的图片上传到数据库中,在下载,导入Unity。 建立数据库后,把想被目标识别的物体上传到Target中,之后再根据需要下载不同类型,再导入。 ARCamera—Databases下第一个第二个(下载创建的数据库和激活)打钩。


vuforia官方demo解析

接下来我们可以研究一下vuforia的官方unity案例,案例可在Asset Store中下载

41ef122d71b95cde1d10c1a253767e41.png

我们选择Vuforia Core Samples 在导入后可以看到,这个案例中有如下场景:

b7d3e176d690400cbcbb522ab7284f0f.png

这些场景包含了vuforia的所有功能,下面我们依次来介绍这些功能

1. Cloud Targets(云识别)

其主要是将Target和其他数据放在云端,或者将相关数据放到自己的服务器端。然后客户端进行获取图像在云端匹配并获取json数据在客户端解析之后,展示出来。

2.Cylinder Targets

通过这些demo的名称一般都能看出他们的功能。可以将AR内容放置在圆柱形和圆锥形的物体上。苏打水罐,瓶子和印有图案的管子都是最佳选择。

9e8f5e39199c640209928436b92f360e.gif

3.Image Targets

Image Targets是将AR内容投放在杂志页面,卡片和照片等平面物体上的方法。

4924056b0f745d1744f52cb800b10447.gif

4.Multi Targets

其是将AR内容放置在可以从多个方面查看或包含多个图像的平坦表面的对象上的方法。产品包装,海报和壁画都是非常好的应用场合。

7f51e369fdf56917ddfd00c4e8b07c75.gif

5.Object Targets 应用于3D对象,在扫描时可以识别和跟踪3D对象。对象识别对几何稳定且具有表面细节的对象起到最佳效果。

77318d98e13989c0c3dc90ab6ded0dae.gif

6.Virtual Button 虚拟按钮

虚拟按钮我们会在之后的文章中,详细介绍。

7.VuMarks

其是自定义设计的AR标记,可以对数据进行编码,以支持ID以及文本和字节数据。 VuMarks是识别对象独特部分的方法,该部分可以是一个系列或集合的一部分。它们是解锁玩具和零售产品数字体验的解决方案。

43fa0881529f40d12ee24f216ecf82ec.png
在最新的Vuforia中,开发者还可以通过Ground Plane将内容附加到水平表面,如地板和桌面,我们也可以通过官方案例Vuforia Ground Plane来学习研究

85eb01b4d79157ff97646f84d7245636.png

使用Vuforia制作AR游戏


上文中,我们介绍了Vuforia在unity中的主要的摄像机参数,以及官方demo的介绍。

这里我们通过unity中的Vuforia插件,制作一个小的AR项目,以便于加深对Vuforia的了解,并且初步掌握Vuforia的用法

1.导入Vuforia,并创建ARCamera

e7f6fa6909fbab0ebffb2c511429792a.png

2.激活Vuforia

dd438f37ca269cacf991a2a8da62fb4a.png


勾选右侧Inspector面板中Vuforia Augmented Reality选项
这两个步骤在之前已经讲过

3.访问https://developer.vuforia.com 并注册账号,注册方法和其他网站或应用没什么差别。

499d6545cbe8c4ba471ff19469e38195.png

4.进入以下界面,我们在License Manager中选择Get Development Key,获取许可证

94c55f34610c833726143fd4d20b3550.png

5.出现下边的页面,我们填写上APP Name,并勾选下面的选项然后点击确定

9b421731f5e221c766fcf3d3e79cf424.png

6.在如下页面中,点击我们刚创建的项目,在这里,我们选择ARTest

92d9c44341b51c7818adfb40a20f4d42.png

7.复制下图中拉黑的数据

525a333d3d88def3192ceede731221fc.png

8.接下来我们打开Unity,在我们之前创建的工程中,选择我们创建的ARCamera,可以看到Inspector面板中有Vuforia Behaviour组件,在组件中我们点击Open Vuforia confineration。

e653cbda9c513ff3345e404fea176494.png

9.出现如下界面后,我们把之前复制的key粘贴到App License Key中

0f69c954a5737705d847440b9b100a7d.png

10.然后我们回到之前的网页,选择Target Manager,然后选择Add Database建立我们的仓库

71f5dc1e6dc628a1abc36574b1a659c8.png


创建数据仓库,如下所示

30484d0838df079037ec40fc1f17ebb7.png

11.进入刚才建立的仓库,选择Add Target

bef3e41ea89e9937fa565622a2711319.png

12.然后我们会得到如下界面,在Add Target中,我们可以选择添加单张图片、立方体、圆柱、以及3D物体,下边的选项分别是文件、宽度、名称。在本文中,我们选择单张图片,并添加图片文件,宽度设置为1(在场景单元中输入目标的宽度。目标的大小应该与虚拟内容的大小相同。VuFuia使用米作为默认单位规模。当你上传你的图像时,会计算出目标的高度。),名称可以取任意名称(注意,不能是中文)

a304b500468c3bcf4b9901e088bdedbb.png

13.在添加完成后,我们的仓库中会出现刚添加的项目

79f4395a61fb5b462185b09895c1c52a.png


我们可能注意到,在右侧有星号,星号表示图片的识别度,星越多图片的识别度也就越高。理论上来说,图片越复杂,其识别率也就会越高。

14.我们选中项目后,点击Download Database,选择Unity Editor,下载数据库。

c260904d05439f678c53ed4062dbd050.png

14.下载完成后,将其导入当前的Unity项目中

28bee403ddbb9134824531cc5ae70b8c.png

15.接下来创建一个ImageTarget

aac618acd5a179a8e3b8f5fe5f1bb050.png

16.设置好ImageTarget的属性,然后将我们希望展示的物体,作为ImageTarget的子物体并调整好其大小及位置。

1593a48f662c9eb81551e28c984081a5.png

4c68ca1648274dcc393c6aea62594d02.png
  • 到此为止,我们简单的AR应用就制作完成了,我们运行测试我们的应用。

cd3314a091b3b58fa9a88d0bcfe4bf52.png

到此为止,我们使用Vuforia制作的识别图片创建物体的一个简单AR应用就完成了,过程非常简单,甚至在整个流程中没有出现需要代码实现的逻辑。

当然,这并不是Vufoira的全部。之后的文章会通过更加复杂的案例,给大家介绍Vuforia更多更有趣的功能。

有想系统学习游戏开发的童鞋,欢迎访问http://levelpp.com/。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐