Vous créez un nœud parent, puis ajoutez tous vos nœuds en tant qu'enfants.
-à-dire:
var nodes: [SCNNode] = getMyNodes()
var parentNode = SCNNode()
parentNode.name = "chair"
for node in nodes {
parentNode.addChildNodes(node)
}
Lorsque vous appliquez une mise à jour d'un noeud, la mise à jour est également poussé vers le bas pour les enfants, par exemple:
parentNode.transform = SCNMatrix4MakeTranslation(0, 0.5, 1.2)
appliquera la même transformation de traduction à tous les enfants attachés à parentNode
.
Vous pouvez accéder à un enfant en particulier en utilisant:
parentNode.childNode(withName: nameOfChildNode, recursively: true)
et obtenir le parent d'un enfant à l'aide:
myChildNode.parent
EDIT:
Si vous importez à partir d'un fichier de scène, vous pouvez toujours accéder facilement à vos nœuds par programme:
let scene = SCNScene(named: "myScene.scn")
func getMyNodes() -> [SCNNode] {
var nodes: [SCNNode] = [SCNNode]()
for node in scene.rootNode.childNodes {
nodes.append(node)
}
return nodes
}
ce qui, incidemment, signifie que vous pouvez ignorer la plupart de ce qui précède et utiliser comme le nœud parent
.
Pourriez-vous s'il vous plaît partager le code pour l'approche dynamique –
@Ankitgarg vérifier ma réponse mise à jour :) –