将.dae文件加载为场景元素
此代码有效,将文件加载为场景:
let scene = SCNScene(named: "art.scnassets/base-wall-tile_sample.dae")!
此代码将文件加载为SCNGeometry,但不包含:
let url = Bundle.main.url(forResource: "art.scnassets/base-wall-tile_sample", withExtension: "dae")
let source = SCNSceneSource(url: url! )
let geo = source!.entryWithIdentifier("Geo", withClass: SCNGeometry.self)!
网址和来源都可以,但是它会崩溃尝试生成地理位置。糟糕的指示。
这个代码,就像网上提供的几个例子一样,是在Swift 2中的load a collada (dae) file into SCNNode (Swift - SceneKit)。我不得不把它变成Swift 3,而且翻译中似乎丢失了一些东西。有人可以告诉我怎么做做这个东西吧?
答案 0 :(得分:1)
.dae
文件始终作为SCNScene
加载。您需要命名包含要添加的几何的节点。
您可以加载场景,为具有给定名称的节点过滤它,并将其添加到场景中。
func addNode(named nodeName, fromSceneNamed: sceneName, to scene: SCNScene) {
if let loadedScene = SCNScene(named: sceneName),
let node = loadedScene.rootNode.childNode(withName: nodeName, recursivly: true) {
scene.rootNode.addChildNode(node)
}
}
答案 1 :(得分:0)
guard let shipScene = SCNScene(named: "ship.dae") else { return }
let shipNode = SCNNode()
let shipSceneChildNodes = shipScene.rootNode.childNodes
for childNode in shipSceneChildNodes {
shipNode.addChildNode(childNode)
}
node.addChildNode(shipNode)