SceneKit使用特定的SCNMaterial作为场景的3D背景。
我们必须使用scnScene.background.diffuse.contents =以下之一:
我的背景图片目前是JPG或PNG格式,但它们解压缩的速度很慢,我想使用压缩纹理(PVRTC或ASTC格式)。
我不能使用垂直,水平条纹和球形投影的压缩纹理,因为它们不是方形图像,而PVRTC / ASTC在iOS下需要方形纹理。 我试图PVRTC压缩6个方形图像的数组,但是background.diffuse.contents需要一个6个UIImages的数组,虽然日志中没有错误,但是当我分配一个数组时,我没有看到任何3D背景6个SKTexture到background.diffuse.contents。
我的问题如下:
答案 0 :(得分:1)
我找到了解决方案。对于任何感兴趣的人:
您可以将模型IO纹理指定给scnScene.background.contents 您可以使用textureCubeWithImagesNamed函数加载立方体贴图模型IO纹理:( 6个PVRTC压缩纹理的路径数组)
NSURL* posx = [artworkUrl URLByAppendingPathComponent:@"posx.pvr"];
NSURL* negx = [artworkUrl URLByAppendingPathComponent:@"negx.pvr"];
NSURL* posy = [artworkUrl URLByAppendingPathComponent:@"posy.pvr"];
NSURL* negy = [artworkUrl URLByAppendingPathComponent:@"negy.pvr"];
NSURL* posz = [artworkUrl URLByAppendingPathComponent:@"posz.pvr"];
NSURL* negz = [artworkUrl URLByAppendingPathComponent:@"negz.pvr"];
MDLTexture* cubeTexture = [MDLTexture textureCubeWithImagesNamed:@[posx.path,negx.path,posy.path,negy.path,posz.path,negz.path] ];
scnScene.background.contents = cubeTexture;