SceneKit – 在同一个 SCNView 中显示多个场景

SceneKit – Display multiple scenes in same SCNView

有没有办法可以在同一个SCNView中同时显示多个场景?假设我在 ball.dae 中有一个球,在 pyramid.dae 中有一个金字塔。所以这些是不同的场景,我想同时展示它们。

目前我只有一个,我是这样创建的:

let scene = SCNScene(named: "world1.dae")!

如果我只是在下面创建另一个,那么它只会显示第二个...:/

提前致谢!

好的,我已经知道了。问题是不要添加另一个场景,而是像这样从第二个场景添加节点到第一个场景:

let scene = SCNScene(named: "world1.dae")!
let subScene = SCNScene(named: "pyramid.dae")!

let pyramid = subScene.rootNode.childNodeWithName("pyramid", recursively: true)!

scene.rootNode.addChildNode(pyramid)

在最新的 Xcode 6.2 和 iOS 8.2 中,我不得不稍微更改一下代码

  func getNodeFromScene(colladaFile: String)  -> SCNNode {
    var subScene = SCNScene(named: "art.scnassets/\(colladaFile).dae")
    let geometryNode = subScene?.rootNode.childNodeWithName(colladaFile, recursively: true)!
    return geometryNode!
  }

子场景到子场景?

我做了两个克隆节点的SCNNode扩展函数 来自另一个场景:

extension SCNNode
{

    func addNodeClonesWithNames(#fromScene: SCNScene,   nodeNames: [String]  )
    {
        for nodename in nodeNames
        {
            self.addClonedChildNode( fromScene.rootNode.childNodeWithName(nodename, recursively: true)! )
        }
    }

    func addClonedChildNode(node: SCNNode)
    {
        self.addChildNode(node.clone() as! SCNNode)
    }
 }

在您的视图控制器中,在此处加载两个场景:

let scnMain   = SCNScene(named: "world1.dae")!
let scnAssets = SCNScene(named: "props.dae")!


// then add some nodes from the assets scene to the main scene's
// root node by name:

scnMain.rootNode.addNodeClonesWithNames(fromScene: scnAssets, 
           nodeNames: ["btnStartEngine","btnStop","btnReverse","btnEject"])
//

当然,这不仅适用于根节点,还适用于所有SCNNode。 我在这里使用克隆,以便原件保持完整以供多次使用。

我希望这是有用的。很高兴这是 Swift.. 问候。泰德