ios - iOS SceneKit 中的纹理接缝

标签 ios textures scenekit texture-mapping

我在 SceneKit 中应用于球体的纹理中出现间歇性接缝。它总是在球体的“背面”,纹理的两条边在那里相遇。看起来纹理与自身并没有完全联系,您可以通过细线看到背景。该问题似乎存在于所有设备和所有最新的 iOS 版本中。我的实验表明纹理的分辨率似乎是一个因素,但我还没有确切地确定这种影响是什么。

为了清楚起见,我附上了一张屏幕截图来说明,在白色背景上,但接缝本身并不是白色的,它只是允许背景显示出来:

Planet Seam

有谁知道为什么 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/

相关文章:

javascript - Webgl 纹理水平翻转

javascript - 何时将 Three.js 纹理发送到 GPU?

swift - Swift 中的 SceneKit HitTest 小对象

ios - PhoneGap BarcodeScanner 插件不工作

ios - 在 ARC 中强 vs 保留

iphone - 如何获得我当前位置附近最近的地方?

javascript - 区分 iPad 和 .来自网络应用程序内部的 iPhone?

three.js - 在 THREE.js 中检索顶点数据

ios - SceneKit 相机仅在 x 轴上跟随对象? - swift

ios - 我可以合并多个透明 SCNShape 对象吗?