正如我们在下图中看到的那样,场景图中有多个节点。要求是我想要在一个节点中添加这些节点,如image2所示。所以在场景图,我将有一个节点(椅子),将包含多个节点如何将多个节点连接到iOS场景中的一个节点
Image1
Image2
正如我们在下图中看到的那样,场景图中有多个节点。要求是我想要在一个节点中添加这些节点,如image2所示。所以在场景图,我将有一个节点(椅子),将包含多个节点如何将多个节点连接到iOS场景中的一个节点
Image1
Image2
我的建议是:
我使用第二个几次来使用ARKit构建动态场景。像魅力一样工作。
基本上,我说我的.dae文件的所有孩子的一个SCNNode:
var node = SCNNode()
let scene = SCNScene(named: "myScene.dae")
var nodeArray = scene.rootNode.childNodes
for childNode in nodeArray {
node.addChildNode(childNode as SCNNode)
}
你应该给它与你的文件一试,用同样的方法.addChildNode :)
你创建一个父节点,然后将所有节点添加为子节点。
即:
var nodes: [SCNNode] = getMyNodes()
var parentNode = SCNNode()
parentNode.name = "chair"
for node in nodes {
parentNode.addChildNodes(node)
}
当你申请一个更新的节点,更新也向下推给孩子,比如:
parentNode.transform = SCNMatrix4MakeTranslation(0, 0.5, 1.2)
将在同一平移变换适用于所有孩子连接到parentNode
。
您可以通过访问特定的孩子:
parentNode.childNode(withName: nameOfChildNode, recursively: true)
和使用得到任何孩子的父母:
myChildNode.parent
编辑:
如果从一个场景文件导入,您仍然可以通过编程方式轻松访问节点:
let scene = SCNScene(named: "myScene.scn")
func getMyNodes() -> [SCNNode] {
var nodes: [SCNNode] = [SCNNode]()
for node in scene.rootNode.childNodes {
nodes.append(node)
}
return nodes
}
顺便说一句,这意味着您可以忽略大部分上述内容,并使用作为parent
节点。
请您分享一下动态方法的代码 –
@Ankitgarg检查我的更新回答:) –