Swift SceneKit 和加载 3D 模型

标签 swift scenekit

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

2017-10-02 19: 53: 38.856088 + 0200 SceneViewApp [38539: 1262873] fatal error: unexpectedly found nil while unwrapping an Optional value

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

我将 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)!
    }
}

最佳答案

由于错误发生在这一行:

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

看起来没有名为“coffee.scn”的子节点,这意味着 childNode(withName:recursively:) 返回 nil,则为强制解包 (!) 触发 fatal error 。

<小时/>

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

我不明白为什么节点名称会包含文件扩展名(“.scn”),因此该节点可能只是被称为“coffee”。您可以在 Xcode 中打开资源文件并选择您要查找的节点并在 Node Inspector 中查看其名称。您还可以枚举所有子节点(使用 enumerateChildNodes(_:))并打印它们的名称以查看所有可能的节点名称的列表。

关于Swift SceneKit 和加载 3D 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46531081/

相关文章:

swift - Collada 变形动画混合形状 Maya

ios - 当 SCNScene overlaySKScene 的 child 时查找触摸的 SKNode

xcode - 如何测试不在 Xcode 项目中的 Swift 脚本

swift - 二元运算符不能应用于两个 'NSWindowStyleMask' 操作数

swift - iOS 9 : Determine size of collection view in portrait and landscape

ios - SceneKit 下降到 40 FPS

ios - 如何最大限度地减少(内存泄漏)ARKit场景中的应用程序内存点击后退按钮?

swift - SpriteKit convertPointToView/转换点

ios - AVPlayerController - 按钮无法全屏工作

ios - 如何在 arkit (swift4) 上添加黑白滤镜