我正在将从.ctm文件导入的模型渲染为threejs v71。然后我使用带有地图的MeshBasicMaterial添加纹理。
原始模型在Agisoft Photoscan中制作,导出为.obj,然后使用官方OpenCTM查看器程序转换为OpenCTM格式。 .ctm模型本身是here。
看起来是正确的,除了那些奇怪的"接缝"加载.ctm时出现在纹理上。 .obj在没有接缝的情况下在three.js中加载正常。这些是什么,我如何摆脱它们?
这是一个截图:
这些"接缝"纹理文件中不存在:
更新:我注意到在ctm查看器中查看.ctm时也可以看到接缝,因此这可能是OpenCtm转换问题,而不是三个加载问题。
答案 0 :(得分:2)
令我懊恼的是,这似乎是OpenCTM中的longstanding bug。
其他答案不得重现问题中描述的情况。
编辑:我现在完全理解了这个问题,并为此找到了解决方法。问题是大多数程序(Photoscan,Blender)都有" per-loop"顶点而不是实际的" per-vertex"纹理。这只意味着当一个顶点由两个多边形共享时,该顶点可以有多个UV坐标。 CTM每个顶点只能有一个UV坐标,这是造成纹理接缝问题的原因。
我在搅拌机中的解决方法是:
如果仔细观察但不再有明显的多色带,接缝仍然可见。
答案 1 :(得分:0)
我的Agisoft Photoscan模型/纹理也遇到了同样的问题,所以我在Photoshop中打开了纹理,注意到它在所有纹理贴片之间都有透明度。我使用内容感知填充填充所有间隙,并将纹理保存为没有图层的.tif。这解决了我的问题。
答案 2 :(得分:0)
或者您可以从纹理图像文件中删除Alpha通道(或在导出期间使用JPG格式)。