在我的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目录),则可以正确应用纹理。
我没有解决这个问题的主意,将不胜感激:-)。
谢谢!
答案 0 :(得分:0)
.mtl文件中有Maison%20MSG%2013%20Wapper%20snowdust/Bois234_3.jpg
删除Maison%20MSG%2013%20Wapper%20snowdust/
并保留Bois234_3.jpg
,因为现在所有图像文件都可以在项目的.scnassets
文件中本地访问