我正在将从.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.
如果你仔细观察但不再是明显的多色带,接缝仍然可见.