ARConfiguration
AR会话配置的抽象基类
概述
ARConfiguration是一个抽象基类:不创建或此类的实例。
要运行AR会话,请创建具体的ARConfiguration子类的实例,该子类提供要在应用程序或游戏中使用的增强现实体验。然而,设置配置对象的属性,并将属性传递给会话的run(_:options:)方法。ARKit包括以下具体配置类:
-
ARWorldTrackingConfiguration
使用后置摄像头精确追踪设备的位置和方向并允许平面检测和碰撞测试来提供高品质的AR体验。
-
AROrientationTrackingConfiguration
使用后置摄像头并仅追踪设备方向来提供基本的AR体验。
-
ARFaceTrackingConfiguration
使用前置摄像头并追踪用户面部的移动和表情来提供AR体验。
API
- class var isSupported: Bool
指示当前设备是否支持此会话配置的布尔值。
声明
class var isSupported: Bool { get }
讨论
不同类型的AR体验(使用具体的ARConfiguration子类配置)具有不同的硬件要求。
尝试创建AR配置之前,请检查用户设备是否支持你计划使用的配置,方法是检查响应配置类的isSupported属性。如果此属性为false,则当前设备不支持请求的配置。
重要
所有AR配置都要求具有A9或更高版本处理器的iOS设备。如果你的应用程序另外支持其他设备,并提供增强现实作为次要功能,请使用此属性来确定是否向用户提供基于AR的功能。
如果你的应用程序需要ARKit的核心功能,请在Info.plist文件中添加UIRequiredDeviceCapabilities - arkit的键值对使应用程序仅在支持ARKit的设备上可用。
- var isLightEstimationEnabled: Bool
指定ARKit是否分析捕获的摄像机图像中的场景照明的布尔值。
声明
var isLightEstimationEnabled: Bool { get set }
讨论
当此值为默认值true时,正在运行的AR会话将在其捕获的每个ARFrame对象的lightEstimate属性中提供场景照明信息。
如果你为AR场景渲染自己的叠加图形,则可以使用阴影算法中的此信息来帮助使这些图形与相机拍摄场景的真实照明条件相匹配。(ARSCNView类自动使用此信息配置SceneKit照明。)
- var worldAlignment: ARConfiguration.WorldAlignment
指定会话如何将真实世界的设备运动映射到3D场景坐标系中的值。
声明
var worldAlignment: ARConfiguration.WorldAlignment { get set }
讨论
创建AR体验取决于是否能够创建一个用于将物体放置在映射到设备的真实世界位置和运动的虚拟3D世界中的坐标系。运行会话配置时,ARkit将根据设备的位置和方向创建场景坐标系;你创建的任何ARAnchor对象或AR会话检测到的对象都相对于该坐标系定位。
有关其可能值,请参阅ARConfiguration.WorldAlignment。
* enum **ARConfiguration.WorldAlignment**
ARKit如何构建基于真实世界设备运动的场景坐标系的选项。
声明
enum WorldAlignment : Int
case gravity
坐标系的y轴与重力平行,其原点是设备的初始位置。
case gravityAndHeading
坐标系的y轴与重力平行,x轴与z轴定向为罗盘方向,其原点是设备的初始位置。
case camera
场景坐标系被锁定以匹配摄像头的方向。
- var providesAudioData: Bool
指定在AR会话期间是否捕获音频的布尔值。
声明
var providesAudioData: Bool { get set }
讨论
要接收和处理捕获的音频数据,会话代理对象必须实现session(_:didOutputAudioSampleBuffer:)方法。