学习ARKit(一)

前言

在2017年6月,苹果2017年的WWDC大会上发布了全新的iOS11系统,我们可以先体验一下它的beta版,在9月19日就有正式版上线了。当然在新的iOS11系统中,我们比较关注的就是新增了ARKit和文件管理系统。本文主要是跟着苹果的官方Document来学习一下ARKit。

AR是什么?

AR(Augmented Reality,即增强现实),透过摄影机影像的位置及角度精算并加上图像分析技术,让屏幕上虚拟世界能够与现实世界场景进行结合与互动。这种技术估计于1990年提出。随着随身电子产品运算能力的提升,增强现实的用途也越来越广。(摘自维基百科)

那么ARKit带给我们什么呢?

这里有一段苹果给我们提供的视频(要用Safari打开)。
主要的功能大概有以下几个:视觉惯性里程计、场景理解和照明估计、高性能硬件和渲染优化。

视觉惯性里程计

在机器人和计算机视觉问题中,视觉里程计就是一个通过分析处理相关图像序列来确定机器人的位置和姿态。(摘自维基百科)
里程计我们知道它是记录距离的,但在机器人和计算机视觉的领域,不仅仅要知道行驶的距离,而且要知道机器人行驶的整个轨迹(即机器人每个时刻的位置和姿态)。假设在时间t时刻,机器人的位置和姿态信息是(xt,yt,zt,ψt,χt,ϕt),其中xt,yt,zt表示机器人在世界坐标系中的位置信息,ψt,χt,ϕt表示机器人的姿态,分布表示为roll(ψt), pitch(χt),yaw(ϕt)。
确定机器人轨迹的方法有很多,我们这里主要用的是视觉惯性里程计。将一个摄像头(或多个摄像头)刚性连接到一个移动的物体上(如机器人),通过摄像头采集的视频流来确定相机的六个自由度。如果使用一个摄像头,则称为单目视觉里程计,如果使用两个(或者更多)摄像机,则称为立体视觉里程计。

ARKit 使用视觉惯性里程计 (VIO) 以精准地追踪四周的环境。VIO 能结合相机传感器数据与 CoreMotion 数据,这两份数据让设备无需额外的校准,就能以高精度来感测它在房间内的移动。

场景理解和照明估计

使用 ARKit,iPhone 和 iPad 可以分析相机视图呈现的场景,并在房间中找到水平面。 ARKit 可以检测桌子和地板等水平面,并能跟踪及放置物品在较小的特定点上。 ARKit 还能利用相机传感器来估计场景中可用光的总量,并将正确的光亮度应用在虚拟对象上。

高性能硬件和渲染优化

ARKit 可在 Apple A9 和 A10 处理器上运行。 这些处理器提供了具有突破性的性能,可实现快速场景理解,并允许您在现实世界场景上构建出精细迷人的虚拟内容。 您还可以对 Metal,SceneKit 以及 Unity 和 Unreal Engine (虚幻引擎) 等第三方工具中的 ARKit 优化加以利用。

关于AR与ARKit

摘自苹果官网:About Augmented Reality and ARKit
Discover supporting concepts, features, and best practices for building great AR experiences.

任何AR体验的基本要求以及ARKit的定义特征——是创建和跟踪用户居住的现实世界空间与可视化内容建模的虚拟空间之间的对应关系的能力。当你的app显示那些内容(虚拟的)与实时相机图像时,用户能体验到增强的现实:你的虚拟内容是真实世界的一部分的错觉。
在所有AR体验中,ARKit使用世界和相机坐标系,遵循右手定则:y轴向上指向,z轴指向观察者,x轴指向观看者的右侧。
会话配置可以改变坐标系相对于现实世界的起点和方位。AR会话中的每个锚定义了自己的本地坐标系,也遵循右手定则和的z轴指向观察者的约定。例如,ARFaceAnchor定义了一种用于定位面部特征的系统。

世界跟踪的工作原理

为了在真实空间和虚拟空间之间创建一个对应关系,ARKit使用一种称为视觉惯性测距的技术。这个过程将来自iOS设备的运动感应硬件的信息与相机可见的场景的计算机视觉分析相结合。ARKIT识别场景图像中的显着特征,跟踪视频帧中这些特征位置的差异,并将该信息与运动感测数据进行比较,其结果是设备的位置和运动的高精度模型。
世界跟踪还分析和了解场景的内容。使用命中测试方法去寻找真实世界表面与相机图像中的一个点的对应关系。如果在会话配置中启用平面检测,ARKit将检测相机图像中的平面,并报告其位置和大小。你可以使用命中测试结果或在场景中检测平面去放置或与虚拟内容进行交互。

建立高品质的AR体验的注意事项

  1. 设计AR体验可预见的照明条件。
    世界跟踪涉及图像分析,需要清晰的图像。当相机无法看到细节时,例如当相机指向空白墙或场景太暗时,跟踪质量会降低。
  2. 使用跟踪质量信息来提供用户反馈。
    世界跟踪将图像分析与设备运动相关联。如果设备正在移动,即使设备只是微妙移动,ARKit也可以很好地了解场景。过多的动作,太快或者太剧烈地晃动,会导致图像模糊或跟踪视频帧之间的特征距离太大,从而降低跟踪质量。
    ARCamera类提供跟踪状态原因的信息,你可以用它来开发用户界面,告诉用户如何解决低质量跟踪的情况。
  3. 允许平面检测的时间产生明确的结果,并在您获得所需的结果时禁用平面检测。
    平面检测结果随时间而变化,当首次检测到平面时,其位置和范围可能不准确。随着时间的推移,平面仍然在场景中,ARKit会对其位置和程度进行细化。当一个大的平坦表面在场景中时,ARKit可能会在你已经使用平面放置内容之后继续改变平面的位置,范围和变化。

下一节学习ARKit(二)

你可能感兴趣的:(学习ARKit(一))