ARKit 命名空间

ARKit 命名空间支持增强现实会话,包括用于将计算机生成的图像投影到视频流的高级别和低级别 API。

ARAnchor

位于现实世界中可附加增强现实对象的位置、方向和比例。

ARBlendShapeLocationOptions

一个 , DictionaryContainer 它定义 T:ARKit.ARBlendShapeLocation 中可用的功能。

ARCamera

有关捕获增强现实帧的相机位置和方向的信息。

ARConfiguration

增强现实会话的配置信息。

ARDirectionalLightEstimate

估计实际照明落在人脸上。

AREnvironmentProbeAnchor

基于环境的照明的来源。

ARErrorCodeExtensions

ARKit.ARErrorCode 枚举的扩展方法。

ARFaceAnchor

一个 ARAnchor ,用于在 AR 会话的世界坐标中定位检测到的人脸。

ARFaceGeometry

表示已识别的人脸(包括形状和表达式)的网格。

ARFaceTrackingConfiguration

用于 ARConfiguration 识别和跟踪人脸的 。

ARFrame

增强现实会话中的帧。

ARHitTestResult

方法 HitTest(CGPoint, ARHitTestResultType) 生成的结果。

ARImageAnchor

一个 ARAnchor ,用于跟踪在现实世界中检测到的图像。

ARImageTrackingConfiguration

ARConfiguration 使用已识别图像作为世界跟踪基础的子类。

ARLightEstimate

真实照明环境的估计值。

ARObjectAnchor

ARAnchor 跟踪已识别的实际 3D 对象的子类。

ARObjectScanningConfiguration

开发期间用于创建ARReferenceObject数据的资源密集型ARConfiguration

AROrientationTrackingConfiguration

一个 ARConfiguration ,它仅跟踪设备方向并使用设备的后置摄像头。

ARPlaneAnchor

用于表示实际平面的 的子类 ARAnchor

ARPlaneGeometry

表示在现实世界中检测到的平面的几何图形。

ARPointCloud

一组三维点,指示图像处理对物理表面固定实际点的信念。

ARReferenceImage

一个图像资源,其中包含在现实世界中要识别的预处理图像。

ARReferenceObject

在现实世界中要检测的 3D 对象的数字表示形式。

ARSCNDebugOptions

与 的 属性一起使用 DebugOptionsARSCNView可视化选项。

ARSCNFaceGeometry

表示人脸的 SceneKit 几何图形。

ARSCNPlaneGeometry

ARKit 命名空间支持增强现实会话,包括用于将计算机生成的图像投影到视频流的高级别和低级别 API。

ARSCNView

支持增强现实内容的 子类 SCNView

ARSCNView.ARSCNViewAppearance

类型为 的 ARSCNView对象的外观类。

ARSCNViewDelegate

对象的 ARSCNView 委托对象。

ARSCNViewDelegate_Extensions

接口的 IARSCNViewDelegate 扩展方法,以支持协议中的所有方法 ARSCNViewDelegate

ARSession

管理创建混合现实体验所需的相机捕获、运动处理和图像分析。

ARSessionDelegate

委托 ARSession 对象的 对象,使开发人员能够响应与增强现实会话相关的事件。

ARSessionDelegate_Extensions

接口的 IARSessionDelegate 扩展方法,以支持协议中的所有方法 ARSessionDelegate

ARSessionObserver_Extensions

接口的 IARSessionObserver 可选方法。

ARSKView

SKView 子类,将 Sprite Kit 对象置于增强现实会话中。

ARSKView.ARSKViewAppearance

类型为 的 ARSKView对象的外观类。

ARSKViewDelegate

委托对象,使开发人员能够响应与 相关的 ARSKView事件。

ARSKViewDelegate_Extensions

接口的 IARSKViewDelegate 扩展方法,以支持协议中的所有方法 ARSKViewDelegate

ARVideoFormat

有关 AR 模拟中使用的视频源的摘要信息。

ARWorldMap

真实空间数据点和混合现实定位点的可序列化和可共享组合。

ARWorldTrackingConfiguration

用于跟踪设备位置和方向并选择性检测水平表面的会话的配置。

接口

IARAnchorCopying

ARKit 命名空间支持增强现实会话,包括用于将计算机生成的图像投影到视频流的高级别和低级别 API。

IARSCNViewDelegate

表示所需方法的接口 ((如果协议 ARSCNViewDelegate有任何) )。

IARSessionDelegate

表示所需方法的接口 ((如果协议 ARSessionDelegate有任何) )。

IARSessionObserver

接口定义对 中的 ARSession事件做出响应的方法。

IARSKViewDelegate

表示所需方法的接口 ((如果协议 ARSKViewDelegate有任何) )。

IARTrackable

ARKit 可以跟踪的实际对象的接口。

枚举

AREnvironmentTexturing

枚举与 T:ARKit.ARWorldTrackingProbeAnchor 对象一起使用的环境纹理策略。

ARErrorCode

枚举失败的原因 ARSession

ARHitTestResultType

枚举 方法检测到 HitTest(CGPoint, ARHitTestResultType) 的对象类型。

ARPlaneAnchorAlignment

(的方向 ARPlaneAnchor 目前仅限于水平) 。

ARPlaneClassification

ARKit 命名空间支持增强现实会话,包括用于将计算机生成的图像投影到视频流的高级别和低级别 API。

ARPlaneClassificationStatus

ARKit 命名空间支持增强现实会话,包括用于将计算机生成的图像投影到视频流的高级别和低级别 API。

ARPlaneDetection

枚举当前 (检测到的平面的有效方向,仅枚举水平) 。

ARSessionRunOptions

枚举对 Run(ARConfiguration, ARSessionRunOptions)的调用中的选项。

ARTrackingState

枚举增强现实 ARSession中真实世界跟踪的质量。

ARTrackingStateReason

枚举 的原因 Limited

ARWorldAlignment

枚举有关如何创建世界坐标系的选项。

ARWorldMappingStatus

枚举世界映射会话的状态。

注解

ARKit 已添加到 iOS 11 中,并提供混合现实会话,该会话将相机输入与计算机生成的图像(看起来“附加”到现实世界)相结合。

ARKit 仅适用于运行 A9 和更强大的处理器的设备:实质上是 iPhone 6S 及更高版本、iPad Pro 和 iPad 不早于 2017 年发布的 iPad。

ARKit 应用不在模拟器中运行。

开发人员有三种用于呈现 AR 场景的选项:

用例
ARSCNView 将 SceneKit 3D 几何图形与视频相结合

T:ARKit.ARSCKView

将 SpriteKit 2D 图像与视频相结合
从其 IARSCNViewDelegate导出“renderer:updateAtTime:”。允许完整的自定义呈现。

ARKit 坐标系和转换

ARKit 使用设备运动和“视觉测度”创建设备相机模型,以及相对于虚拟坐标系的实际“特征点”模型。 坐标系使用米作为其单位。 虚拟坐标系的原点计算为启动时 ARSession 相机的位置。 ARKit 中的位置和方向主要使用 NMatrix4 “本机矩阵”表示。 对于 ARKit,这些是列主转换:

位置或转换位于 、 M24M34M14。 定义为 M11M33 的 3x3 矩阵是旋转矩阵。

SCNVector3 Position(NMatrix4 m) => new SCNVector3(m.M14, m.M24, m.M34);          

初始化

对象 ARSession 管理整个增强现实过程。 方法 Run 采用 ARConfigurationARSessionRunOptions 对象,如下所示:

ARSCNView SceneView = ... // initialized in Storyboard, `ViewDidLoad`, etc.

// Create a session configuration
var configuration = new ARWorldTrackingConfiguration {
	PlaneDetection = ARPlaneDetection.Horizontal,
	LightEstimationEnabled = true
};

// Run the view's session
SceneView.Session.Run(configuration, ARSessionRunOptions.ResetTracking);

ARSession运行后,它的 CurrentFrame 属性将保留活动 ARFrame。 由于系统尝试以每秒 60 帧的速度运行 ARKit,因此引用 CurrentFrame 的开发人员在丢失该帧后必须确保 Dispose 该帧。

系统跟踪相机视图中的高对比度“特征点”。 开发人员可以使用它们作为 ARPointCloud 对象,可在 中 RawFeaturePoints读取。 但是,通常,开发人员依赖于系统来识别更高级别的特征,例如飞机或人脸。 当系统标识这些更高级别的特征时,它将添加ARAnchorP:ARKit.ARAnchor.Position 属性位于世界坐标系统中的对象。 开发人员可以使用 DidAddNodeDidUpdateNodeDidRemoveNode 方法来响应此类事件,并将其自定义几何图形附加到实际特征。

增强现实坐标使用视觉测光和设备的运动管理器进行维护。 从实验上看,在连续会话中,跟踪在至少几十米的距离上显得非常牢固。

另请参阅