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得以充分挖掘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 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之路-ARKit概述之一相关推荐

  1. ARKit之路-ARKit概述之二

    版权声明:Davidwang原创文章,严禁用于任何商业途径,授权后方可转载.   ARKit需要运行在iOS11以上的iPhone与iPad上.AR应用属于计算密集型应用,对计算硬件要求较高,就算在应 ...

  2. ARKit之路-运动跟踪原理

    版权声明:Davidwang原创文章,严禁用于任何商业途径,授权后方可转载.   在前述文章中,我们对AR技术原理进行过简单学习了解,ARKit运动跟踪所采用的技术与其他移动端AR SDK一样,也是采 ...

  3. ARKit之路-平面检测

    版权声明:Davidwang原创文章,严禁用于任何商业途径,授权后方可转载.   平面检测是很多AR应用的基础,无论是ARKit.ARCore还是Huawei AREngine.SenseAR等SDK ...

  4. ARKit之路-Depth API

    版权声明:Davidwang原创文章,严禁用于任何商业途径,授权后方可转载.   在配备LiDAR传感器的设备上,ARKit不仅可以进行场景几何重建,还向开发者开放了场景深度信息,利用这些深度信息,可 ...

  5. ARKit之路-LiDAR传感器(一)

    版权声明:Davidwang原创文章,严禁用于任何商业途径,授权后方可转载.   第4代iPad Pro和iPhone12高端机型中新增了LiDAR(Light Detection And Rangi ...

  6. ARKit之路-ARSession生命周期管理与跟踪质量

    版权声明:Davidwang原创文章,严禁用于任何商业途径,授权后方可转载.   ARSession整合运动传感器数据与计算机视觉处理数据跟踪用户设备姿态,为得到更好的跟踪质量,ARSession需要 ...

  7. ARKit之路-ARKit原理

    版权声明:Davidwang原创文章,严禁用于任何商业途径,授权后方可转载.   ARKit提供如此出众AR体验的背后是苹果公司强大的软硬件整合能力和做到极致的用户体验,苹果公司的生态拥有其他企业无法 ...

  8. ARKit之路-AR截屏

    版权声明:Davidwang原创文章,严禁用于任何商业途径,授权后方可转载.   截屏是移动手机用户经常使用的一项功能,也是一项特别方便用户保存.分享屏幕信息的方式.移动设备(包括iOS设备和Andr ...

  9. Linux进阶之路————Linux概述

    引言 Linux是一个开源.免费的操作系统.学习Linux知识分为以下几个阶段: 第一阶段:Linux环境下的基本操作命令,包括文件操作命令(rm.mkdir.chmod.chown)编辑工具使用(v ...

最新文章

  1. 基于LBS功能应用的Geohash方案
  2. C#中ref和out的原理
  3. 使用DCIM软件确保数据中心符合DCOI
  4. php,Allowed memory size of 8388608 bytes exhausted (tried to allocate 1298358 bytes)
  5. Kubernetes中部署SpringBoot应用
  6. oracle会计事件,新的一年打开会计期发生错误
  7. MPAA正在对BT下毒手,BT大站被警方关闭
  8. 计算机网络考前,《计算机网络原理》--考前复习资料.doc
  9. Maven构建springBoot Demo案例
  10. 计算机文字录入在线打字,汉字输入方法-在线打字吧-在线拼音五笔打字练习软件,中文录入打字软件...
  11. VGA信号一些分辨率的参数(摘抄)
  12. php导出excel处理微信昵称emoji表情符号和特殊颜文字符
  13. mysql jion on 三表_MySQL 三表连接(join)
  14. Docker Compose搭建TDengine集群
  15. 文字点选验证码的破解方法~
  16. 智能运维之告警聚合技术介绍
  17. 使用计算机求解问题首先要,基于计算机的问题求解,首先要完成的是( )
  18. Echarts地图 绘制自定义区域 - geojson.io使用方法
  19. 《Linux 驱动:输入子系统》
  20. 聊聊那些年的骚操作!!!

热门文章

  1. 关于自己在大学的一些经历
  2. csdn竟然还有这种神器!后悔没有早点知道!超好用的csdn插件,别再犹豫了,赶快入手吧!
  3. 电子信息工程求职目标_实用的信息工程专业求职信四篇
  4. 英语日常口语对话(2)
  5. 2022年湖南省临床执业医师考试第二单元随机模拟题
  6. 快速了解会话管理三剑客cookie、session和JWT
  7. 随笔:信息系统项目管理师(软考高级2023)考试指南
  8. 【华为OD机试真题 C++】数字涂色 【2022 Q4 | 100分】
  9. 永信至诚成功当选CNCERT网络安全应急服务支撑单位
  10. TOJ 1320.Billiard