ios - 使用 `named: ` 加载时 SCNScene 为零

标签 ios swift xcode scenekit

我正在使用以下代码在 scenekit 中渲染场景,当从 art.scnassests 文件夹加载 dae 文件时,它可以完美运行。

let scene = SCNScene(named: "art.scnassets/idle.dae")

但是我想下载 Assets 并应用它,但出现错误

let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let scene = SCNScene(named: documentsURL.absoluteString+"idle.dae")

文件夹中存在名为 idle.dae 的文件。

我收到错误: fatal error :在展开可选值时意外发现 nil

如何加载下载的资源并动态应用?我究竟做错了什么?请问有什么指点吗?我是 iOS 编程的菜鸟。

最佳答案

除非 iOS 11 有所改变,否则您将无法在 iOS 上的运行时下载和实例化 DAE 文件。它们在构建时使用名为 scntool 的实用程序进行压缩/编译。

您能否改用 Model I/O 支持的文件格式之一?参见 https://developer.apple.com/videos/play/wwdc2015/602/?time=320对于原始列表(Alembic .abc、Polygon .ply Triangles .STL、WaveFront .obj)和 https://developer.apple.com/videos/play/wwdc2017/610/快速讨论皮克斯的 USD(通用场景描述)。

如果您受困于 DAE 文件,Frederik Jacques 在 https://the-nerd.be/2014/11/07/dynamically-load-collada-files-in-scenekit-at-runtime/ 上有一篇文章其中概述了他对 DAE 处理管道进行逆向工程的经验。他的技术允许下载从服务器上的 DAE 文件处理的 SCN 文件。 另见 Load uncompressed collada file using iOS Scene Kit (带有权威来源的评论)和https://forums.developer.apple.com/thread/38010 .

关于ios - 使用 `named: ` 加载时 SCNScene 为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44890596/

相关文章:

ios - iOS-有什么方法可以在静态库中收到内存不足警告?

swift - 使用 CharacterSet 拆分字符串

swift - coreML 验证输入失败

ios - 无法从 xcode 导出 IOS 应用程序存档以进行测试

ios - iOS 中的设备兼容性问题

ios - Swift:Hpple 集成

ios - 带有自定义下划线的 NSAttributedString

ios - 加载 TableView 时关闭 UIAlertController

加载时的 iOS 导航栏动画背景

ios - 在 xcode 6.1 中,界面生成器删除 ui 元素