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

标签 macos cocoa scenekit

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

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

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

xcode file tree

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

xcode COLLADA preview

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

在应用程序中,它的渲染如下:

render output

有什么想法吗?

最佳答案

我知道 Xcode 和运行时使用不同的算法来查找 Scene Kit 的资源,因此它在其中一种中工作而在另一种中不起作用也就不足为奇了。 (Xcode 显然需要能够查看所有源代码,而运行时则更具体地了解它将查看的位置。)

也就是说,您可以发布您的应用程序的 Resources 目录是什么样的吗?就像,如果你进入它并执行 ls -FR,你会看到你期望的结构吗?一切都复制好了?

此外,如果这是同一个模型,那么您遇到的问题不仅仅是纹理无法加载。我的意思是,这看起来完全不正常。您是否对加载的文件执行了其他操作?

关于macos - SceneKit CFURLCreateDataAndPropertiesFromResource 失败,错误代码为 -11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21371635/

相关文章:

iphone - 如何为 Mac 和 iPhone 创建混合 Xcode 项目?

macos - NSDocument 向 NSViewController 发送事件的标准方法是什么?

ios - 如何将纹理(图像)添加到 SceneKit 模型,使其均匀覆盖模型(网格)?

ios - 如何在 SceneKit Editor 中使模型的枢轴点居中

ios - 为每个 SCNNode 人脸设置不同的图像

node.js - 无法更新 npm(缺少访问权限)

macos - Zipeg 无法在 Mac Os X High Sierra 10.13 上启动

iPhone:从 UINavigationController 堆栈中弹出 modalViewController

python - Error #15 : Initializing libiomp5. dylib,但发现 libiomp5.dylib 已经初始化

macos - 在 Mac OS 中专注于应用程序的键盘快捷键