ARKit框架详细解析(一)—— 基本概览

版本记录

版本号 时间
V1.0 2017.09.27

前言

苹果最近新出的一个API就是ARKit,是在2017年6月6日,苹果发布iOS11系统所新增框架,它能够帮助我们以最简单快捷的方式实现AR技术功能。接下来几篇我们就详细的对ARKit框架进行详细的解析。

AR技术

在讲ARKit之前,我们先了解一下AR技术。增强现实技术(Augmented Reality,简称 AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。

一个最简单地AR场景实现所需要的技术以及步骤包含如下:

  • 多媒体捕捉现实图像:如摄像头。
  • 三维建模:3D立体模型。
  • 传感器追踪:主要追踪现实世界动态物体的六轴变化,这六轴分别是X、Y、Z轴位移及旋转。其中位移三轴决定物体的方位和大小,旋转三周决定物体显示的区域。
  • 坐标识别及转换:3D模型显示在现实图像中不是单纯的frame坐标点,而是一个三维的矩阵坐标。这基本上也是学习AR最难的部分,好在ARKit帮助我们大大简化了这一过程。

除此之外,AR还可以与虚拟物体进行一些交互。


ARKit基本

ARKit是2017年6月6日,ios11测试版本发布时新增加的框架,可以帮助我们以最简单的方式实现AR技术功能。ARKit提供了两种AR技术:

  • 基于3D场景(sceneKit)实现的增强现实。
  • 基于2D场景(SpritKit)实现的增强现实。

一般主流都是基于3D实现AR技术,ARKit不仅支持3D游戏引擎sceneKit,还支持2D游戏引擎SpritKit。

需要注意的是:

  • 虽然ARKit框架中视图对象继承于UIView,但是由于目前ARKit框架本身只包含相机追踪,不能直接加载物体模型,所以只能依赖于游戏引擎加载ARKit。
  • ARKit是ios11推出的框架,但并不是所有的ios11系统都可以使用,因此必须是A9及以上才能够使用,iphone6s开始使用A9处理器,也就是说iphone6及其以上的机型就不能使用这个框架了。
  • 开发环境需求:
    • Xcode版本:Xcode9及以上
    • iOS系统:iOS11及以上
    • iOS设备:处理器A9及以上(6S机型及以上)
    • MacOS系统:10.12.4及以上(安装Xcode9对Mac系统版本有要求)

ARKit框架

集成iOS设备摄像头和运动功能,在您的应用程序或游戏中产生增强的现实体验。

增强现实(AR)描述了将设备的相机中的2D或3D元素添加到实时视图的用户体验,使得这些元素似乎居住在现实世界中。 ARKit结合了设备运动跟踪,相机场景拍摄,高级场景处理和显示便利,简化了AR体验的任务。

重要说明:ARKit需要具有A9或更高版本处理器的iOS设备。要使应用程序仅在支持ARKit的设备上可用,请在应用程序的Info.plistUIRequiredDeviceCapabilities部分中使用arkit键。 如果增强现实是应用程序的辅助功能,请使用isSupported属性来确定当前设备是否支持您要使用的会话配置。

下面我们先看一下ARKit框架的结构和组成。

ARKit框架详细解析(一)—— 基本概览_第1张图片

下面按照功能模块对框架进行详细分解和说明

1. First Steps

  • About Augmented Reality and ARKit

    • 发现支持构建伟大的AR体验的概念,功能和最佳实践。
  • ARSession

    • 管理设备相机和增强现实体验所需的运动处理的共享对象。
  • ARConfiguration

    • AR会话配置的抽象基类。

2. World-Based AR Experiences

  • Building Your First AR Experience

    • 创建运行AR会话的应用程序,并使用平面检测来使用SceneKit放置3D内容。
  • Handling 3D Interaction and UI Controls in Augmented Reality

    • 遵循AR体验中的视觉反馈,手势交互和逼真渲染的最佳做法。
  • ARWorldTrackingConfiguration

    • 使用后置摄像头,跟踪设备的方向和位置以及检测真实平面的配置。
  • AROrientationTrackingConfiguration

    • 使用后置摄像头并仅跟踪设备方向的配置。
  • ARPlaneAnchor

    • 关于世界跟踪AR会话中检测到的真实平面的位置和方向的信息。

3. Face-Based AR Experiences

  • Creating Face-Based AR Experiences
    • 放置和动画3D用户脸部的内容,并匹配面部表情(在具有兼容的前置摄像头的设备上)。
  • ARFaceTrackingConfiguration
    • 跟踪设备前置摄像头所看到的用户脸部的移动和表情的配置。
  • ARFaceAnchor
    • 关于脸部跟踪AR会话中检测到的脸部的姿势,拓扑和表情的信息。

4. Standard Views

  • ARSCNView

    • 用于显示使用3D SceneKit内容增强相机视图的AR体验的视图。
  • ARSKView

    • 用于显示使用2D SpriteKit内容增强相机视图的AR体验的视图。

5. Custom Views

  • Displaying an AR Experience with Metal
    • 通过渲染相机图像和使用位置跟踪信息来显示叠加内容来构建自定义AR视图。

6. Real-World Objects and Positions

  • ARHitTestResult

    • 通过检查AR会话的设备摄像机视图中的一个点找到有关现实世界表面的信息。
  • ARAnchor

    • 可用于将对象放置在AR场景中的现实世界的位置和方向。
  • ARTrackable

    • ARKit跟踪改变位置和方向的场景中的真实世界对象。

7. Camera and Scene Details

  • ARFrame

    • 作为AR会话的一部分捕获的视频图像和位置跟踪信息。
  • ARCamera

    • 关于AR会话中捕获的视频帧的摄像机位置和成像特性的信息。
  • ARLightEstimate

    • 与AR会话中捕获的视频帧相关联的估计场景照明信息。
  • ARDirectionalLightEstimate

    • 在面部跟踪AR会话中与捕获的视频帧相关联的估计环境照明信息。

8. Reference

  • ARKit Data Types

后记

未完,待续~~~

ARKit框架详细解析(一)—— 基本概览_第2张图片

你可能感兴趣的:(ARKit框架详细解析(一)—— 基本概览)