내 전 question에서 SCNNode를 복제하는 것이 여러 객체를로드하는 문제를 해결하는 방법이라고 생각합니다. 그러나, 나는 틀린 무엇인가 깨달았다.SceneKit에서 SCNNode 부모 - 자식 관계?
나는
arrow = scnScene.rootNode.childNode(withName: "arrow", recursively:true)
arrow.rotation = SCNVector4(0, 0, 1, M_PI_2)
arrow.position = SCNVector3(x: 0, y: 0, z: -3);
let sign = SCNNode()
for i in 0..<10{
let node = arrow.clone()
node.position = SCNVector3(i+1,0,0)
sign.addChildNode(node)
}
arrow.addChildNode(sign)
내가 표시 화살표의 행이 기대하지만 실제로는 y 축에 영향을 x 축에 있지만, 사실 번역 화살표 (의 열이 같은 것이, 복제 노드의 좌표계 것 같다 않았다 변경됨) 및 모든 하위 오브젝트가 180도 회전합니다. 왜?
칼 시지 스카 (Karl Sigiscar)가 SCNReferenceNode를 사용하라고 말하기 전에 필자는 그것을 어떻게 사용해야하며 내 목표를 달성 할 수 있을지 확신하지 못했습니다.
업데이트 :
내가 같이 SCNReferenceNode을 시도 : 나는 그것을 실행할 때let scnScene = SCNScene()
if let filePath = Bundle.main.path(forResource: "arrowsign", ofType: "dae", inDirectory: "art.scnassets") {
// ReferenceNode path -> ReferenceNode URL
let referenceURL = NSURL(fileURLWithPath: filePath)
if #available(iOS 9.0, *) {
arrow = SCNReferenceNode(url: referenceURL as URL!)!
arrow.load()
arrow.rotation = SCNVector4(0, 0, 1, -M_PI_2)
arrow.position = SCNVector3(0,0,-5)
// Create reference node
for i in 0..<10{
let referenceNode : SCNReferenceNode = SCNReferenceNode(url: referenceURL as URL)!
referenceNode.load()
referenceNode.position = SCNVector3(i+1, 0, 0);
arrow.addChildNode(referenceNode)
}
}
}
scnScene.rootNode.addChildNode(arrow)
나는 자식 노드를 회전하지 않았다 그러나 그들은 (-M_PI_2도) 자동으로 회전. 그리고 저는 x 축으로 번역을 했었습니다. 그러나 사실 화살표가 아닌 화살표가 표시되어 있습니다. 그것은 자식 부모 노드의 기능입니까?