首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有什么方法可以使用SceneKit背景CubeMaps的压缩纹理吗?

有什么方法可以使用SceneKit背景CubeMaps的压缩纹理吗?
EN

Stack Overflow用户
提问于 2018-05-16 20:25:12
回答 1查看 270关注 0票数 0

SceneKit使用特定的SCNMaterial作为场景的3D背景。

我们必须使用scnScene.background.diffuse.contents =以下之一:

  • 垂直条(高度= 6x宽度的单个图像)
  • 水平条带( 6x高度=宽度的单幅图像)
  • 球面投影(2x高度=宽度的单幅图像)
  • 一组6幅正方形图像

我的背景图像目前是JPG或PNG格式,但解压缩速度慢,我想使用压缩纹理(PVRTC或ASTC格式)。

我不能使用压缩纹理使用垂直,水平条和球投影,因为他们不是方形图像,和PVRTC/ASTC需要方形纹理下的iOS。我试图压缩6平方图像的数组,但是background.diffuse.contents需要一个6 UIImages的数组,虽然日志中没有错误,但当我将6 SKTexture的数组分配给background.diffuse.contents时,没有看到任何3D背景。

我的问题如下:

  • 是否有方法使用PVRTC或ASTC纹理作为三维SceneKit背景(CubeMap,球面投影.)?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-29 21:22:02

我找到了解决办法。对于任何感兴趣的人:

您可以将模型IO纹理分配给scnScene.background.contents,您可以使用函数textureCubeWithImagesNamed:(6 PVRTC压缩纹理的路径数组)加载多维数据集映射模型IO纹理。

代码语言:javascript
复制
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;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50379365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档