iOS SceneKit中的纹理缝

时间:2017-03-14 04:09:12

标签: ios textures scenekit texture-mapping

我在SceneKit中应用于球体的纹理中出现了间断的接缝外观。它始终在"后面"球体的两个边缘相交的球体。看起来纹理并没有与自身完全连接,您可以通过细线看到背景。问题似乎存在于所有设备和所有最近的iOS版本中。我的实验表明,纹理的分辨率似乎是一个因素,但我还没有确切地确定这种影响。

为了清晰起见,我附上了一张截图来说明白色背景,但是接缝本身并不是白色,只是让背景显示出来:

Planet Seam

有谁知道为什么SceneKit会以这种方式呈现纹理?我有一个相当简单的实现,只是创建一个球体和一个材料,并应用漫反射和法线贴图。这是我的代码:

// create planet
SCNNode *baseNode = [SCNNode node];
[baseNode setName:name];

// Planet
SCNSphere *planet = [SCNSphere sphereWithRadius:5];
SCNNode *planetNode = [SCNNode nodeWithGeometry:planet];
[planetNode setName:@"planetNode"];
[baseNode addChildNode:planetNode];

SCNMaterial *material = [SCNMaterial material];
material.shininess = 1;
material.normal.intensity = 0.5;
material.normal.contents = normalMap;
material.diffuse.contents = diffuseMap;

planetNode.geometry.materials = @[material];

有没有人对可能导致此问题的任何人有任何经验" seam"出现,我怎么可能摆脱它?我的纹理通常是1000x500或2048x1024,具体取决于具体情况,并且两种分辨率都出现了接缝。是否有一个理想的SceneKit纹理分辨率,或众所周知的可能导致此行为的东西?

1 个答案:

答案 0 :(得分:0)

答案最终令人沮丧地简单:出于质量原因,我正在重新缩放纹理,而这条线是分数分辨率的结果,例如 1025.25f * 2048.5f。

在缩放纹理之前将值四舍五入到 int 解决了问题。

相关问题