本文将分享麻省理工学院的教程-使用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

使用AR Foundation制作圣诞AR小游戏

《帕斯卡契约》2019苹果秋季发布会大放异彩

使用Unity Accelerator加快团队协作开发

使用Unity开发沙盒游戏《The Serpent Rogue》

高级动画绑定功能:角色与物品的交互

喜欢本文,请点“在看”

android显示3d模型_使用Unity AR Foundation在增强现实中查看模型相关推荐

  1. android studio 中配置groovy源码_麻省理工教程:使用Unity AR Foundation在AR中查看模型...

    本文将分享麻省理工学院的教程-使用Unity AR Foundation在增强现实中查看模型. 在本教程中,我们将介绍如何把3D模型导入Unity,并使用Android设备或iOS设备在AR中查看模型 ...

  2. 借助Unity AR Foundation构建跨平台AR应用

    Unity是同名游戏引擎的制造商,它在继续推进自己的AR Foundation项目,该项目旨在让开发者可以更容易地创建能够同时在iOS和Android上运行的AR应用.其最新版本增加了对ARKit A ...

  3. android立体3D效果_谷歌裸眼3D动物意外蹿红,掀起一股AR体验小高潮

    疫情在国外来势汹汹,越来越多人不得不长期待在家中.这个时候如果手指闲不住,不如试试在谷歌搜索中检索动物,就会有栩栩如生的 3D"动物"空降你家,而且其违和感已相较之前大大降低. 在 ...

  4. unity ui插件_用Unity制作GalGame/视觉小说游戏的模型素材与插件推荐

    本文推荐一些用于开发GalGame或者视觉小说(Visual Novel)游戏的音频素材.Unity插件.3D模型.动作动画和2D素材. 一:音频资源 Cute Romantic Music Pack ...

  5. 生命周期模型_建立从思想到价值的生命周期模型

    生命周期模型 数据科学家来自火星,软件工程师来自金星(第4部分)(DATA SCIENTISTS ARE FROM MARS AND SOFTWARE ENGINEERS ARE FROM VENUS ...

  6. seq2seq模型_带你读论文 | 端到端语音识别模型

    编者按:过去十年,得益于人工智能与机器学习的突破.算法与硬/软件能力的进步,以及拥有既多样又大量的语音数据库,用以训练多参数的.大规模的语音识别与合成模型,使得语音处理技术获得飞跃性进展. 随着端到端 ...

  7. dve 二维数组信号 显示波形_交互式仿真下dve和verdi中查看二维数组值

    在交互式仿真中,可以通过dve工具和verdi工具,查看二维数组的值.但是不能查看稀疏数组的值. 什么是稀疏数组,类似于如下定义: reg [7:0] memory [bit[63:0]] 一.dve ...

  8. aria2百度网盘 http返回头无效_接口测试第10期:Fiddler中查看HTTP请求中的状态码...

    关注后回复[软件测试]查看更多上期介绍了常见的HTTP请求方法,get请求.post请求,今天介绍HTTP请求中的状态码,以后也能分辨出哪些状态码是表示客户端错误,哪些是服务器错误.状态码在Fiddl ...

  9. 《守望先锋》模型提取之Blender中查看模型(二)

    <守望先锋>模型提取之Blender查看模型(二) 插件安装 1.将io_scene_owm.rar文件解压后放入blender工具目录中的addons目录下![在这里插入图片描述](ht ...

最新文章

  1. MySQL修改datadir目录
  2. PG SQL数据库读写分离的思路
  3. JSP EL 表达式取request parameter
  4. poj2823 Sliding Window
  5. (61)FPGA面试题-使用Verilog语言编写异步复位同步释放代码
  6. 基于物联网的新型智能家居控制系统设计
  7. python supervisor_Supervisor捕获不到python的Print
  8. [笔记]ASCLL码表(48 “0”,65 “A”,97 “a”)2022.3.12
  9. 机器学习11种优化器推导过程详解(SGD,BGD,MBGD,Momentum,NAG,Adagrad,Adadelta,RMSprop,Adam,Nadma,Adamx)
  10. python新浪微博爬虫_scrapy实现新浪微博爬虫
  11. mysql hive 建表语句_关于Mysql元数据如何生成Hive建表语句注释脚本
  12. 解决centos7安装wps后的光标跟随问题
  13. css 大于号 标签_css里大于号表示什么
  14. 使用Unison同步服务器目录
  15. win10内存占用率过高怎么办_Win10系统硬盘占用率100%各种卡死怎么办?
  16. Serval and Rooted Tree(树形dp)
  17. gpio上拉下拉区别
  18. 好养活的“狗剩儿”和“胖丫儿”。龙芯电脑测评!
  19. 第一次阅读与准备作业
  20. fedora系统的ISO镜像制作

热门文章

  1. 潜行者活动硬盘电脑,你也可以打造
  2. PHP安装zip拓展,以及libzip安装问题
  3. 如何调试 Android 上 HTTP(S) 流量
  4. React(0.13) 定义一个动态的组件
  5. 网站怎样留住浏览用户
  6. 表单数据自动录入_「Excel技巧」Excel表格实时记录数据录入时间,关键还是自动哦...
  7. 【学习笔记】JSON基础概念简介
  8. 【整理】SAP系统内核和ABAP版本
  9. 【重复制造精讲】REM Pull List 拉料单(续)
  10. Lead time 在ERP 中怎么填