使用`named:`加载时,SCNScene为nil

时间:2017-07-03 16:48:34

标签: ios swift xcode scenekit

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

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

但是我想下载资产并应用它并且我收到错误

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

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

我收到错误:fatal error: unexpectedly found nil while unwrapping an Optional value

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

1 个答案:

答案 0 :(得分:2)

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

您可以使用Model I / O支持的其中一种文件格式吗?有关原始列表(Alembic .abc,Polygon .ply Triangles .stl,WaveFront .obj)和https://developer.apple.com/videos/play/wwdc2015/602/?time=320,请参阅https://developer.apple.com/videos/play/wwdc2017/610/以快速讨论Pixar的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