ios - iOS场景中如何将多个节点加入一个节点

标签 ios scenekit

正如我们在下图中看到的那样,场景图中的所有多个节点。要求是我想将这些节点添加到一个节点中,如图 2 所示。所以在场景图中,我将有一个节点(椅子),其中包含多个节点

enter image description here

                      Image1

enter image description here
                    Image2

最佳答案

您创建一个父节点,然后将所有节点添加为子节点。

IE。:

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)

并使用以下方法获取任何 child 的 parent :
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
}

顺便说一句,这意味着您可以忽略上述大部分内容并使用 myScene.rootNode作为 parent节点。

关于ios - iOS场景中如何将多个节点加入一个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46669215/

相关文章:

ios - 如何在swift ios中使tableview的标题标题透明

ios - 在 SceneKit 中缩放 SCNNode

swift - ARKit ARSCNView.snapshot() 内存泄漏

ios - SceneKit——将 Objective-C block 转换为 Swift

iphone - 使用 iPhone Sharekit 在一篇文章中发布多个网址

ios - 为 iOS 构建 fftw

ios - SceneKit:如何为同一个 OBJ 文件从 Google Poly 重新创建光照?

swift - enumerateChildNodesUsingBlock(),设置停止为真

ios - Swift 桥接头不导出 React Native 类型

c++ - 我怎样才能让我的 viewcontroller 成为 C++ 书面主题的观察者