Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Three.js 将纹理应用于threejs模型时出现的奇怪线条(“接缝”)_Three.js_Textures_Photogrammetry - Fatal编程技术网

Three.js 将纹理应用于threejs模型时出现的奇怪线条(“接缝”)

Three.js 将纹理应用于threejs模型时出现的奇怪线条(“接缝”),three.js,textures,photogrammetry,Three.js,Textures,Photogrammetry,我正在渲染一个从.ctm文件导入到ThreeJSV71中的模型。然后,我使用带有贴图的MeshBasicMaterial添加纹理 原始模型由Agisoft Photoscan制作,导出为.obj,然后使用官方OpenCTM查看器程序转换为OpenCTM格式。.ctm模型本身就是 它看起来是正确的,除了加载.ctm时纹理上出现奇怪的“接缝”。.obj在three.js中加载良好,没有接缝。这些是什么?我该如何摆脱它们 以下是一个屏幕截图: 纹理文件中不存在这些“接缝”: 更新:我注意到在ctm

我正在渲染一个从.ctm文件导入到ThreeJSV71中的模型。然后,我使用带有贴图的MeshBasicMaterial添加纹理

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

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

以下是一个屏幕截图:

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


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

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

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

令我懊恼的是,这似乎是OpenCTM中的一个问题

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

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

我在blender中的解决方法是:

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

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

我的纹理文件中没有透明度。您似乎描述了一个不同的问题(您使用的是CTM吗?),我在导出过程中使用的是JPG格式。您似乎在描述一个不同的问题(您使用的是CTM吗?)。可见接缝可能会对硬边造成影响。如果它是实际的边分割,则在该点还将获得两条独立的法线,因此在着色时会产生接缝。