iOS SceneKit中的纹理缝

Ner*_*ken 8 textures texture-mapping ios scenekit

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

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

行星缝

有谁知道为什么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];
Run Code Online (Sandbox Code Playgroud)

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

Ner*_*ken 1

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

在缩放纹理之前将值舍入为 int 修复了问题。