我在 SceneKit 中应用于球体的纹理中出现间歇性接缝。它总是在球体的“背面”,纹理的两条边在那里相遇。看起来纹理与自身并没有完全联系,您可以通过细线看到背景。该问题似乎存在于所有设备和所有最新的 iOS 版本中。我的实验表明纹理的分辨率似乎是一个因素,但我还没有确切地确定这种影响是什么。
为了清楚起见,我附上了一张屏幕截图来说明,在白色背景上,但接缝本身并不是白色的,它只是允许背景显示出来:
有谁知道为什么 SceneKit 会以这种方式渲染纹理?我有一个相当简单的实现,只需创建一个球体和一个 Material ,然后对其应用漫反射和法线贴图。这是我的代码:
// 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];
有没有人有任何可能导致这种“接缝”出现的经验,以及我如何摆脱它?我的贴图一般是 1000x500 或 2048x1024,视情况而定,并且在两种分辨率下都出现了接缝。 SceneKit 纹理是否有理想的分辨率,或者可能导致这种行为的众所周知的东西?
最佳答案
答案最终令人沮丧地简单:出于质量原因,我正在重新缩放纹理,这条线是分数分辨率的结果,例如 1025.25f * 2048.5f。
在缩放纹理之前将值四舍五入为 int 修复了问题。
关于ios - iOS SceneKit 中的纹理接缝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42777627/