Swift SceneKit和加载3D模型

时间:2017-10-02 18:00:22

标签: swift scenekit

我编写了这些代码行,但是当我开始时,我将报告以下错误:

  

2017-10-02 19:53:38.856088 + 0200 SceneViewApp [38539:1262873]   致命错误:在解包可选值时意外发现nil

但该文件位于显示的文件夹中。

我将3d模型保存为.dae并转换为.scn

我该如何解决这个问题?谢谢

class GameViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let scene = SCNScene(named: "3Dmodels/coffee.scn")!
        _ = scene.rootNode.childNode(withName: "coffee.scn", recursively: true)!
    }
}

1 个答案:

答案 0 :(得分:0)

由于错误发生在这一行:

_ = scene.rootNode.childNode(withName: "coffee.scn", recursively: true)!

看起来没有名为" coffee.scn"的子节点,这意味着childNode(withName:recursively:)返回nil,然后强制解包({{1} })触发致命错误。

如果没有您正在处理的资产,我无法真正告诉您节点的名称应该是什么。

我没有看到节点名称包含文件扩展名(" .scn")的原因,因此可能是该节点刚被调用" coffee" 。您可以在Xcode中打开资产文件,然后选择要查找的节点,并在Node Inspector中查看其名称。您还可以枚举所有子节点(使用!)并打印其名称以查看所有可能节点名称的列表。