SceneKit CFURLCreateDataAndPropertiesFromResource失败,错误代码为-11

时间:2014-01-27 01:32:58

标签: macos cocoa scenekit

我正在尝试使用SceneKit,我想做的其中一件事是从COLLADA文件加载场景。这很好,但是,纹理没有加载,加载文件时,我收到以下错误:

<Error>: ImageIO: CGImageSourceCreateWithURL CFURLCreateDataAndPropertiesFromResource failed with error code -11.

我认为这里的部分问题是我在我的应用包中组织文件的方式 - 一个名为Textures.bundle的文件,包含按类别组织的所有纹理,以及一个包含COLLADA的Models.bundle文件:

xcode file tree

我编写了类来获取bundle的类别(文件夹)中的文件路径,这些路径返回正确的路径。即使是Xcode也可以正确获取文件,并正确加载相同的COLLADA文件,甚至可以识别纹理包中的图像:

xcode COLLADA preview

纹理位置设置为“相对于DAE文档”,产生以下(正确)路径:../../Textures.bundle/ModelTextures/Computer/motherboard_motherboard.jpg

在应用程序中,它呈现如下:

render output

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我知道Xcode和运行时使用不同的算法来查找Scene Kit的资源,所以它在一个而不是另一个中工作并不太令人惊讶。 (Xcode显然需要能够查看所有源代码,运行时的代码更具体地说明它的外观。)

那就是说,你可以发布你的应用程序资源目录的样子吗?比如,如果你进入它并做ls -FR,你会看到你期望的结构吗?一切都复制好了吗?

此外,如果这是相同的型号,那么你遇到的问题不仅仅是你的纹理没有加载。我的意思是,这看起来非常糟糕。你在为你加载的文件做些什么吗?