使用ARKit显示实际大小的物体需要以下步骤:
import ARKit
let sceneView = ARSCNView()
sceneView.frame = view.bounds
view.addSubview(sceneView)
let configuration = ARWorldTrackingConfiguration()
sceneView.session.run(configuration)
let node = SCNNode()
let geometry = SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0)
let material = SCNMaterial()
material.diffuse.contents = UIColor.red
geometry.materials = [material]
node.geometry = geometry
node.position = SCNVector3(0, 0, -0.5)
sceneView.scene.rootNode.addChildNode(node)
extension ViewController: ARSCNViewDelegate {
func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) {
guard let frame = sceneView.session.currentFrame else { return }
let camera = frame.camera
let transform = camera.transform
let matrix = SCNMatrix4(transform)
node.simdTransform = matrix
}
}
sceneView.delegate = self
这样就可以通过ARKit显示实际大小的物体了。在更新每一帧时,将相机的转换矩阵应用到场景节点上,以使物体保持实际大小。