Просмотр сцены arkit отображает только 1 объект arkit
Мой код ниже отображает только 1 объект arkit в функции начала касаний. Я хотел бы, чтобы пользователь мог отображать несколько одинаковых объектов arkit в виде сцены arkit. Прямо сейчас пользователь может разместить изображение, но как только будет размещено следующее, другое будет удалено.
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
//Handle the shooting
guard let frame = sceneView.session.currentFrame else { return }
let camMatrix = SCNMatrix4(frame.camera.transform)
let direction = SCNVector3Make(-camMatrix.m31 * 5.0, -camMatrix.m32 * 10.0, -camMatrix.m33 * 5.0)
let position = SCNVector3Make(camMatrix.m41, camMatrix.m42, camMatrix.m43)
let scene = SCNScene(named: "art.scnassets/dontCare.scn")!
// Set the scene to the view
sceneView.scene = scene
}
1 ответ
Глупая Милли, ты каждый раз меняешь всю сцену, вместо этого добавляешь узлы в sceneView.scene
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
guard let frame = sceneView.session.currentFrame else { return }
let camMatrix = SCNMatrix4(frame.camera.transform)
let position = SCNVector3Make(camMatrix.m41, camMatrix.m42, camMatrix.m43)
let object = SCNScene(named: "art.scnassets/dontCare.scn")!.rootNode
object.position = position
sceneView.scene.rootNode.addChildNode(object)
}
Вы должны добавить несколько дочерних узлов на ARSCNView
let careScene = SCNScene.init(named: "art.scnassets/dontCare.scn")
let childNode = (careScene?.rootNode.childNode(withName: "Frame", recursively: false))!
childNode.position = SCNVector3(x,y,z)
scenView.scene.rootNode.addChildNode(childNode)