有没有办法可以同时在同一个SCNView中显示多个场景?所以,让我们说ball.dae
中有一个球,pyramid.dae
中有一个金字塔。所以这些是不同的场景,我想同时展示两者。
目前我只有一个,我这样创建:
let scene = SCNScene(named: "world1.dae")!
如果我只是在下面创建另一个,那么它只显示第二个......:/
提前致谢!
答案 0 :(得分:3)
好的,我已经弄清楚了。问题是不添加另一个场景,而是从第二个场景到第一个场景的节点如下:
let scene = SCNScene(named: "world1.dae")!
let subScene = SCNScene(named: "pyramid.dae")!
let pyramid = subScene.rootNode.childNodeWithName("pyramid", recursively: true)!
scene.rootNode.addChildNode(pyramid)
答案 1 :(得分:2)
我已经制作了两个克隆节点的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 ..问候。泰德
答案 2 :(得分:0)
在最新版本的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!
}
subScene到subScene?