ARKit 命名空间
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
ARKit 命名空间支持增强现实会话,包括用于将计算机生成的图像投影到视频流的高级别和低级别 API。
类
接口
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 几何图形与视频相结合 |
将 SpriteKit 2D 图像与视频相结合 | |
从其 IARSCNViewDelegate导出“renderer:updateAtTime:”。 | 允许完整的自定义呈现。 |
ARKit 坐标系和转换
ARKit 使用设备运动和“视觉测度”创建设备相机模型,以及相对于虚拟坐标系的实际“特征点”模型。 坐标系使用米作为其单位。 虚拟坐标系的原点计算为启动时 ARSession 相机的位置。 ARKit 中的位置和方向主要使用 NMatrix4 “本机矩阵”表示。 对于 ARKit,这些是列主转换:
位置或转换位于 、 M24和 M34中M14。 定义为 M11M33 的 3x3 矩阵是旋转矩阵。
SCNVector3 Position(NMatrix4 m) => new SCNVector3(m.M14, m.M24, m.M34);
初始化
对象 ARSession 管理整个增强现实过程。 方法 Run 采用 ARConfiguration 和 ARSessionRunOptions 对象,如下所示:
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 属性位于世界坐标系统中的对象。 开发人员可以使用 DidAddNode、 DidUpdateNode和 DidRemoveNode 方法来响应此类事件,并将其自定义几何图形附加到实际特征。
增强现实坐标使用视觉测光和设备的运动管理器进行维护。 从实验上看,在连续会话中,跟踪在至少几十米的距离上显得非常牢固。