【问题标题】:Strange lines ("seams") appearing when applying texture to threejs model将纹理应用于threejs模型时出现奇怪的线条(“接缝”)
【发布时间】:2015-06-23 18:55:49
【问题描述】:

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

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

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

截图如下:

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

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

【问题讨论】:

    标签: three.js textures photogrammetry


    【解决方案1】:

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

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

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

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

    • 岛屿接缝
    • 在接缝处选择一条边,选择相似 --> 接缝。现在应该选择所有接缝
    • 网格 --> 边 --> 边分割
    • 导出为.obj,使用ctmviewer.exe导入导出为.ctm。

    如果您仔细观察,仍然可以看到接缝,但不再是明显的彩色带。

    【讨论】:

    • 可见的接缝很可能是硬边。如果它是实际的边缘分割,那么您还将在该点获得两个独立的法线,因此在着色时会导致接缝。
    【解决方案2】:

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

    【讨论】:

    • 我的纹理文件没有透明度。您似乎在描述一个不同的问题(您使用的是 CTM 吗?)。
    【解决方案3】:

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

    【讨论】:

    • 我在导出过程中使用的是 JPG 格式。您似乎在描述一个不同的问题(您使用的是 CTM 吗?)。
    猜你喜欢
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多