我正在研究ARKit项目,并尝试将一些对象放置在检测到的平面上。但是一旦我移动设备放置另一个对象,它就无法正常工作,第一个对象没有站在他的位置。我希望每个渲染对象都停留在第一位置,直到用户开始与之交互。
我已经看到了:
ARKIT : place object on a plane doesn't work properly
但是还没有解决方案。
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
guard let planeAnchor = anchor as? ARPlaneAnchor else { return }
self.planeAnchor = planeAnchor
self.floorNode = node
DispatchQueue.main.async {
self.messageLabel.text = "Surface Detectée - Taper + pour choisir des objets"
self.addModelButton.isEnabled = true
self.addModelButton.alpha = 1
}
}
func addFurniture(selectedNode:SCNNode) {
selectedNode.simdPosition = float3(planeAnchor.center.x, planeAnchor.center.y, planeAnchor.center.z)
floorNode.addChildNode(selectedNode)
messageLabel.text = "Model chargé - Vous pouvez le positionner, le faire tourner ou ajouter d'autres. "
}
一旦检测到平面,用户便从collectionView中选择一个模型,然后在调用addFurniture(selectedNode:SCNNode)后将模型放置在检测到的平面中。
我做错了什么或我没有做什么?请问有人可以帮我吗?