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 = "受限"
        }
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容