我对如何将.dae
文件中的几何图形加载到iOS SceneKit场景图中感到困惑。
我知道可以直接将.dae
文件加载到SCNScene中:
// create a new scene
let scene = SCNScene("test.scnassets/test.dae")
我也知道你可以创建一个空的SCNScene,并将内置的3D对象添加为其子节点:
let scene = SCNScene()
var sphereNode = SCNNode()
sphereNode.geometry = SCNSphere(radius: 1.0)
scene.rootNode.addChildNode(sphereNode)
在第二种情况下,你是否可以将.dae
文件加载到SCNNode中而不是使用内置对象?或者需要先将所有的.dae
文件加载到SCNScene中?如果后者为真,则如何将SCNNode对象放置在SCNScene下正确的位置?
编辑#1:
现在这对我有用了,这是@FlippinFun建议的修改版本。
let url = NSBundle.mainBundle().URLForResource("test.scnassets/test", withExtension: "dae")
let source = SCNSceneSource(URL: url, options: nil)
let block = source.entryWithIdentifier("ID10", withClass: SCNGeometry.self) as SCNGeometry
scene.rootNode.addChildNode(SCNNode(geometry: block))
也许有更好的方式吗?上述方法需要手动从.dae树中加载每个标识符。在我的文件中,有一个名为"SketchUp"的节点,其子标识符为"ID2"和"ID10"。这种方法不能加载根目录"SketchUp"。(我会得到运行时错误。)
SCNSceneSource
。不幸的是,目前这对我来说会导致崩溃。 - M-Vlet block = source.entryWithIdentifier("ID10", withClass: SCNGeometry.self) as SCNGeometry
。通过这个修复,它对我来说可以工作了。 - M-V