【问题标题】:Computed mesh has interspace on seams计算网格在接缝处具有间隙
【发布时间】:2019-06-28 07:52:27
【问题描述】:

我计算一个立方体的网格,其顶点在完全相同的位置但加倍,如下所示:

       +----+
      /    /
     /    /
Q0> +----+ <Q1
P0> +----+ <P1
    |    |
    |    |
    +----+

P0Q0 具有完全相同的位置,但是是两个不同的顶点。 P1Q1 相同。

我的着色器需要的是顶点处的单独元数据(UV0UV1、颜色等)。这就是为什么我必须将顶点加倍,尽管在同一个位置。

也就是说,我的问题如下。在沿P0-&gt;P1Q0-&gt;Q1 的接缝处渲染了一个空隙。它通常小于一个像素,但仍然可以察觉。看看这张效果图的拼贴:

我用 4 个蓝色箭头指出了工件。 BL 角的较小图像是完美对齐的相机,而较大的图像是倾斜相机。

我没有抗锯齿(我需要像素化的艺术风格),并且纹理未经过滤,没有 mipmap。如有需要,我可以给出纹理的完整设置。

我的问题是,为什么这些伪影会出现在有角度的三角形接缝上?三角形之间还有几个接缝是共面的,并且没有接缝是可见的。

UV 在 epsilon(像素的 1/100)上方有一个微小的填充,以减少纹理渗色。纹理在数组中,它们不在图集中!

该算法基于int,并且仅基于网格构造使用Vector3float。这意味着算法中不会有任何舍入误差,顺便说一句,这非常简单。

工件必须是在转换为Vector3 后产生的,并且看起来像舍入错误,但我希望硬件精确定位的顶点会产生完美对齐的 Peano-Jordan 纹素。

这里发生了什么?如何删除这些工件?

【问题讨论】:

    标签: unity3d rendering mesh


    【解决方案1】:

    现在解决了。

    首先,我将纹理设置为Clamp 模式(它是Repeat)。这解决了问题。但是网格是通过程序生成的,Repeat 是绝对必要的。

    所以,我不得不删除Clamp(并将其设置回Repeat)。但在那一点上,发生了什么很清楚:没有间隙,一切都是像素完美的。问题在于纹理填充,它是像素的 1/100,因此太低了。我把它提高到半个像素,问题就消失了!

    出于道德原因,我不会接受我自己的答案,所以留在这里只是为了后代。

    【讨论】:

      猜你喜欢
      • 2012-02-26
      • 2022-12-12
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 2013-08-14
      • 1970-01-01
      • 1970-01-01
      • 2011-08-16
      相关资源
      最近更新 更多