管理与每个AR体验相关的主要任务的对象,如运动跟踪、相机直通和图像分析。
ARSession对象协调ARKit代表您执行的主要进程,以创建增强现实体验。这些过程包括从设备的运动传感硬件读取数据,控制设备的内置相机,以及对捕获的相机图像进行图像分析。会话综合所有这些结果,以在设备居住的现实世界空间与您建模AR内容的虚拟空间之间建立对应关系。
创建会话
每个AR体验都需要一个“ARSession”。如果您实现自定义渲染器,则自己实例化会话。
let session = ARSession()
session.delegate = self
如果您使用标准渲染器之一 (like ARView, ARSCNView, or ARSKView), 渲染器为您创建一个会话对象。当您想与应用程序的会话交互时,您可以在应用程序的渲染器上访问它。
let session = myView.session
Run a Session
运行会话需要配置。子类 ARConfiguration 确定ARKit如何跟踪设备相对于现实世界的位置和运动,从而决定您创建的AR体验类型。例如, ARWorldTrackingConfiguration使您能够通过设备的后置摄像头增强用户对周围世界的视图。
配置和运行会话
func run(ARConfiguration, options: ARSession.RunOptions)
使用指定的配置和选项开始会话的AR处理。
正在运行会话的唯一标识符。
更改AR会话配置时转换其当前状态的选项。
var configuration: ARConfiguration?
为会话定义运动和场景跟踪行为的对象。
暂停会话中的处理。
响应事件
var delegate: ARSessionDelegate?
您提供的对象,用于接收捕获的视频图像和跟踪信息,或响应会话状态的变化。
var delegateQueue: DispatchQueue?
会话调用委托方法的调度队列。
您可以实现从AR会话接收捕获的视频帧图像和跟踪状态的方法。
您可以实现的方法来响应AR会话状态的变化。
管理锚
添加要由会话跟踪的指定锚。
从会话跟踪中删除指定的锚。
保存或共享状态
func getCurrentWorldMap(completionHandler: (ARWorldMap?, Error?) -> Void)
返回封装世界跟踪会话的空间映射状态和锚集的对象。
Recording and Replaying AR Session Data
在Reality Composer中录制AR会话,并在ARKit应用程序中重播。
扫描3D对象
从会话世界空间的指定区域创建一个参考对象(用于3D对象检测)。
更新世界起源
func setWorldOrigin(relativeTransform: simd_float4x4)
使用指定的变换更改AR世界坐标空间的基础。
寻找现实世界的表面
从屏幕上的某个点投射光线,以找到与现实世界表面的交叉点。
func raycast(ARRaycastQuery) -> [ARRaycastResult]
检查一次光线和现实世界表面之间的交叉点。
func trackedRaycast(ARRaycastQuery, updateHandler: ([ARRaycastResult]) -> Void) -> ARTrackedRaycast?
随着时间的推移,重复光线投射查询,以通知您物理环境中更新的表面。
将本地坐标转换为地理坐标
将框架局部坐标系统中的位置转换为纬度、经度和高度。
访问相机帧
活动相机提要捕获的最新静态帧,包括ARKit对其的解释。
作为会话的一部分捕获的视频图像,其中包含位置跟踪信息。
管理协作
func update(with: ARSession.CollaborationData)
使用其他用户收集的物理环境信息更新您的会话。
class ARSession.CollaborationData
一个包含用户收集的关于物理环境的信息的对象。
Providing a Session
提供会话的对象。
Setup
Choosing Which Camera Feed to Augment
通过前置或后置摄像头在增强现实体验中为用户环境添加视觉效果。
Managing Session Life Cycle and Tracking Quality
让用户随时了解当前的会话状态,并从中断中恢复。
Displaying an AR Experience with Metal
在相机提要上控制应用程序虚拟内容的渲染。
配置增强现实会话以检测和跟踪特定类型的内容。