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

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

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

这是一个截图:

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

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

最佳答案 令我懊恼的是,这似乎是OpenCTM中的

longstanding bug.

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

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

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

>来自群岛的接缝

>选择接缝边缘,选择相似的 – >接缝.现在应该选择所有接缝

>网格 – >边缘 – >边缘分割

>导出到.obj,使用ctmviewer.exe导入并导出到.ctm.

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