使用 ARFoundation 进行 AR 入门介绍

感谢你们的辛勤工作。
我是横滨办事处开发部的松山先生。

我测试了AR技术,因为我觉得它可能会带来一些工作机会。
我会把我的发现记录在我的博客上。

提前准备

■ 工具和插件
首先,准备测试环境。
最快的测试方法是使用 Unity。

・Unity 2019.3.0b11

虽然是测试版,但最新的修复版本(2019.2.13f1)中AR相机显示不正常,所以我目前使用的是2019.3版本。Unity
Hub真的非常实用。
* 在我撰写这篇博客期间,2019.3的修复版本(2019.3.0f1)发布了。
在这个版本中,AR相机可以正常工作了。

・AR插件
・AR Foundation (2.1.4)
・ARKit XR插件 (2.1.2) *适用于iOS

创建新项目后,从包管理器导入。
顺便一提,之前的 UnityARKit 插件已不再可用,
现在 AR 开发使用 AR Foundation。由于我们只在 iOS 上进行测试,因此只需导入 ARKit。如果您也支持 Android,则还需要导入 ARCore。
包管理器也非常方便。

■ 项目设置(iOS)
・公司名称、产品名称、构建标识符为可选
。・为方便起见,可在“偏好设置”中启用“自动签名”。
・由于将使用摄像头,请在“摄像头用途描述”中输入合适的描述
。・勾选“需要 ARKit 支持
”。・需要 iOS 11 或更高版本,因此请将最低 iOS 版本设置为“11.0”。
・架构为“ARM64”。

■ 构建设置
由于我们将在 iOS 上运行它,
・选择 iOS 作为平台
・将 Xcode 中的运行更改为“Debug”
・选中“开发构建
并运行“切换平台”。

* 什么是 AR Foundation?
ARKit 用于 iOS
,ARCore 用于 Android
,而 AR Foundation 是一个支持这两个操作系统的多平台 AR 工具。

为场景添加增强现实功能

创建一个合适的场景(可以使用默认场景)
。・由于我们将使用AR相机而不是主相机,请删除主相机
。・将以下对象作为AR功能添加到层级视图中:
・AR会话原点
・AR会话
就这么简单。

飞机的图形显示


这样就可以设置成用黑色边框和半透明板显示检测到的平面。

1. 创建一个平面,用于显示为平面(XR → AR 默认平面)
。2. 将创建的平面转换为预制件,并从层级视图中删除
。3. 将“AR 平面管理器”组件添加到 AR 会话原点,以显示检测到的平面
。4. 将步骤 2 中的预制件设置为“AR 平面管理器”组件的“平面预制件”
。5. 如果只需要一个水平面,请将“检测模式”设置为“水平”。

在增强现实空间中放置物体

触摸检测到的平面,即可在该平面上显示物体。
・将“AR Raycast Manager”添加到 AR 会话原点,以检测触摸坐标。
・编写代码,在触摸坐标处生成物体。

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.XR.ARFoundation; using UnityEngine.XR.ARSubsystems; public class ARManager : MonoBehaviour { [SerializeField] private GameObject objPrefab; private ARRaycastManager raycastMan; private List<ARRaycastHit> hitResults = 新的列表<ARRaycastHit>(); void Awake() { raycastMan = GetComponent<ARRaycastManager> (); } void Update() { if (Input.touchCount > 0) { Touch touch = Input.GetTouch(0); if (touch.phase != TouchPhase.Ended) { return; } if (raycastMan.Raycast (touch.position, hitResults, TrackableType.All)) { Instantiate (objPrefab, hitResults[0].pose.position, hitResults[0].pose.rotation); } } } }

・将创建的代码(类)作为“添加组件”添加到 AR 会话原点
。・在 ObjPrefab 中注册要显示的对象。

你想显示的对象

立方体或球体都可以,但既然来了,我就决定从资源商店里找个合适的模型。
我把搜索范围缩小到3D和免费资源,最后决定用“太空机器人凯尔”。
我导入了模型,创建了一个虚拟形象,让它动起来,并调整它以使其能够执行“UnityChan”的动作。
这只是业余爱好,所以我就不赘述细节了。

请检查实际设备。

构建并在真机上测试。
・打开构建设置并运行构建
・启动生成的 Xcode 项目
・连接要安装的设备并在 Xcode 中选择它
・按 ▶ 构建并运行

运行程序后,会在触摸位置生成一个物体,就像这样。

*为了保护隐私,我模糊处理了脸部,但看起来有点可疑……

总结

设置过程非常简单。
只需几个步骤,你就能实现类似《勇者斗恶龙:漫步》中的“怪物AR”功能。
一开始,我在Unity版本上遇到了一些问题(AR摄像头在2019.2系列主机上无法显示),但
除此之外,我觉得没什么大问题。
要说缺点的话,那就是
无法在Unity编辑器中检查运行情况,所以每次都要重新构建,有点麻烦。

下次我打算测试一下如何将 GPS 和谷歌地图连接起来!

最后

我开设了我所属的系统开发服务网站“SEKARAKU Lab”。
Beyond是从服务器设计搭建到运营的一站式服务,所以如果您在服务器端开发方面遇到任何问题,请随时联系我们。
SEKARAKU 实验室: [https://sekarakulab.beyondjapan.com/](https://sekarakulab.beyondjapan.com/)

好了,现在就这些了。

如果您觉得这篇文章有帮助,请点赞!
0
加载中...
0 票,平均:0.00 / 10
3,371
X Facebook 哈特纳书签 口袋

写这篇文章的人

关于作者

松山贤章

他长期在一家游戏开发公司工作,从事程序和项目管理工作。
2019年加入超越株式会社。
在横滨办事处工作。 主要负责服务器端开发工作的项目管理。
(有时编程)我的爱好是骑自行车(公路赛车)和观看赛马。