使用Unity AR Foundation在增强现实中查看模型
本文将分享麻省理工学院的教程-使用Unity AR Foundation在增强现实中查看模型。
在本教程中,我们将介绍如何把3D模型导入Unity,并使用Android设备或iOS设备在AR中查看模型的步骤。
过去,我们往往使用Vuforia增强现实系统来实现此目的,但现在Android和iOS都默认支持图像跟踪功能,因此我们不再需要使用第三方工具包了。
Unity支持Android的ARCore和iOS的ARKit,但是还有一个更好的选择:AR Foundation。
AR Foundation是一款跨平台开发套件,支持Android和iOS的系统。AR Foundation可以帮助我们更轻松开发在不同设备上使用的应用。但在部署应用到iOS或Android设备之前,我们仍需要完成一些额外步骤。
通过学习本教程,我们将学习在增强现实中放置模型的两种设置:图像跟踪和平面跟踪。
图像跟踪允许我们指定放置模型的目标图像。我们将打印出目标图像,应用程序将查找和放置模型到该图像上。
图像跟踪模式
平面跟踪模式下,我们将模型放置到现实平面中。我们可以在该模式下缩放和旋转模型。
平面跟踪模式
学习准备
首先,我们必须安装必要的软件及工具。
1、请下载并安装Unity Hub,此时会需要创建Unity用户账号。
2、启动Unity Hub,依次点击Install > Add,从列表选择Unity 2019.1.7f1版本。请不要安装结尾带有“a”或“b”的预览版本,因为我们无法确保它们的兼容性。
3、在安装界面勾选Android Build Support或iOS Build Support。
对于Android系统,要点开Android Build Support旁边的小箭头,勾选Android SDK and NDK Tools选项,这样可以跳过下一步。
4、Android系统的可选步骤:下载并安装Android Studio。如有必要,我们会使用Android Studio下载最新版Android SDK。
我们建议使用Unity安装Android SDK和NDK,过程将更简单。安装Android Studio可以在电脑上提供Android开发环境,方便实现高级用例。
下载Android Studio:
https://developer.android.com/studio
5、对于iOS系统,请访问App Store下载最新版XCode。
设置Unity项目
本教程将使用Unity AR Foundation示例项目中的两个示例场景。使用模板可以简化编辑操作,从而快速在场景放置和查看模型。
1、我们访问GitHub下载模版文件,下载完成后进行解压。
下载模版文件:
https://github.com/virtualxdesign/artemplate
2、启动Unity Hub,点击“Projects > ADD”选择解压的文件夹位置,将项目添加到Projects列表。在下拉菜单选择Unity版本,然后双击打开项目。
请注意,建议电脑安装的Unity版本和项目模版中使用版本一致,即Unity 2019.1.7f1。如果没有Unity 2019.1.7f1的版本,我们将在项目下方看到橙色的感叹号符号,只要使用的是更新的版本,所有功能都会正常工作。
为项目选择正确的Unity版本,打开项目
3、现在项目窗口打开了,项目中的AR Foundation应该已经是启用状态,如果没有启用的话,我们可以手动启用 。
请点击“Window > Package Manager”,打开资源包管理器窗口。该窗口显示Unity项目的所有可用扩展资源包。我们将看到AR Foundation、ARCore XR Plugin、ARKit Face Tracking和ARKit XR插件已经安装。
这些资源包名称旁边可能会有一个向下的箭头,表示有更新的版本可以使用,但请不要进行更新。如果已经有下面版本号的资源包,表示所有内容都已设置完成。
如果这些资源包没有安装好,请单击选择这些资源包,并从下拉列表选择以下版本,然后单击进行安装。
AR Foundation -> preview.3 - 2.1.0
ARCore XR Plugin -> preview.5 - 2.1.0
ARKit XR Plugin -> preview.5 - 2.1.0
ARKit Face Tracking -> preview.6 - 1.0.0
打开 Package Manager,确保已安装需要的资源包
4、将构建目标切换为Android或iOS。选择“File > Build Settings”,我们将为构建版本选择正确的环境。
从左侧列表中,选择Android或iOS,此时可以在底部看到“Switch Platform”按钮,单击该按钮。转换项目到对应平台需要一些时间,此时不要关闭该窗口。
单击左下角的“Player Settings”,将打开带有平台专用设置的窗口。模板应该已经有正确的设置,但我们仍要改变项目的资源包名称。
选择目标平台,然后单击“Switch Platform”,最后单击左下角的“Player Settings”
5、在Player Settings中,找到Identification部分。 我们可以修改资源包名称,名称的格式应该为“com.packagename.projectname”,
例如:模板设置的名称为com.virtualxdesign.artemplate,将其修改为com.virtualxdesign.yourprojectname,这将让应用拥有唯一的标识符。
修改资源包名称为com.virtualxdesign.yourproject
现在查看Unity项目文件。在打开场景时,如下图所示。
左侧是层级窗口,我们将使用该窗口把模型放置到场景中。我们可以把对象放到其它对象之中,当对象中包含子对象时,对象名称旁边会出现一个小箭头。
中间的视图是3D场景视图,我们可以在这个窗口中选择、移动、旋转和缩放对象。在图像跟踪示例中,我们不会使用该窗口。
右侧是检视窗口,我们可以在此查看和编辑游戏对象的细节。底部是项目窗口目录,这里列出了所有项目文件,我们会把模型文件放置到此处。
6、打开图像跟踪示例。在项目窗口中,打开“Scenes/ImageTracking/ImageTracking.Unity”。我们可以在该场景放置模型到目标图像上,例如:放到明信片或海报上。
我们使用默认设置在该场景测试了我们的设置内容。你不必修改任何内容,我们会构建应用,然后传输到设备,查看应用是否可以运行。此时,除了平台专用部分,所有内容都应该准备就绪。
下面,我们将介绍在Android设备和iOS设备上运行的准备步骤,请根据自己的设备执行相应的步骤。
构建过程(iOS)
为iOS系统构建Unity项目会有一些略微复杂的步骤,请参考Unity官方教程《构建为在iOS设备上进行测试的Unity项目》学习在iOS中构建和测试你的应用。
阅读Unity官方教程《构建为在iOS设备上进行测试的Unity项目》:
https://learn.unity.com/tutorial/building-for-mobile#
我们需要准备的内容:
安装iOS 11或更高版本系统的iOS设备
最新版XCode
Apple账号
温馨提示:由于本文教程使用了示例应用及模版,所以请忽略Unity官方教程中“Setting up the Simple Mobile Placeholder project”和“Preparing your Unity project for building to iOS”两部分的内容。
按照官方教程完成设置后,应用将会成功安装到设备上。启动应用,将摄像头对准“ImageTracking>Images”目录下的图像,我们将会看到,模板里的模型城堡出现在图像上。
我们可以从“Scenes/PlaneTracking.Unity”中打开平面跟踪示例项目,构建并运行该项目。当运行应用时,我们围绕水平面移动摄像头,此时将出现一个网格。 在网格上单击,模型会出现在网格上。我们可以使用滑块对模型进行移动,缩放和旋转。
构建过程(Android)
面向Android系统构建项目时,我们需要的Android设备至少要安装Android 7.0版本。
1、请在Android设备上启用开发者模式。
在设备上打开“Settings> About Phone”(设置 > 关于手机),找到“Build Number”(版本号)。点按7次版本号,将提示已经进入开发者模式,这样我们可以在手机上启用“Developer Options”(开发者选项)。
2、启用开发人员模式后,我们转到点击“Settings > System > Advanced > Developer Options“(设置 > 系统 > 高级 > 开发者选项),访问“Developer Options”(开发者选项)。根据设备不同,开发者选项的位置可能有所区别。如果无法找到设备的开发者选项,请在网络上搜索相关信息。
3、在开发者选项中,找到并启用“USB Debugging”(USB调试),这将允许我们从Unity把应用传输到Android设备。
4、我们将Android设备连接到电脑。我们的设备应该会提示“Trust this computer”(信任此电脑),点击“Always Trust”(总是信任),然后确认。如果不选择信任此电脑,电脑将无法把应用传输到手机上。
5、现在我们已经准备好构建应用。打开“Build Settings”构建设置,找到“Run Device”设置,单击“Refresh”按钮。在下拉列表中,找到并选中设备名称,这将使设备成为构建目标。
6、单击“Build and Run”(生成并运行)。Unity会请求在处理前把应用保存在电脑上。使用默认位置即可。命名应用的名称,然后保存,就开始构建过程了。
7、现在应用应已加载到手机上并且自动启动。我们把手机摄像头对准“Scenes/ImageTracking/Images”文件夹下的一幅图像,可以看到图像上出现了城堡模型。
8、我们可以从“Scenes/PlaneTracking.Unity”中打开平面跟踪示例场景。构建并运行应用。我们围绕水平面移动摄像头,此时将出现一个网格。 在网格上单击,模型会出现在网格上。我们可以使用滑块对模型进行移动,缩放和旋转。
在启动应用后,打开并设备对准目标图像,此时城堡模型应该会出现在目标上
导入和准备3D模型
我们可以使用摄影制图法获得OBJ文件或FBX文件,在导出模型时,我们应该把轴心点设为(0,0,0),把上方向设为Y轴。这样在3D建模软件中进行模型准备,比在之后导入Unity再进行设置要方便得多。如果模型的轴心点或朝向设置不正确,我们需要在Unity中进行调整。
3D摄影制图法模型有逼真的纹理和自然的环境光照。因此,我们不要对它们应用额外的光照,而是使用Unlit材质。请按照下列步骤,导入和应用Unlit着色器。
1、我们将OBJ,MTL和JPG文件拖入Unity的项目窗口目录中。我们可以在3DModels文件夹下创建新文件夹,把模型文件放到该文件夹中。
将文件拖放到Unity项目窗口
2、单击OBJ文件,在检视窗口中,单击“Extract Materials”(提取材质),使用已选中的文件夹,这样可让Unity在同一目录下生成可以编辑的材质资源。
3.、单击新建的材质资源。在检视窗口中,单击“Shader”下拉菜单,输入“Unlit”,单击选择“Unlit (Mobile/Unlit) shader”。
4、现在,我们要将模型放入模板场景中。为了方便正确地放置和缩放模型,我们提供了模板预制件。
在项目窗口中,打开3DModels文件夹,里面一个名为TrackedModel.prefab预制件,双击打开该预制件。
5、TrackedModel预制件已经放入图像跟踪和平面跟踪的示例场景中。在修改该预制件时,两个示例场景都会进行更新。因此,我们只需要把模型放到该预制件中即可。
6、把模型拖到该预制件中,请把模型添加为TrackedModel预制件的子对象。
7、此时,我们在同一预制件中有城堡参考模型和自己的模型。我们需要确保自己的模型有正确的位置和朝向。在放置自己的模型时,请使用城堡模型作为参考。
8、我们将自己的模型放到Tracked Model预制件之下,我们可能会不小心把它错放到Castle子对象下。
如果发生这种情况,模型可能会使用错误的缩放,位置和角度参数,从而完全离开屏幕外。我们可以使用检视窗口和3D工具来找到模型,把它移动到原来的位置。
在编辑Transform组件时,请确保选中的是自己的模型,而不是TrackedModel预制件。如果移动或缩放TrackedModel预制件会破坏示例场景。在单击TrackedModel即根对象时,我们会看到下图上的参数。
9、移动,缩放和旋转模型,使模型处在城堡模型中间。它们应该在底部对齐。最后删除城堡模型,单击返回箭头返回主场景。
10、我们的模型已经准备好了。现在可以打开示例场景,单击“Build and Run”来体验自己的应用。
使用图像跟踪模板
我们提供了一组图像目标的示例文件,你也可以创建和使用自己的图像目标。
1、找到合适的目标图像。通常我们应该使用带有鲜明特征的复杂图像,而带有少量或重复特征的图像并不适合使用。
2、在项目窗口中,打开“Scenes/ImageTraking/Images”文件夹,把格式为.jpg或.png的目标图像文件拖到该目录中。
3、单击“ReferenceImagesLibrary.asset”,在检视窗口中,我们会看到一组图像添加到目标图像列表。该列表中的所有图像都可以在运行时捕捉到,在列表下单击“Add Image”。
4、我们添加新的参考图像,将自己的图像拖到新的参考图像上,它会把图像添加到该列表中。
5、在“Specify Size”部分下,输入目标图像在现实世界中的大小,以米为单位。
给目标图像列表添加新图像
现在大功告成 !构建Image Tracking示例场景时,我们将看到应用能够识别目标图像,并在图像上方放置模型,我们也可以尝试不同的图像和大小。
使用平面检测模板
我们也可以使用Plane Tracking平面跟踪示例场景。平面跟踪示例场景拥有UI,你可以将模型放置到任何水平面上,并且使用滑块移动,缩放和旋转模型。
在项目窗口中,打开Scenes文件夹。点击Plane Tracking,所有内容应该都已经设置好了。根据Android设备或iOS设备特定步骤,构建并运行应用。
别忘了点按平面来放置模型。在手机识别到平面时,我们会看到平面上出现网格。我们可以把模型放到识别到的网格上。
小结
麻省理工学院的教程《使用Unity AR Foundation在增强现实中查看模型》为大家介绍到这里,对AR感兴趣的开发者,赶紧按照教程中的内容,动手进行操作吧。
下载Unity Connect APP,请点击此处。 观看部分Unity官方视频,请关注B站帐户:Unity官方。
你可以访问Unity答疑专区留下你的问题,Unity社区和官方团队帮你解答:
Connect.unity.com/g/discussion
推荐阅读
AR Foundation已支持LWRP 4.8.0-preview
Unity的移动端AR生态系统:AR Foundation,ARCore和ARKit
使用Unity开发沙盒游戏《The Serpent Rogue》
喜欢本文,请点“在看”