源码

首页 » 归档 » 源码 » WWDC 2018 | iOS 12 Beta无与伦比的 ARKit2.0 初体验

WWDC 2018 | iOS 12 Beta无与伦比的 ARKit2.0 初体验


本文的内容是承接 WWDC 2018 | iOS 12 Beta初体验 一文的,上一篇中,从整体上过了一遍 iOS12 系统的更新的初体验,本文详细梳理一下ARKit2.0的更新内容。

写在前面

在前面文中提到,iOS 12主要是在性能上进行了优化,对普通用户来说,iOS 12并没有从软硬件上给人耳目一新。

但是对于开发者来说,关注点则很多,其中,ARKit2.0 就是一个很大的亮点。苹果在ARKit2.0的介绍过程中用了“无与伦比”来形容 ARKit2.0 :

unparalleled augmented reality experiences

我觉得 ARKit2.0 本次的更新,对于苹果系统下的 AR 发展具有划时代意义。

为什么这么讲,ARKit1.0 虽然强大,但始终停留在只能一台设备玩,玩家之间没有交互,你做的再好你只是一个单机游戏,但随着 ARKit2.0 的发布,这一切都变了。

With ARKit 2 on iOS 12, your AR apps can now be experienced by multiple users simultaneously, and resumed at a later time in the same state.

ARKit2.0 支持多人同时参与,玩家之间可以共享由虚拟世界和真实世界构建的场景,这样的话,随着这个功能的发布,AR 就加入了社交属性,对游戏设计者来说,这也就有了无限的想象空间。

所以,可以预见,接下来的几个月内,会有一批优秀的、多人参与的AR应用出现,值得期待。

ARKit2.0 虽然升级变化很大,但总结来看,我把变化归纳为两个部分:

  • 支持多人同时参与

  • 更好的支持3D

本文也从这两部分来讲解。

1. 支持多人同时参与的 SwiftShot

SwiftShot是苹果官方给出来的一个示例,本节结合 SwiftShot 来讲解 ARKit2.0是如何让多人同时参与进来的。

点击下载SwiftShot源码示例代码源码。

在讲解原理之前,先来熟悉一下游戏的基本玩法。

1.1 SwiftShot 玩法简介

游戏首页如下图所示,上面有两个按钮:

点击 Host 按钮为其他附近的玩家开始游戏,点击 Join 按钮参与在另一台设备上已经开始的游戏。

如果你点击了 Host按钮,应用会要求你找到平面(如桌子)以放置游戏面板。你可以拖动,旋转并捏合以定位和调整板的大小,调整OK后点击屏幕,并出现游戏板。

当游戏板出现时,你会发现桌子上有积木和弹弓,弹弓每端有三个。

将设备靠近弹弓,等弹弓高亮的时候,触摸屏幕抓住它,然后向后拉并释放,瞄准并发射球。

球会击倒积木或者弹弓,发生物理碰撞。

击倒对面三支弹弓者赢得游戏胜利。

下图是一些游戏场景的截图:

经过这个介绍,你的脑海中对这个游戏有了大致的印象。

接下来,就介绍苹果对这类游戏,在游戏设计方面的一些建议。

1.2 多人参与的AR游戏设计基本原则

1.2.1 鼓励玩家移动,增加游戏的沉浸式体验

Encourage player movement to make gameplay more immersive

在 SwiftShot中,因为在你和敌人弹弓之间有障碍物体,你可能会发现,你很难直接射击敌人的弹弓。但你可以移动到其他弹弓位置,与你的队友一起找到赢得比赛的最佳角度。

1.2.2 不鼓励剧烈的、大范围的移动

Don’t encourage too much movement

玩这类游戏,大家都在同一个相对狭小的空间中,集中注意力的盯着设备屏幕。

如果游戏过程中总移动的太猛烈,会导致队员撞在一起,这样就降低了AR游戏的沉浸体验,分分钟出戏,甚至还有受伤和摔坏设备的风险。

所以在 SwiftShot 中,一旦你选定要使用某一个弹弓之后,你必须仔细瞄准,保持设备稳定,才能射出一个好球,所以你不会因为低头盯着设备,频繁移动,而导致和其他玩家发生身体碰撞。

1.2.3 促进沟通和社交

Foster social engagement

多人AR游戏将玩家聚集在同一个空间,为他们提供新的娱乐方式。

使用AR观看比赛,也为观众提供了不同的视角和新的体验。NBA 就在积极尝试用户 AR 观赛。

保持游戏简短,但通过变化增加乐趣

Keep games short, but add fun through variation

通过下午和同事的体验这个游戏,发现玩这个游戏是比较累的,因为你需要端着设备,长时间保持在一个可能你并不是很舒适的姿势(比如半蹲),来完成球的发射。手机还相对好一点,抱着 iPad 真的特别累。

所以 SwiftShot 保持短暂的鼓励派对式游戏,玩家可以经常进入和退出游戏。

它还提供了几种游戏板布局和特殊效果,这样每次进入游戏都可以有所不同,避免审美疲劳。

1.3 如何在设备间共享数据

设备间共享数据包含两方面的内容:

  • 如何获取包含带有空间信息的数据,ARWorldMap 会帮我们完成这项内容;

  • 数据如何在设备间传递,通过 MultipeerConnectivity 可以实现。

结合二者,苹果实现了多用户之间的数据共享和游戏交互。

ARWorldMap

在 SwiftShot 中,当一个玩家点击 Host 按钮创建游戏面板之后,ARKit会自动创建一个 ARWorldMap,其中包含ARKit对游戏板周围区域的空间理解。

当其他玩家加入进来时,会收到一份 ARWorldMap 副本,并以此为依据构建多人一起玩耍的 AR 世界。

有关设置多人AR会话的更多详细信息,请参阅 Creating a Multiuser AR Experience

MultipeerConnectivity

SwiftShot使用 MultipeerConnectivity 框架在设备间建立连接,并发送游戏数据。

关于 MultipeerConnectivity的更多详细信息,可查看苹果的官方文档,后续我也会写相关的文档来做详细介绍。

关于 MultipeerConnectivity 的内容,后面用一篇文章专门来介绍。

注意: 使用Multipeer在设备之间直接传输数据,这些数据包括你的本地位置信息 ,通过设置MCEncryptionPreference.required 加密,它也可以防止窃听。苹果在用户数据隐私方面还是做的很好的。

2. AR Quick Look Gallery

iOS 12支持直接在Safari中预览3D模型,换句话说,也就是Safari 添加了对ARKit的支持。

下面,我们来体验一下这个功能。

在Safari下打开官方提供的3D模型链接。

打开链接之后,页面展示如下:

系统内置了一些3D模型,供我们预览:

在Safari中点击收音机,页面加载模型可能需要一点时间,加载完成后,如下图所示:

可以在屏幕上缩放和移动这个模型,点击顶部的 AR 选项,可以切换到 AR 预览模式:

效果如下:

很逼真吧!

这项功能为设计师和开发者,提供了在手机里预览模型的便捷方法!

小结

本文通过苹果提供的官方实例,剖析了AR对支持多人同时参与方面,官方提供的一些设计思路和实现原理;体验了在Safari中直接预览3D模型的功能。

如果您只是一个普通玩家,并非开发者,看到这里,应该对ARKit2.0有了一个大致了解,希望这些以后能够有助于您体验AR项目。如果您对iOS 12beta版本感兴趣,需要升级beta版本系统或者体验SwiftShot游戏,您可以私信我,有时间了会帮您解答。

如果您是一个开发者,这仅仅是一道开胃菜,下一篇,会从代码角度结合ARKit2.0新增的API,详细剖析 SwiftShot 的各个部分实现原理,您也可以翻阅我其他的关于 ARKit 和 SceneKit 的博客,获取更多信息。

作者:TankXie

链接:https://www.jianshu.com/p/8b51d3ef6572

(2)

本文由 投稿者 创作,文章地址:https://blog.isoyu.com/archives/wwdc-2018-ios-12-betawuyulunbide-arkit2-0-chutiyan.html
采用知识共享署名4.0 国际许可协议进行许可。除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为:6 月 7, 2018 at 02:50 下午

热评文章

发表回复

[必填]

我是人?

提交后请等待三秒以免造成未提交成功和重复