在这篇文章中,你将学习如何使用Vuforia和Unity创建一个增强现实体验。你还将学习如何在Android智能手机上测试和运行你的应用程序。
这就是你要建立的东西

这个立方体可以被替换成任何其他的3D物体,但为了简单起见,我们在本教程中只坚持使用立方体。
以下是上述视频中发生的事情的细节。
- 手机的摄像头检测到一个图像
- 该图像被识别为一个标记
- 然后手机在图像(或标记)上渲染出一个物体
这种AR体验,即你的手机在图像上渲染3D内容,被称为基于标记的AR体验。这就是我们今天要创造的东西,我们将使用一个叫做Vuforia的SDK来实现它。
为什么是Vuforia?
Vuforia有很多功能,比如:
- 图像跟踪
- 物体追踪
- 地面跟踪
- 多目标
- 云识别
- 虚拟按钮
以及更多。
我在本教程中使用Vuforia的原因之一是,它的设置很快速和简单。你可以创建你的第一个AR体验,而不用担心编码的麻烦。
此外,如果你知道Vuforia在安卓这样的平台上的配置步骤,你将能够将同样的步骤应用于iOS。这意味着,你可以开发一次,并将你的应用程序发布到多个平台。
与ARCore和ARKit相比,Vuforia的最大优势在于它支持广泛的设备。除了智能手机和平板电脑,Vuforia还支持增强现实头盔,如微软Hololens和Magic Leap。你可以在这里找到Vuforia推荐设备的完整列表。
先决条件
在我们进入Unity并开始项目之前,确保你已经完成了以下任务:
- 注册成为Vuforia引擎开发者
- 确保你安装了Unity 2021.3(LTS版本)。
- 检查你的设备是否支持增强现实技术
下面是我们要介绍的内容:
- 项目设置
- 用Unity设置Vuforia
- 如何在Vuforia中创建Image Targets?
- 在图像目标的基础上渲染3D内容
项目设置
如果你还没有这样做,创建一个新的Unity 3D项目并命名为 "Hello Vuforia"。
你可以通过在你的电脑上启动Unity Hub并点击 新项目来完成。

点击新项目后,会弹出以下窗口。为了确保我们正在创建一个3D项目,请做以下步骤。
- 从模板中选择3D
- 将项目名称从我的项目更新为Hello Vuforia
- 单击 "创建项目"按钮

该项目将需要几分钟的时间在Unity中打开。
保持项目打开,让我们开始整合Vuforia。
在Unity中设置Vuforia
在这一步,你将把Vuforia包添加到Unity的Hello Vuforia项目中。
要开始,请下载Vuforia包。请注意,除非你已经注册为Vuforia开发者,否则你不能下载该包。

接下来,双击下载的Unity包,你会看到这在Unity编辑器中自动弹出。点击导入。

为了验证Vuforia是否被成功导入,在Unity编辑器的Hierarchy面板上点击右键。如果你在下拉列表中看到Vuforia引擎,这意味着Vuforia已经成功导入。

从场景中删除主摄像机。然后,在Hierarchy面板中右击>Vuforia Engine>Add AR Camerato the scene。

在项目窗口中,进入资产>资源,双击VuforiaConfiguration以在检查器面板中查看其属性。你将在下一个步骤中添加许可证密钥。

要添加许可证密钥,请进入你的Vuforia Developer Portal>License Manager并点击Get Basic。

基本计划(免费提供)涵盖了诸如图像目标、多目标、圆柱体目标、VuMarks和地平面等功能。你可以建立和发布无限数量的应用程序,而没有Vuforia的水印。然而,如果您的应用程序使用了Vuforia的高级功能,如模型目标和区域目标,Vuforia水印将出现。这意味着你可以使用这些功能开发你的应用程序用于个人研究目的,但不能在任何平台上发布该应用程序。
如果您想在您的应用程序中不显示Vuforia水印的情况下访问模型目标和区域目标,您可以购买高级计划。要想对Vuforia有更详细的了解,你可以访问这个链接。
保持许可证名称与你的项目名称相同;例如,Hello Vuforia。你可以给你的许可证起任何名字。勾选条款和条件框,然后点击确认。

接下来,复制许可证密钥。

并将其粘贴到Unity中的 App License Key字段。

完美了!你已经成功地配置了Vuforia和你的Unity项目。
现在我们可以进入有趣的部分:图像识别。
你如何在Vuforia中创建图像目标?
在这一步,我们将添加图像(或标记),以便Vuforia能够检测和跟踪它们。这些检测和跟踪的图像在Vuforia中被称为图像目标。图像目标的集合被存储在一个数据库中。
图像目标和数据库都是通过Vuforia开发者门户网站创建的。
要开始使用Image Targets,在Vuforia Developer Portal中,转到Target Manager。然后点击添加数据库。

将数据库名称设置为 "HelloVuforia"(没有空格)并选择设备类型。设备类型的数据库是一个存在于你的应用程序中的数据库。如果你有一个大的数据库,那么选择云类型。最后,点击创建。

数据库创建后,打开HelloVuforia并点击添加目标。

选择图像作为你的类型。你可以在文件字段中上传任何图片;我使用了Pixabay的这张图片。这个图像将是你的图像目标,这意味着它将被你的应用程序检测和跟踪。

在填写完上述其他细节后,点击添加。你会看到在你的数据库中列出的图像。对应于每张图片,有一个称为评级的属性。试着上传一张有较多星星的图片。星级数越高,就越容易检测和跟踪图像。
在下面的图片中,你会看到两个图像目标。被称为stones_image的目标只有3颗星,但lens_image目标有5颗星。这两个图像都是可以增强的,但lens_image会有更好的表现。

点击下载数据库>Unity Editor>下载。一旦下载,你会得到一个叫做HelloVuforia.unitypackage的文件。双击这个文件,在Unity中打开它。

你会得到下面的弹出窗口。点击导入。

在Unity中导入数据库后,在项目面板中进入资产>资源,双击VuforiaConfiguration,在检查器面板中查看属性。在数据库部分,你会看到HelloVuforia被列出。这意味着你已经成功地将数据库导入到你的Unity项目。

在图像目标之上渲染3D内容
现在你已经准备好在图像目标的顶部显示一个立方体。按照本教程的其他步骤来做。
在Hierarchy Panel>Vuforia Engine中右击,在你的场景中添加一个Image Target。

选择ImageTarget,在检查器面板中查看其属性。在**Image Target Behaviour (Script)**中,做以下修改。
- 将类型设置为来自数据库
- 将数据库设置为HelloVuforia
- 将图像目标设置为lens_image(或任何其他你上传到HelloVuforia数据库的图像)。

现在在场景中添加一个立方体作为ImageTarget的孩子,像这样
。

把立方体的比例缩小到0.2(如果你想的话,也可以更小)。

然后,将立方体在正Y轴上移动一点,使它看起来像漂浮在图像上方。

这就是了!现在你已经准备好在你的安卓设备上运行这个应用程序了。
点击播放按钮,使用你的网络摄像头运行该场景。

点击播放按钮后,将你的网络摄像头对准图像,立方体就会神奇地出现在图像的顶部。我已将图像下载到我的iPad上,但你也可以拿出图像的打印件,将网络摄像头对准打印件。它给出了同样的结果。

结论
祝贺你!你刚刚创造了一个增强型图像。
你刚刚用Unity和Vuforia创建了一个增强现实体验。这个教程对于那些试图创建他们的第一个AR体验的人来说是一个基本教程。然而,立方体可以被替换成任何其他的3D模型。试一试吧!