我正在使用以下代码在 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/