ARSCNView
可以添加 3D 对象进去,它无缝的提供了 ARKit 和 SceneKit 的整合,如果需要用 SpriteKit 的话,可以使用 ARSKView
The SceneKit asset catalog
用来保存和 SceneKit 相关的资源
Configuration
AROrientationTrackingConfiguration 是 3DOF, 支持如下图的旋转跟踪,ARWorldTrackingConfiguration 是 6DOF。
3DOF
6DOF
控制 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 = "受限"
}
}