ARSCNView
可以添加 3D 對象進去蹄衷,它無縫的提供了 ARKit 和 SceneKit 的整合,如果需要用 SpriteKit 的話,可以使用 ARSKView
The SceneKit asset catalog
用來保存和 SceneKit 相關(guān)的資源
Configuration
AROrientationTrackingConfiguration 是 3DOF, 支持如下圖的旋轉(zhuǎn)跟蹤毡证,ARWorldTrackingConfiguration 是 6DOF。
3DOF
6DOF
控制 AR session
- ARSession.pause() 暫停 AR session 的跟蹤蔫仙,當切換到別的應用的時候料睛,可以調(diào)用這個來暫停 AR session 的調(diào)用
- ARSession.run() 將暫停的 session 重新啟動。
- ARSession.run(ARSessionConfig) 用來更新相應的配置
- ARSession.run(_:options:) 用來重新設(shè)置運行 session 的配置
處理 session 中斷
中斷出現(xiàn)的情況摇邦,可能是底層操作系統(tǒng)發(fā)生的恤煞,也可能是用戶切換 app 導致的∈┘可以通過下面的方法來控制
func sessionWasInterrupted(_ session: ARSession) {
// Inform the user that the session has been interrupted, for example, by presenting an overlay
}
中斷結(jié)束的時候居扒,會調(diào)用下面的方法,可以在這里重新設(shè)置 session 的跟蹤
func sessionInterruptionEnded(_ session: ARSession) {
// Reset tracking and/or remove existing anchors if consistent tracking is required
trackingStatus = "Interrupted End"
}
處理 AR session 的狀態(tài)改變
當 AR session 在運行的時候,會有一些狀態(tài)的改變法梯,每當有狀態(tài)改變的時候苔货,會調(diào)用下面的方法
func session(_ session: ARSession, cameraDidChangeTrackingState camera: ARCamera) {
switch camera.trackingState {
case .notAvailable:
trackingStatus = "不可以用"
case .normal:
trackingStatus = "正常"
case .limited(let reason):
trackingStatus = "受限"
}
}