我正在尝试 SceneKit,我想做的事情之一是从 COLLADA 文件加载场景。这工作得很好,但是,纹理没有加载,并且在加载文件时,我收到以下错误:
<Error>: ImageIO: CGImageSourceCreateWithURL CFURLCreateDataAndPropertiesFromResource failed with error code -11.
我认为这里的部分问题在于我在应用程序包中组织文件的方式 - 一个名为 Textures.bundle
的文件,其中包含按类别组织的所有纹理,以及一个 Models保存 COLLADA 文件的 .bundle
:
我编写了类来获取包的类别(文件夹)中的文件路径,它返回正确的路径。甚至 Xcode 也可以正确获取文件,并正确加载相同的 COLLADA 文件,甚至可以识别纹理包中的图像:
纹理位置设置为“相对于 DAE 文档”,产生以下(正确)路径:../../Textures.bundle/ModelTextures/Computer/motherboard_motherboard.jpg
在应用程序中,它的渲染如下:
有什么想法吗?
最佳答案
我知道 Xcode 和运行时使用不同的算法来查找 Scene Kit 的资源,因此它在其中一种中工作而在另一种中不起作用也就不足为奇了。 (Xcode 显然需要能够查看所有源代码,而运行时则更具体地了解它将查看的位置。)
也就是说,您可以发布您的应用程序的 Resources 目录是什么样的吗?就像,如果你进入它并执行 ls -FR
,你会看到你期望的结构吗?一切都复制好了?
此外,如果这是同一个模型,那么您遇到的问题不仅仅是纹理无法加载。我的意思是,这看起来完全不正常。您是否对加载的文件执行了其他操作?
关于macos - SceneKit CFURLCreateDataAndPropertiesFromResource 失败,错误代码为 -11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21371635/