【问题标题】:How can I get rid of zig zag artifact on sphere surface in vispy?我怎样才能摆脱 vispy 中球体表面上的锯齿形伪影?
【发布时间】:2023-02-25 05:28:24
【问题描述】:

每个人

我正在研究太阳系行星的 3D 可视化。当我要应用纹理时,我手动计算了纹理坐标 (texcoords),并得到 the zig-zag artefact as appears in the image。

我相信我的计算可能有问题。我附上了下面的texcoords计算

# Compute Texture Coordinates  
def get_texcoords(vertices):
    texcoords = []
    for v in vertices:
        #thresholding
        for i in range(3):
            if np.abs(v[i]) > 1e-6:
                v[i] = v[i]
            elif np.abs(v[i]) < 1e-6:
                v[i] = 0.0

        # Compute position in uv-space
        radius = np.sqrt(v[0]**2 + v[1]**2 + v[2]**2)
        
        latitude = np.arcsin(v[2]/radius)
        longitude = np.arctan2(v[1],v[0])
            
        # Convert to texture coordinates
        u = round(0.5 + longitude/(2*np.pi),5)
        v = round(0.5 + latitude/np.pi,5)

        texcoords.append([u,v])
            
    return np.array(texcoords)

有什么方法可以消除这些人工制品,或者它有更聪明的方法来获取 vispy 中的纹理坐标。

感谢您的帮助和建议。

【问题讨论】:

    标签: python vispy


    【解决方案1】:

    也许使用“for v in vertices:”结合使用纹理坐标变量名称为“u”和“v”?我不确定它会产生那个工件,但绝对不建议在没有非常谨慎的情况下修改循环内的迭代器。实际上,不以任何方式推荐。这是我的初步看法。我正在使用相同的算法,所以一旦我开始工作,我就会知道这是否是您问题的原因。

    我刚刚找到这个链接,它解释了 uv 映射算法中潜伏的错误:https://mft-dev.dk/uv-mapping-sphere/

    简而言之,一些网格三角形穿过纹理边界,其中一些最终“翻转”(即它们的面法线指向内部而不是向外)。链接中的文章显示了如何找到这些流氓面孔并修复它们。

    一天左右,我一直在为这个问题挠头。希望这可以帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-26
      • 1970-01-01
      • 1970-01-01
      • 2021-01-27
      • 2020-08-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      相关资源
      最近更新 更多