ARSession
作用:管理增强现实体验所需的设备摄像头和运动处理的共享对象
ARSession主要做了以下几件事:
- 从设备的运动传感硬件中读取数据
- 控制设备的内置摄像头
- 对捕获的摄像头图像执行图像分析
使用ARKit,需要创建一个单例的ARSession对象。如果你是使用ARSCNView
或者ARSKView
对象创建虚拟平面,这个平面默认已经包含一个ARSeeeion实例了。如果你是自定义渲染AR内容,你需要手动创建并且持有一个ARSession
/*
Start the view's AR session with a configuration that uses the rear camera,
device position and orientation tracking, and plane detection.
*/
let configuration = ARWorldTrackingConfiguration()
configuration.planeDetection = .horizontal
sceneView.session.run(configuration)
// Set a delegate to track the number of plane anchors for providing UI feedback.
sceneView.session.delegate = self
运行session还需要一个ARConfiguration
对象,或者他的子类ARWorldTrackingConfigration
。这些类决定了ARKit将如何根据现实场景追踪设备的位置和运动,进而影响你创建的各种AR体验。
ARConfiguration
用于AR session设置的抽象基类,它有三个子类:
- ARWorldTrackingConfiguration 使用后置摄像头跟踪设备的位置和方向,并允许进行平面检测和击中测试
- AROrientationTrackingConfiguration 使用后置摄像头,仅仅跟踪设备的方向
- ARFaceTrackingConfiguration 提供使用前置摄像头的AR体验,并跟踪用户脸部的移动和表情
开发调试中几个有用的设置
改变颜色
plane.firstMaterial?.diffuse.contents = UIColor.red
显示统计
sceneView.showsStatistics = true
显示坐标系
红黄蓝分别代表x、y、z轴,手机上默认是左手坐标系
sceneView.debugOptions = ARSCNDebugOptions.showWorldOrigin
显示特征点
sceneView.debugOptions = ARSCNDebugOptions.showFeaturePoints
参考:
ARKit
Building an AR app with ARKit and Scenekit
带操作步骤# how to convert .dae to .scn files in SceneKit
how to convert .dae to .scn files in SceneKit
带工具使用提示# How to create realistic .scn files?
# Change color of SCNNode/Geometry/Material
网友评论