【发布时间】:2019-04-06 22:45:13
【问题描述】:
我正在尝试使用 SceneKit 绘制一组简单的 4 个盒子,它们彼此相邻,每个盒子都应用了纹理(Minecraft 风格):
纹理是这样的(png文件):
我想避免盒子之间的小蓝线(不在纹理中),但无论我尝试什么设置,这些人工制品都会保留。
知道如何避免它们吗?
在scenekit编辑器中设置材质(每个盒子完全一样,除了漫反射部分是指正确的纹理文件)
scenekit 编辑器中的问题也出现在设备上运行的应用程序中。
奇怪的是,如果我只是做一个全黑(或任何颜色)的纹理(里面有或没有任何东西),这些人工制品就不会出现,如下例:
【问题讨论】:
-
看起来这些边缘上的纹理坐标略微低于 0.0 或高于 1.0,这会调用通过材质属性的
wrapS和wrapT属性配置的任何采样行为。您可以尝试将每个立方体每个面的每个材质的每个材质属性的每个轴的包裹模式设置为.clamp,但由于这是默认设置,它可能没有效果,也没有真正解决精度不足的问题在纹理坐标中。我不知道如何在 Xcode 中使用 SceneKit 编辑器来配置这些属性,但也许可以这样做。 -
我自己复制了这个,我可以确认纹理采样器的包裹行为是这里的罪魁祸首。似乎从 .scn 文件加载的材料实际上具有
.repeat而不是.clamp的默认环绕模式。以编程方式将它们设置为.clamp解决了我的测试中的问题。
标签: scenekit metal texture-mapping material-swift