AR相关 - ARKit的理解
要想很好的开发AR项目,首先还是要对ARKit有个基本的了解,那我们现在就来看看一些常用类的含义
现实 - ARKit
1.ARSession
负责采集现实世界的信息 - 世界追踪
这是一个管理增强现实所需要的 设备摄像头和动作处理 的共享的对象。
-
ARSession对象会协调 增强现实过程中的大部分处理:
- 从设备的动作感应硬件读取数据
- 控制设备内置摄像头
- 对捕捉到的摄像图像进行分析
ARSession会整合这些结果,并在设备反馈的现实空间和模型化AR内容的虚拟空间之间建议一种对应关系
注意:session是一个管理类,捕捉真实世界、世界追踪、渲染都是由session完成的。
任何一个用ARKit实现的AR场景都需要一个单独的ARSession对象
- 如果是使用了'ARSCNView'或者'ARSKView'对象来创建AR场景的话,一个ARSession实例是已经包含在这个view之中了。
- 如果是通过别的渲染器来建立AR内容的话,就需要手动创建并维持一个ARSession对象。
2.ARConfiguration
ARConfiguration类决定了ARKit如何追踪一个设备的位置以及相对于现实世界的运动,是决定创建的AR体验的关键。
-
ARConfiguration子类:
-
AROrientationTrackingConfiguration
- 使用后置摄像头并仅追踪设备方向来提供基本的AR体验。
- 从三个自由度上来追踪设备的运动方向 - 3个旋转
-
ARWorldTrackingConfiguration - (平时相对用的最多)
- 使用后置摄像头精确追踪设备的位置和方向并允许平面检测和碰撞测试来提供高品质的AR体验。
- 从六个自由度上来追踪设备的运动方向 - 3个平移 & 3个旋转
-
ARFaceTrackingConfiguration
- 使用前置摄像头并追踪用户面部的移动和表情来提供AR体验。(目前只有iphone X可用)
-
AROrientationTrackingConfiguration
- 所有的AR Configuration都是用来建立现实世界和虚拟3D坐标空间的对应关系的。当app将这些虚拟内容和实时捕捉到的摄像机画面一起展示给用户,用户会产生一种这些虚拟内容和现实世界的一部分的错觉。
3.ARFrame
ARSession采集到的现实世界的信息以ARFrame的形式返回
ARFrame中包含了渲染虚拟世界所有要的所有信息
ARFrame包含了两部分:ARAnchor 和 ARFrame
4.ARCamera
捕捉现实世界,并把信息交由ARSession处理。
AR seaaion中一个被捕获的视图帧相关的相机位置和视图特征的信息
ARCamera捕获的数据是一个一个的ARFrame构成。
指的是当前摄像机的位置和旋转信息。
这一部分 ARKit 已经为我们配置好,不用特别配置。
5.ARAnchor
指的是现实世界中的锚点
一个真实世界的位置和方向,可以用于在AR场景中放置物体。
可以把 ARAnchor(锚点)理解为真实世界中的某个点或平面,anchor 中包含位置信息和旋转信息。拿到 anchor 后,可以在该 anchor 处放置一些虚拟物体。
与SCNNode可以绑定
子类:ARPlaneAnchor
- 专门指的是一个代表水平面的锚点。
虚拟 - SceneKit
ARSCNView 是继承自 SCNView 的
展示关于3D物体的属性、方法的都是SCNView(比如:SCNScene、SCNNode)
scene是负责虚拟化的类
1.SCNScene
ARSCNView - 3D
是一个用来展示增强相机视图和3D SceneKit内容的AR体验的界面。将虚拟的3D内容和设备相机反应的真实世界结合起来。
-
主要功能:
- 将设备相机捕捉到的真实世界的影像作为场景的背景
- 将真实世界的坐标系统直接映射成AR虚拟世界的坐标系统
- 自动移动SceneKit相机来配合真实世界中设备的移动
ARSKView - 2D
- 这个是使用2D SpriteKit制作的。
2.SCNNode
指的是虚拟世界中的节点
根据真实世界的锚点映射成对应的虚拟世界的节点
每个虚拟化的物体都有一个节点,所有的节点都有一个公共的父节点(rootNide)。
渲染 - ARSCNView
- 主要负责综合 由SceneKit构建的虚拟世界的信息 和 ARSession类采集到的现实世界的信息,然后将它们综合渲染呈现出一个AR世界
总结:
ARSCNView结合 SCNScene中的虚拟世界的信息 和 ARSession捕捉到的现实世界的信息,渲染出AR世界。
ARConfiguration指导ARSession如何追踪世界,追踪的结果以ARFrame返回。
ARFrame中的ARAnchor信息为SceneKit中的SCNNode提供的一些放置的点,以便将虚拟节点和现实锚点绑定。
参考文章:
- 官方文档:https://developer.apple.com/documentation/arkit
- https://blog.csdn.net/hdg34jk/article/details/79299496
- https://www.jianshu.com/p/176e355555fe
- https://www.jianshu.com/p/7faa4a3af589
- https://www.jianshu.com/p/5aea431e8d6f
- https://www.jianshu.com/u/d56910566910
有什么写的不对或者不好的地方欢迎指教,我会及时改正的,谢谢大家!