ARKit之路-ARKit概述之一

  2017年,在WWDC(World Wide Developers Conference,苹果全球开发者大会)上,苹果公司正式推出了增强现实开发套件ARKit。ARKit一推出即在科技圈引发极大关注,一方面是苹果公司在科技界的巨大影响力,另一方面更重要的是ARKit在移动端实现的堪称惊艳的AR效果。ARKit的面世,直接将AR技术带到了亿万用户眼前,更新了人们对AR的印象,苹果公司也因此成为移动AR技术的引领者。

  认真研究分析苹果公司的战略,可以发现,苹果玩AR是认真的,而且其决心绝不仅局限于ARKit本身,而是在下一局很大的棋,就像Jobs做iPhone一样。本系列我们就来一探ARKit的究竟,看看ARKit究竟会如何影响下一代移动市场,当然,我们不算八卦、不占六爻,还是实打实的来,从纯技术角度进行探索。

  本系列与苹果主推方向保持一致,采用Swift + RealityKit + SwiftUI + Xcode 。

(一)什么是ARKit

  神奇如斯,那什么是ARKit?苹果公司官方对ARKit的描述为:通过整合设备摄像头图像信息与设备运动传感器(包括LiDAR)信息,在应用中提供AR体验的开发套件。对开发人员而言,更通俗的理解即ARKit是一种用于开发AR应用的SDK(Software Development Kit,软件开发工具包)。

  从本质上讲,AR是将2D或者3D元素(文字、图片、模型、音视频等)放置于设备摄像头所采集的图像中,营造一种虚拟元素真实存在于现实世界中的假象。ARKit整合了设备运动跟踪、摄像头图像采集、图像视觉处理、场景渲染等技术,提供了简单易用的API(Application Programming Interface,应用程序接口)以方便开发人员开发AR应用,开发人员不需要再关注底层的技术实现细节,从而大大降低了AR应用开发难度。

  ARKit通过移动设备(包括手机与平板电脑)单目摄像头采集的图像信息(包括LiDAR采集的信息),实现了平面检测识别、场景几何、环境光估计、环境光反射、图像识别、3D物体识别、人脸检测、人体动作捕捉等高级功能,在这基础上就能够创建虚实融合的场景。如将一个虚拟的数字机器人放置在桌面上,虚拟机器人将拥有与现实世界真实物体一样的外观、物理效果、光影效果,并能依据现实世界中的照明条件动态的调整自身的光照信息以便更好的融合到环境中,如下图所示。
ARKit之路-ARKit概述之一_第1张图片
  得益于苹果公司强大的软硬件整合能力及其独特的生态,ARKit得以充分挖掘CPU/GPU的潜力,在跟踪精度、误差消除、场景渲染做到了同时期的高好水平,表现在用户体验上就是AR跟踪稳定性好、渲染真实度高、人机交互自然。

   ARKit出现后,数以亿计的iPhone、iPad设备一夜之间拥有了最前沿的AR功能,苹果公司iOS平台也一举成为最大的移动AR平台。苹果公司还与Unity、Unreal合作,进一步扩大AR开发平台,拓宽iOS AR应用的开发途径,奠定了其在移动AR领域的领导者地位。

(二)ARKit功能

   从技术层面上讲,ARKit通过整合AVFoundation、CoreMotion、CoreML三个框架,在这基础上融合扩展而成,如下图所示。其中AVFoundation是处理基于时间的多媒体数据框架,CoreMotion是处理加速度计、陀螺仪、LiDAR等传感数据信息框架,CoreML则是机器学习框架。ARKit融合来自AVFoundation的视频图像信息与来自CoreMotion的设备运动传感数据,再借助于CoreML计算机图像处理与机器学习技术,提供给开发者稳定的三维数字环境。
ARKit之路-ARKit概述之一_第2张图片

   自ARKit 1.0发布以来,ARKit技术日渐完善,功能也日益拓展,到目前,ARKit主要提供如下表所示功能。

功能 描述
特征点检测(Feature Point) 检测并跟踪从摄像头采集图像中的特征点信息,并利用这些特征点构建对现实世界的理解。
平面检测(Plane Detect) 检测并跟踪现实世界中的平整表面,ARKit支持水平平面与垂直平面检测。
图像检测识别跟踪(Image Tracking) 检测识别并跟踪预扫描的2D图像,ARKit最大支持同时检测100张图像。
3D物体检测跟踪(Object Tracking) 检测识别并跟踪预扫描的3D物体。
光照估计(Light Estimation) 利用从摄像头图像采集的光照信息估计环境中的光照,并依此调整虚拟物体的光照效果。
环境光反射(Environment Probes & Environment Reflection) 利用从摄像头图像中采集的信息生成环境光探头(Environment Probe),并利用这些图像信息反射真实环境中的物体,以达到更真实的渲染效果。
世界地图(WorldMap) 支持保存与加载世界空间的空间映射数据,以便在不同设备之间共享体验。
人脸检测跟踪(Face Tracking) 检测跟踪摄像头图像中的人脸,ARKit支持同时跟踪3张人脸。ARKit还支持眼动与舌动跟踪,并支持人脸BlendShape功能,可以驱动虚拟人像模型。
射线检测(Ray Casting & Hit Testing) 从设备屏幕发射射线检测虚拟对象或者平面。
人体动作捕捉(Motion Capture) 检测跟踪摄像头图像中的人形,捕获人形动作,并用人形动作驱动虚拟模型,ARKit支持2D和3D人形捕捉跟踪。
人形遮挡(People Occlusion) 分离摄像头图像中的人形区域,并能估计人形区域深度,以实现与虚拟物体的深度对比,从而实现正确的遮挡关系。
多人协作(Collaborative Session) 多设备间实时通信以共享AR体验。
同时开启前后摄像头(Simultaneous Front and Rear Camera) 允许同时开启设备前后摄像头,并可利用前置摄像头采集到的人脸检测数据驱动后置摄像头图中的模型。
3D音效(3D Audio) 模拟真实空间中的3D声音传播效果。
景深(Scene Depth) 模拟照相机采集图像信息时的景深效果,实现焦点转移。
相机噪声(Camera Noise) 模拟照相机采集图像时出现的不规则噪声。
运动模糊(Motion Blur) 模拟摄像机在拍摄运动物体时出现的模糊拖尾现象。
自定义渲染(Custom Display) 支持对所有ARKit特性的自定义渲染。
场景几何(Scene Geometry) 使用LiDAR实时捕获场景深度信息并转化为场景几何网格。
场景深度(Depth API) 使用LiDAR实时捕获场景深度信息。
地理位置锚点(Geographical Location Anchor) 利用GPS与地图在特定的地理位置上放置虚拟物体。
视频纹理(Video Texture) 采用视频图像作为纹理,可以实现视频播放、动态纹理功能。

   除了上表中我们所能看到的ARKit提供的能力,ARKit还提供了我们看不见但对渲染虚拟物体和营造虚实融合异常重要的尺寸度量系统,ARKit的尺寸度量系统非常的稳定、精准,ARKit尺度空间中的1单位等于真实世界中的1米,因此,我们能在ARKit虚拟空间中营造与真实世界体验一致的物体尺寸,并能正确的依照与现实空间中近大远小视觉特性同样的规律渲染虚拟物体尺寸。

   需要注意的是,ARKit并不包含图形渲染API,即ARKit没有图形渲染能力,它只提供设备的跟踪和真实物体表面检测功能。对虚拟物体的渲染由第三方框架提供,如RealityKit、SceneKit、SpriteKit、Metal等,这提高了灵活性,同时降低了ARKit的复杂度,减小了包体大小。

参考文献

1、arkit documents https://developer.apple.com/augmented-reality/arkit/

你可能感兴趣的:(ARKit之路)