如何以编程方式将 Documents 文件夹中的 .scn 转换为 SCNNode?

How to turn .scn from Documents folder into SCNNode programmatically?

我在 iPhone 的 Documents 文件夹中的文件夹中有一个 .scn 文件。我一直在尝试使用 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

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

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

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 class 的一个对象,然后对该对象调用 loadModel。之后,我可以将它作为子节点添加到场景的根节点,它就会出现在场景中。

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