从URL到.scn文件的SCNReferenceNode在文件旁边找不到纹理

时间:2019-02-21 14:37:37

标签: ios swift scenekit scnnode

在我的iOS应用中,我从网络服务器上下载了一个.scn文件,因此该文件已在本地复制。 复制下载的文件旁边的纹理文件。是否相关:这些纹理存储在本地,而不是下载。

然后我从下载的.scn文件的本地SCNReferenceNode创建一个URL。 我的代码中有scn文件的支票(打印):

found SCN file at file:///private/var/mobile/Containers/Data/Application/01F588F9-98AB-4EC8-A948-5165D69074B0/Documents/myTmpDir/model.scn

并再次检查纹理:

FILE EXISTS at url = file:///var/mobile/Containers/Data/Application/01F588F9-98AB-4EC8-A948-5165D69074B0/Documents/myTmpDir/Maison%20MSG%2013%20Wapper%20snowdust/Bois234_3.jpg

但是当我加载SCNReferenceNode时,我收到以下错误消息

[SceneKit] Error: Failed to load : <C3DImage 0x282455a00 src:Maison%20MSG%2013%20Wapper%20snowdust/Bois234_3.jpg [0.000000x0.000000]> [SceneKit] Error: Cannot load image Maison%20MSG%2013%20Wapper%20snowdust/Bois234_3.jpg. Using dummy texture.

请注意,.scn文件具有纹理目录的相对路径。通过检查应用的容器进行验证时,两者都位于正确的位置。

如果在XCode中将纹理文件目录放在Assets.xcassets中,则可以正确加载纹理。看来纹理的相对路径不起作用。 我试图更改工作目录,但仍然没有令人满意的结果。

另一个有趣的事实是,如果我下载了应用容器,并在我的mac上打开.scn文件(正确放置了textures目录),则可以正确应用纹理。

我没有解决这个问题的主意,将不胜感激:-)。

谢谢!

1 个答案:

答案 0 :(得分:0)

.mtl文件中有Maison%20MSG%2013%20Wapper%20snowdust/Bois234_3.jpg

的引用

删除Maison%20MSG%2013%20Wapper%20snowdust/并保留Bois234_3.jpg,因为现在所有图像文件都可以在项目的.scnassets文件中本地访问