ARKit(二)

ARSCNView 可以添加 3D 对象进去,它无缝的提供了 ARKit 和 SceneKit 的整合,如果需要用 SpriteKit 的话,可以使用 ARSKView

The SceneKit asset catalog

用来保存和 SceneKit 相关的资源

Configuration

AROrientationTrackingConfiguration 是 3DOF, 支持如下图的旋转跟踪,ARWorldTrackingConfiguration 是 6DOF。

3DOF
image.png
6DOF
image.png

控制 AR session

  • ARSession.pause() 暂停 AR session 的跟踪,当切换到别的应用的时候,可以调用这个来暂停 AR session 的调用
  • ARSession.run() 将暂停的 session 重新启动。
  • ARSession.run(ARSessionConfig) 用来更新相应的配置
  • ARSession.run(_:options:) 用来重新设置运行 session 的配置

处理 session 中断

中断出现的情况,可能是底层操作系统发生的,也可能是用户切换 app 导致的。可以通过下面的方法来控制

    func sessionWasInterrupted(_ session: ARSession) {
        // Inform the user that the session has been interrupted, for example, by presenting an overlay
    }

中断结束的时候,会调用下面的方法,可以在这里重新设置 session 的跟踪

    func sessionInterruptionEnded(_ session: ARSession) {
        // Reset tracking and/or remove existing anchors if consistent tracking is required
        trackingStatus = "Interrupted End"
    }

处理 AR session 的状态改变

当 AR session 在运行的时候,会有一些状态的改变,每当有状态改变的时候,会调用下面的方法

    func session(_ session: ARSession, cameraDidChangeTrackingState camera: ARCamera) {
        switch camera.trackingState {
        case .notAvailable:
            trackingStatus = "不可以用"
        case .normal:
            trackingStatus = "正常"
        case .limited(let reason):
            trackingStatus = "受限"
        }
    }

你可能感兴趣的:(ARKit(二))