我在SceneKit中应用纹理到球体上时,发现有时会出现接缝的情况。这种情况总是出现在球体的“后面”,也就是纹理的两个边缘相遇的地方。看起来好像纹理没有完全连接在一起,你可以透过这条薄线看到背景。这个问题似乎在所有设备和最近的iOS版本中都存在。我的实验表明,纹理的分辨率似乎是一个因素,但我还没有确定它的影响。
我附上了一张截图以说明这个问题,在白色背景下更容易看到,但接缝并不是白色的,只是允许背景显示出来:
有人知道为什么SceneKit会以这种方式渲染纹理吗?我的实现相当简单,只是创建一个球体和一个材质,并将漫反射和法线贴图应用于它。以下是我的代码:
我附上了一张截图以说明这个问题,在白色背景下更容易看到,但接缝并不是白色的,只是允许背景显示出来:
![Planet Seam](https://istack.dev59.com/3vMXd.webp)
// 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纹理的理想分辨率,或者有什么公认的可能导致这种情况的原因吗?