首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift 3将.dae文件加载到SCNNode

Swift 3将.dae文件加载到SCNNode
EN

Stack Overflow用户
提问于 2017-07-12 23:12:55
回答 2查看 1.7K关注 0票数 0

将.dae文件加载为场景元素

此代码工作,将文件加载为场景:

代码语言:javascript
复制
let scene = SCNScene(named: "art.scnassets/base-wall-tile_sample.dae")!

这段代码将文件加载为SCNGeometry,不会:

代码语言:javascript
复制
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)!

url和source没有问题,但在尝试生成geo时会崩溃。错误的指令。

这段代码,就像网上提供的几个例子一样,是在Swift 2 (load a collada (dae) file into SCNNode (Swift - SceneKit).我不得不将其添加到Swift 3中,但翻译过程中似乎遗漏了一些东西。有没有人能告诉我怎么做才对?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-13 05:04:23

.dae文件始终作为SCNScene加载。需要命名包含要添加的几何体的节点。然后可以加载场景,将其过滤为具有给定名称的节点,并将其添加到场景中。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2018-10-27 21:13:38

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45061583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档