如何通过编程方式将.scn从Documents文件夹转换为SCNNode?

时间:2017-08-03 00:07:42

标签: ios scenekit arkit

我在iPhone的.scn文件夹中的文件夹中有一个Documents文件。我一直在尝试使用SCNSceneSource.scn文件转换为SCNNode

//fileDestFolderURL is the folder that holds the .scn file
let sceneSource = SCNSceneSource(url: fileDestFolderURL, options: [:])
let scene = sceneSource?.scene(options: [:])
print(scene) //prints nil
print(scene?.rootNode) //prints nil

然而,我一直得到nil :(

我的最终目标是取SCNNode并将其添加到ARSCNView

如果有人能提供他们的意见,我们将不胜感激!

2 个答案:

答案 0 :(得分:3)

您应该使用SCNScene.init(url:options:)代替SCNSceneSource(主要用于Collada文件)。

答案 1 :(得分:-1)

我正在使用Objective-C来完成你所要求的。以下是一些可能对您有帮助的翻译代码。以下是使用Chair .scn模型的示例。我注意到最好在Models.scnassets文件夹中使用.scn文件

class Chair {
    func loadModel() {
        let virtualObjectScene = SCNScene(named:"Models.scnassets/chair/chair.scn"")
        let wrapperNode = SCNNode()
        for child: SCNNode in virtualObjectScene?.rootNode?.childNodes {
            wrapperNode.addChildNode(child)
        }
        addChildNode(wrapperNode)
    }
}

我所做的是实例化此Chair类的对象,然后在此对象上调用loadModel。之后我可以将它作为子节点添加到场景的根节点,它出现在场景中。