1

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

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

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

xcode 文件树

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

xcode COLLADA 预览

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

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

渲染输出

有任何想法吗?

4

1 回答 1

1

我知道 Xcode 和运行时使用不同的算法来查找 Scene Kit 的资源,所以它在一个而不是另一个中工作并不奇怪。(Xcode 显然需要能够查看您的所有源代码,而运行时的则更具体地说明它将在哪里查看。)

也就是说,你能发布你的应用程序的资源目录是什么样的吗?就像,如果你进入它并做一个ls -FR,你看到你期望的结构吗?一切都复制好了吗?

此外,如果这是同一个模型,那么你遇到的问题不仅仅是你的纹理没有加载。我的意思是,这看起来很糟糕。您是否对加载的文件执行其他操作?

于 2014-01-27T09:22:18.213 回答