在使用ARKit的时候,如果出现“ARSession CurrentFrame is missing the AR interpretation Model Entities”的错误提示,可能是因为系统无法识别模型实体导致的。解决方法是需要确保在ARKit构建场景时,场景中的所有实体都必须有正确的Anchor和Transform信息。以下是示例代码:
// 创建ARKit场景 let sceneView = ARSCNView()
// 创建AR配置 let configuration = ARWorldTrackingConfiguration()
// 开启平面检测 configuration.planeDetection = [.horizontal, .vertical]
// 设置代理 sceneView.delegate = self sceneView.session.delegate = self
// 将AR场景添加到主视图 view.addSubview(sceneView)
// 构建AR场景 let node = SCNNode() let box = SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0.01) let boxNode = SCNNode(geometry: box) boxNode.position = SCNVector3(0, 0, -0.2) node.addChildNode(boxNode) sceneView.scene.rootNode.addChildNode(node)
// 为实体添加Anchor信息 let anchor = ARAnchor(transform: boxNode.transform) sceneView.session.add(anchor)
// 更新实体位置信息 func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) { guard let frame = sceneView.session.currentFrame else { return } for node in sceneView.scene.rootNode.childNodes { if let anchor = sceneView.session.currentFrame?.anchors.first(where: { $0.identifier == node.name }) { node.transform = SCNMatrix4(anchor.transform) } } }