ARWorldTrackingConfiguration

监控iOS设备的位置和方向的配置,用来增强用户前方的环境

声明

class ARWorldTrackingConfiguration : ARConfiguration

概述

所有的AR配置项都是为了建立一个设备所处的真实世界和一个可以对虚拟内容建模的3D坐标空间的一致性。当你的app将虚拟内容混合与一个实时的摄像头图像中时,用户将会体验到你的虚拟内容是真实世界的一部分这样的一种幻觉。

创建和维护这样一种空间之间的一致性需要追踪设备的运动。ARWorldTrackingConfiguration类通过6个自由角度(6DOF)来追踪设备运动: 具体来说就是,三个转动轴(滚动,缩放和摇摆)和三个坐标轴(x, y 和 z轴的移动)。

这类的追踪可以创建混合的AR体验: 一个虚拟物体可以出现并停留在与真实世界相关的同样的位置,即使用户倾斜设备来从上方或下方观察物体,或者围绕着物体转动设备来观察物体的旁边和背后。

图1 6DOF追踪使得无论设备旋转还是移动都可以维持AR成像

世界追踪会话同样为你的app提供了一些列方法来识别或者与摄像头可见的真实世界场景中的元素互动:

  • 通过planeDetection 方法来找到真实世界水平或者垂直的平面,并将他们作为ARPlaneAnchor 对象的形式添加到会话中。
  • 通过detectionImages 方法来识别和追踪已知的2D图像的运动,并将他们作为ARImageAnchor 对象添加到场景中。
  • 通过detectionObjects 方法来识别已知的3D物体,并将他们作为ARObjectAnchor 对象添加到场景中。
  • ARFrame, ARSCNView, 或者 ARSKView 对象上通过碰撞测试方法来找到真实世界特征的3D位置在摄像头视野中对应的2D点。

主题

创建一个配置项

init() 初始化一个新的世界追踪配置项

var initialWorldMap: ARWorldMap? 想要通过这个会话的配置恢复之前的AR会话的状态

启用平面检测

var planeDetection: ARWorldTrackingConfiguration.PlaneDetection 这个值确定了会话是否和怎样在摄像头捕获图像中自动尝试检测平面

struct ARWorldTrackingConfiguration.PlaneDetection 会话是否和怎样在摄像头捕获图像中自动尝试检测平面的可选项

启用图像检测和追踪

var detectionImages: Set<ARReferenceImage>! ARKit尝试在用户环境中检测的一些列图像

var maximumNumberOfTrackedImages: Int 追踪移动的同时最大检测图像的数量

var automaticImageScaleEstimationEnabled: Bool 一个用来告知ARKit为你评估和设置检测或者追踪图像的规模的标志位

启用3D物体检测

var detectionObjects: Set<ARReferenceObject> 一系列ARKit尝试在用户环境中检测的3D物体

启用人脸追踪

var userFaceTrackingEnabled: Bool 一个用来确定ARKit是否在世界追踪会话汇总追踪用户的人脸

class var supportsUserFaceTracking: Bool 一个告知当前iOS设备是否在世界追踪会话中支持追踪用户的人脸的布尔值

创建真实映射

var environmentTexturing: ARWorldTrackingConfiguration.EnvironmentTexturing ARKit用来生成环境纹理的行为

enum ARWorldTrackingConfiguration.EnvironmentTexturing 在世界追踪的AR会话中生成环境纹理的可选项

class AREnvironmentProbeAnchor 为世界追踪AR会话空间中一个特定区域提供环境光照信息的对象

var wantsHDREnvironmentTextures: Bool 一个告知ARKit是否以HDR格式创建环境纹理

管理设备摄像头行为

var isAutoFocusEnabled: Bool 决定设备摄像头是使用固定焦还是自动对焦行为的布尔值

启用协同

var isCollaborationEnabled: Bool 告知你是否在一个点对点多用户AR体验中的标志位