ARKit的工作原理及流程介绍

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

ARKit介绍

AR技术简介:

AR 全称 Augmented Reality(增强现实),实时计算摄影机相机位置及角度并且增加图像/视频/3D模型的技术,将虚拟现实与现实世界结合在一起,并且进行互动.

一个最简单地AR场景实现所需要的技术以及步骤包含如下:
1.多媒体捕捉现实图像:如摄像头
2.三维建模:3D立体模型
3.传感器追踪:主要追踪现实世界动态物体的六轴变化,这六轴分别是X、Y、Z轴位移及旋转。其中位移三轴决定物体的方位和大小,旋转三周决定物体显示的区域。
4.坐标识别及转换:3D模型显示在现实图像中不是单纯的frame坐标点,而是一个三维的矩阵坐标。这基本上也是学习AR最难的部分,好在ARKit帮助我们大大简化了这一过程。
4.除此之外,AR还可以与虚拟物体进行一些交互。

ARKit概述及特点介绍

WWDC 2017全球开发者大会上,苹果发布了iOS11系统所新增框架:AR开发ARKit,它能够帮助我们以最简单快捷的方式实现AR技术功能。

  • ARKit框架提供了两种AR技术,一种是基于3D场景(SceneKit)实现的增强现实,一种是基于2D场景(SpriktKit)实现的增强现实

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

  • 要想显示AR效果,必须要依赖于苹果的游戏引擎框架(3D引擎SceneKit,2D引擎SpriktKit),主要原因是游戏引擎才可以加载物体模型。

虽然ARKit框架中视图对象继承于UIView,但是由于目前ARKit框架本身只包含相机追踪,不能直接加载物体模型,所以只能依赖于游戏引擎加载ARKit

  • ARKit虽然是iOS11新出的框架,但并不是所有的iOS11系统都可以使用,而是必须要是处理器A9及以上才能够使用,苹果从iPhone6s开始使用A9处理器,也就是iPhone6及以前的机型无法使用ARKit
开发环境:

1.Xcode版本:Xcode9及以上

2.iOS系统:iOS11及以上

3.iOS设备:处理器A9及以上(6s机型及以上)

4.MacOS系统:10.12.4及以上(安装Xcode9对Mac系统版本有要求)

使用ARKit

3D效果
  • 创建项目时选择Augmented Reality App类型.
  • 在包含技术选型中选择SceneKit
2d效果

2d效果 和3d的显示效果不一样,使用的是Sprite kit,创建项目时,在包含技术选型中选择Sprite Kit.

ARKit工作原理

ARKit与SceneKit的关系

AR技术就是在相机捕捉到的现实世界的图像中显示一个虚拟的3D模型。这一过程可以分为两个步骤:

1:相机捕捉现实世界图像,这由ARKit来实现

2:在图像中显示虚拟3D模型,由SceneKit来实现

ARKit与SceneKit的关系为:

  • ARKit 框架中中显示3D虚拟增强现实的视图ARSCNView继承于SceneKit框架中的SCNView,而SCNView又继承于UIKit框架中的UIView

UIView的作用是将视图显示在iOS设备的window中,SCNView的作用是显示一个3D场景,ARScnView的作用也是显示一个3D场景,只不过这个3D场景是由摄像头捕捉到的现实世界图像构成的

  • ARSCNView只是一个视图容器,它的作用是管理一个ARSession.

  • 在一个完整的虚拟增强现实体验中,ARKit框架只负责将真实世界画面转变为一个3D场景,这一个转变的过程主要分为两个环节:由ARCamera负责捕捉摄像头画面,由ARSession负责搭建3D场景。

  • 在一个完整的虚拟增强现实体验中,将虚拟物体现实在3D场景中是由框架来完成中:每一个虚拟的物体都是一个节点SCNNode,每一个节点构成了一个场景SCNScene,无数个场景构成了3D世界

综上所述,ARKit捕捉3D现实世界使用的是自身的功能,这个功能是在iOS11新增的。而ARKit在3D现实场景中添加虚拟物体使用的是父类SCNView的功能,这个功能早在iOS8时就已经添加(SceneKit是iOS8新增)

可以简单的理解为:ARSCNView所有跟场景和虚拟物体相关的属性及方法都是自己父类SCNView的.

ARSCNView与ARSession

ARKit提供两种虚拟增强现实视图,他们分别是3D效果的ARSCNView和2D效果的ARSKView,无论是使用哪一个视图都是用了相机图像作为背景视图(这里可以参考iOS自定义相机中的预览图层),而这一个相机的图像就是由ARKit框架中的相机类ARCamera来捕捉的。

ARSCNView与ARCamera两者之间并没有直接的关系,它们之间是通过AR会话,也就是ARKit框架中非常重量级的一个类ARSession来搭建沟通桥梁的.

在iOS框架中,凡是带session或者context后缀的,这种类一般自己不干活,作用一般都是两个:

  • 管理其他类,帮助他们搭建沟通桥梁,好处就是解耦.

  • 负责帮助我们管理复杂环境下的内存

context与session不同之处是:一般与硬件打交道,例如摄像头捕捉ARSession,网卡的调用NSURLSession等使用的都是session后缀。没有硬件参与,一般用context,如绘图上下文,自定义转场上下文等.

要想运行一个ARSession会话,必须要指定一个称之为会话追踪配置的对象:ARSessionConfiguration,ARSessionConfiguration的主要目的就是负责追踪相机在3D世界中的位置以及一些特征场景的捕捉(例如平面捕捉),这个类本身比较简单却作用巨大

ARSessionConfiguration是一个父类,为了更好的看到增强现实的效果,苹果官方建议我们使用它的子类ARWorldTrackingSessionConfiguration.

ARWorldTrackingSessionConfiguration与ARFrame

ARSession搭建沟通桥梁的参与者主要有两个ARWorldTrackingSessionConfiguration与ARFrame

  • ARWorldTrackingSessionConfiguration(会话追踪配置)的作用是跟踪设备的方向和位置,以及检测设备摄像头看到的现实世界的表面。它的内部实现了一系列非常庞大的算法计算以及调用了你的iPhone必要的传感器来检测手机的移动及旋转甚至是翻滚.

  • 当ARWorldTrackingSessionConfiguration计算出相机在3D世界中的位置时,它本身并不持有这个位置数据,而是将其计算出的位置数据交给ARSession去管理,而相机的位置数据对应的类就是ARFrame.ARSession类一个属性叫做currentFrame,维护的就是ARFrame这个对象

  • ARCamera只负责捕捉图像,不参与数据的处理。它属于3D场景中的一个环节,每一个3D Scene都会有一个Camera,它决定了我们看物体的视野

ARKit工作完整流程

1.ARSCNView加载场景SCNScene

2.SCNScene启动相机ARCamera开始捕捉场景

3.捕捉场景后ARSCNView开始将场景数据交给Session

4.Session通过管理ARSessionConfiguration实现场景的追踪并且返回一个ARFrame

5.给ARSCNView的scene添加一个子节点(3D物体模型)

ARSessionConfiguration捕捉相机3D位置的意义就在于能够在添加3D物体模型的时候计算出3D物体模型相对于相机的真实的矩阵位置

在3D坐标系统中,有一个世界坐标系和一个本地坐标系。类似于UIView的Frame和Bounds的区别,这种坐标之间的转换可以说是ARKit中最难的部分

流量分析利器arkime的学习之路(四)---https报文解密 利用中间代理解密https,能够解密https为http,并且可以在arkime中查看 阅读详情

相关推荐

【iOS ARKit】人脸检测追踪基础

在 AR 应用运行时,ARKit 会根据检测到的人脸方向、表情实时更新人脸网格,寸变化,我们使用 renderer(_:didUpdate:for:)代理方法对人脸网格进行了实时更新检测到的人脸网格不仅包括几何顶点信息,也包括 UV 坐标信息,因此,我们不1习格,还可以使用静态、动态的纹理贴图进行渲染,

weixin_37543822的博客 3910

AR的工作原理以及在unity中的实现方法

AR的工作原理以及在unity中的实现方法-使用高通的Vuforia v4.0 - unity插件,介绍很详细

ARKit从入门到精通(2)-ARKit工作原理流程介绍

转载请注明出处:http://www.jianshu.com/p/0492c7122d2f 1.1-写在前面的话1.2-ARKit与SceneKit的关系1.3-ARKit工作原理 1.3.1-ARSCNView与ARSession1.3.2-ARWorldTrackingSessionConfiguration与ARFrame 1.4-ARKit工作完整流程 1.1-

坤小的专栏 2万+

arkime:Arkime(以前称为Moloch)是一个开源,大规模,完整的数据包捕获,索引和数据库系统

阿基米 Arkime(以前称为Moloch)是一个大型的,开源的,索引化的数据包捕获和搜索系统。 Arkime增强了您当前的安全基础架构,以标准PCAP格式存储和索引网络流量,从而提供了快速的索引访问。 提供了直观,简单的Web界面,用于PCAP浏览,搜索和导出。 Arkime公开了API,这些API允许直接下载和使用PCAP数据和JSON格式的会话数据。 Arkime以标准PCAP格式存储和导出所有数据包,使您还可以在分析工作流程中使用自己喜欢的PCAP提取工具,例如Wireshark。 Arkime构建为可以跨许多系统部署,并且可以扩展以处理数十吉比特/秒的流量。 PCAP保留时间取决于可用的传感器磁盘空间。 元数据保留基于Elasticsearch集群规模。 两者都可以随时增加,并且完全由您控制。 目录 背景 Arkime的创建是为了替代AOL于2012年的商用全包系统。通过完全控制硬件和成本,我们发现我们可以在所有网络上部署全包捕获,而使用商用工具只需一个网络即可获得相同的成本。 Arkime系统由3个组件组成: 捕获-一个线程化的C应用程序,用于监视网络流量,将PCA

ARkit相机坐标系转换

ARkit默认的坐标系是右手系,但它的z轴是指向拍摄者的,也就是和相机镜头朝向相反,这给我们利用ARkit获取的数据进行后续处理产生了困难,因为像openMVS或openMVG中相机z轴朝向都是和相机拍摄方向相同 ...

batmanShu的博客 2016

ARKit之路-运动跟踪原理

版权声明:Davidwang原创文章,严禁用于任何商业途径,授权后方可转载。   在前述文章中,我们对AR技术原理进行过简单学习了解,ARKit运动跟踪所采用的技术与其他移动端AR SDK一样,也是采用VIO与IMU结合的方式进行SLAM定位跟踪。本节我们将更加深入的学习ARKit运动跟踪原理,通过学习就会很自然的理解ARKit在运动跟踪方面的优劣势,并在开发中尽量避免劣势或者采取更加友好的方式扬长避短。 (一)ARKit坐标系   实现虚实融合最基本的要求是实时跟踪用户(设备)的运动,始终保持虚拟摄像机与

DavidWang 5028

ARKit功能初学

ARKit 是苹果 WWDC2017 中发布的用于开发iOS平台 AR 功能的框架。AR 全称 Augmented Reality(增强现实),是一种在摄像机捕捉到的真实世界中加入计算机程序创造的虚拟世界的技术。捕捉真实世界:ARKit 利用摄像头拍摄现实场景的画面。虚拟世界:用SceneKit来建立虚拟世界。虚拟世界与现实世界相结合:ARKit 负责将现实世界和虚拟世界的信息融合,并渲染出一个 AR 世界。

旭日的博客 930

iOS ARKit入门2 - 工作原理流程介绍

前言勇敢的小伙伴们,大家好,很高兴在初七这年后的第一个工作日能够摆脱假期综合症、调整心态继续ARKit的相关文章,不知道你们的假期怎么样,反正我的就很平淡啦,年纪大了,发现再也找不到志同道合的人了呢,不知道为什么,找不到愿意和我一起出去玩耍的人,想看一部电影身边的人都不愿意去看,想出去旅行身边的人都不想出去旅行,想聚会打牌,身边的人都没有时间,我们在逐渐衰老的过程中到底收获了什么,所谓的青春到底应...

王颜华的博客 822

ARKit从入门到精通-ARKit工作原理流程介绍

2017-06-15 坤小 Cocoa开发者社区 转载请注明出处:http://www.jianshu.com/p/0492c7122d2f 1.1-写在前面的话 1.2-ARKit与SceneKit的关系 1.3-ARKit工作原理 1.3.1-ARSCNView与ARSession 1.3.2-ARWorldTrackingS

cleven 5053

2024年最全ARKit从入门到精通(2)-ARKit工作原理流程介绍,前端面试题大全

我可以将最近整理的前端面试题分享出来,其中包含HTML、CSS、JavaScript、服务端与网络、Vue、浏览器、数据结构与算法等等,还在持续整理更新中,希望大家都能找到心仪的工作。开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

2401_84616533的博客 1084

2024年最新ARKit从入门到精通(2)-ARKit工作原理流程介绍,前端面试送分题

从转行到现在,差不多两年的时间,虽不能和大佬相比,但也是学了很多东西。我个人在学习的过程中,习惯简单做做笔记,方便自己复习的时候能够快速理解,现在将自己的笔记分享出来,和大家共同学习。开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】个人将这段时间所学的知识,分为三个阶段:第一阶段:HTML&CSS&JavaScript基础第二阶段:移动端开发技术第三阶段:前端常用框架推荐学习方式:针对某个知识点,可以先简单过一下我的笔记,如果理解,那是最好,可以帮助快速解决问题;

2401_84447112的博客 908

ARKit 初探

0. 前言 作为一名刚入门的 iOS 开发者,前阵子稍稍研究了一下最新发布的 ARKit,然后结合几个其他开源项目做成了一个 ARGitHubCommits。前天在上海第 8 次 T 沙龙上分享了一个《ARKit 初探》的 topic,现在将它写成文章,以便浏览。 1. ARKit 简介 下面是苹果开发者官网 ARKit 页面的一段介绍: iOS 11 引入了新的 ARKit 框架,让您轻松创建...

weixin_33695082的博客 222
上一篇: 30行代码演示dispatch_once死锁
下一篇: ARKit进阶:物理世界
Philm_iOS
博客等级 码龄8年 74粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值