2017年8月25日

UE4 和 ARKit 入门

作者 Nick Whiting

6 月 5 日,Apple 推出了革命性的 ARKit,向我们展示了如何用 iOS 设备以一种全新的方式来讲述自己的故事。随着我们对虚拟引擎的 ARKit 集成的不断深化,WWDC 大会上的 Wingnut AR 演示令我们大受鼓舞,已经有如此多的虚幻开发者在为 iOS 设备创造 AR 体验,这真的让我们感到非常兴奋。

你会使用 ARKit 来进行建筑设计,制作改变玩家与环境互动方式的游戏,或者创造截然不同的东西吗?

看完这个虚幻引擎 4.17 快速入门指南,然后使用 ARKit 来实现你的想法!

Unreal+Engine%2FblogAssets%2F2017%2FAUGUST+2017%2FARKit+Sample+Released%2F770_ARKitSampleReleased-770x404-fdc202e4d3fe46fce114a597fe900460c23d5ae9

项目设置

要使用带试验性 Apple ARKit 插件的项目,必须先满足以下前提条件:

  • 支持 ARKit 的虚幻引擎 4.17
  • XCode 9 Beta 3 或 4
  • 运行 iOS 11 Beta 的 iPhone 或 iPad

XCode 9 Beta 3 或 4 和 iOS 11 Beta (iPhone/iPad) 都可以从 http://developer.apple.com 网站下载。

要确保使用了正确的 Xcode 版本,请在终端窗口中运行以下命令:

sudo xcode-select -s /Applications/Xcode-beta.app/Contents/Developer

现在,请启动虚幻引擎 4.17 并创建一个针对移动平台的新项目。打开此项目,然后从插件菜单中启用试验性 Apple ARKit 插件。如果你是基于 GitHub 源代码进行操作,在提示时可能需要构建该插件来启用这项支持。

如果你还没有准备好,请为你的设备配置证书,以便根据我们在文档中提供的指示来创建一个已签名的应用程序。

在“编辑”>“插件”(Edit > Plugins) 下方启用 ARKit 插件,然后重新启动编辑器。

启用 ARKit 插件后,转至“项目设置”>“iOS”(Project Settings > iOS)。你需要进行以下设置来使用 ARKit:

  • Minimum iOS Version:11 Beta
  • Additional Plist Data:

<key>NSCameraUsageDescription</key>\n<string>UE4 需要摄像机使用权限才能使用 ARKit。</string>\n

  • Max Metal Shader Standard to Target:Metal v1.2

在项目中使用 ARKit

ARKit 项目设置涉及三个主要方面:摄像机、Passthrough 和平面检测。我们会简短地介绍各个方面的设置来帮助你快速入门!

摄像机设置

好在摄像机的设置与 VR 摄像机非常相似,设置过 VR 摄像机的人应该对这些设置很熟悉。我们需要的只是一个包含专用 Apple ARKit 摄像机组件的新走卒类 (Pawn class)。当我们在设备上运行时,这个摄像机组件会随现实世界中的移动进行虚拟世界中的移动。

Unreal+Engine%2FblogAssets%2F2017%2FAUGUST+2017%2FARKit+Sample+Released%2FARKitSample_Pic1-770x208-9f5bf132bba2cb6f253fd50b740620a6ed92e626

Passthrough 设置

Passthrough 能让我们从 iPhone 或 iPad 背面的摄像机中获取信息,然后将其用作虚拟内容的背景。这会“增强”虚拟内容的现实感。下面几个步骤概括了 Passthrough 摄像机设置的基本要点。如需更完整的示例,请参阅本博客末尾链接的 ARSample 项目中的材质设置。

  • 在项目中添加 ARKit 纹理。

Unreal+Engine%2FblogAssets%2F2017%2FAUGUST+2017%2FARKit+Sample+Released%2FARKitSample_Pic2-770x314-45be1359ad5f70912ff14d39775ec81c9eb9fb72

  • *创建一个新的材质。将明暗处理模型更改为“不照亮”(Unlit) 并勾选“双面”(Two-Sided) 复选框。

Unreal+Engine%2FblogAssets%2F2017%2FAUGUST+2017%2FARKit+Sample+Released%2FARKitSample_Pic3-770x550-aab37b9ac575fb171355fb4e82cc602cac63f05b

  • 添加一个纹理取样节点,引用刚才创建的 ARKit 纹理,然后将它插到材质 (Material) 的自发光 (Emissive) 通道中。添加一个 ScreenPosition(屏幕位置)坐标节点,然后将它插到 ARKit 纹理的 UV 输入上。注:你可能需要根据屏幕比例调整 ARKit 纹理的 UV。如需相关演示示例,请参阅本博客末尾链接的 ARSample 项目。

Unreal+Engine%2FblogAssets%2F2017%2FAUGUST+2017%2FARKit+Sample+Released%2FARKitSample_Pic4-770x550-29313731161e40050edee311d58cbeac66015d1a

  • 向场景中添加一个球形网格,并将其调整到足以包含内容的尺寸,然后应用新创建的材质。这将用作天空盒,并用来渲染该球体中的内容在摄像机中呈现的影像。

平面检测

将虚拟内容放到现实世界中时,寻找平面通常很有用,例如墙面、地板或桌面。这就是平面检测的用武之地。平面检测可以使 ARKit 在现实世界中找到平面,然后用这些平面来承放虚拟内容。例如,如果你在做一只虚拟的猫,平面检测可以帮助你找到让它在上面四处跑动的地板。

在你移动设备的过程中会自动进行平面检测,而且在 ARKit 摄像机组件上以触摸输入的形式使用检测到的多个平面就像调用“屏幕位置的点击测试”(Hit Test at Screen Position) 功能一样简单。如果找到了一个平面,您将能够访问在 Apple ARKit 点击测试结果中找到的转换信息,以处理与现实世界中那个位置的交互逻辑。

Unreal+Engine%2FblogAssets%2F2017%2FAUGUST+2017%2FARKit+Sample+Released%2FARKitSample_Pic5-770x198-72ea15ee182d62a56f2fead96f278ad7f1c986f8

在设备上测试

完成项目设置后,单击启动 >(您的 iPadiPhone),项目便会构建并部署到设备上,和其他任何移动项目的做法一样。

ARSample 项目

Unreal+Engine%2FblogAssets%2F2017%2FAUGUST+2017%2FARKit+Sample+Released%2FARKitSample_Pic6-770x462-d7e8c4d92cd7afd92cb3be38eaf4b5f2ff3a6fe3

为了帮助大家快速入门,我们整理了一个样本项目,其中各项设置都已经设好,以便于直接使用 ARKit 和 UE4。要下载针对 4.17.1 版本的 ARSample 项目,请前往此处

需要记住的是,这是个早期的试验性插件,会随着技术的发展发生改变。当我们在 4.18 中将作为引擎的一部分正式发布 ARKit 插件时,我们会更新相关的支持文档以反映最终的架构。

我们迫不及待地想看看大家用这项革命性的技术创造了什么,所以我们鼓励大家在社交媒体上分享有关 ARKit 的体验,并在 TwitterFacebookInstagram 上用 @UnrealEngine 和 #UE4 标记我们!

打造虚幻世界

需要最强大的创世引擎

立即开始