将纹理应用于threejs模型时出现奇怪的线条("接缝")

时间:2015-04-17 04:40:42

标签: three.js textures photogrammetry

我正在将从.ctm文件导入的模型渲染为threejs v71。然后我使用带有地图的MeshBasicMaterial添加纹理。

原始模型在Agisoft Photoscan中制作,导出为.obj,然后使用官方OpenCTM查看器程序转换为OpenCTM格式。 .ctm模型本身是here

看起来是正确的,除了那些奇怪的"接缝"加载.ctm时出现在纹理上。 .obj在没有接缝的情况下在three.js中加载正常。这些是什么,我如何摆脱它们?

这是一个截图:

enter image description here

这些"接缝"纹理文件中不存在:

enter image description here

更新:我注意到在ctm查看器中查看.ctm时也可以看到接缝,因此这可能是OpenCtm转换问题,而不是三个加载问题。

3 个答案:

答案 0 :(得分:2)

令我懊恼的是,这似乎是OpenCTM中的longstanding bug

其他答案不得重现问题中描述的情况。

编辑:我现在完全理解了这个问题,并为此找到了解决方法。问题是大多数程序(Photoscan,Blender)都有" per-loop"顶点而不是实际的" per-vertex"纹理。这只意味着当一个顶点由两个多边形共享时,该顶点可以有多个UV坐标。 CTM每个顶点只能有一个UV坐标,这是造成纹理接缝问题的原因。

我在搅拌机中的解决方法是:

  • 来自群岛的接缝
  • 选择接缝边缘,选择相似的 - >接缝。现在应该选择所有接缝
  • 网格 - >边缘 - >边缘分割
  • 导出到.obj,使用ctmviewer.exe导入并导出到.ctm。

如果仔细观察但不再有明显的多色带,接缝仍然可见。

答案 1 :(得分:0)

我的Agisoft Photoscan模型/纹理也遇到了同样的问题,所以我在Photoshop中打开了纹理,注意到它在所有纹理贴片之间都有透明度。我使用内容感知填充填充所有间隙,并将纹理保存为没有图层的.tif。这解决了我的问题。

答案 2 :(得分:0)

或者您可以从纹理图像文件中删除Alpha通道(或在导出期间使用JPG格式)。