猿问

pyvista polydata(梯形)上的纹理看起来沿着对角线弯曲

我有一个pyvista多边形(特别是等腰梯形),我想在其上应用纹理。问题在于,原始平行线沿着梯形的对角线奇怪地弯曲。有什么办法可以防止这种情况吗?我也不知道这个问题是否应该在pyvista,vtk或opengl层上解决。有关重现问题的最小工作示例,请参阅下文。

原始纹理:

预期结果(或多或少,它不是关于亮度,而是线条):

http://img2.mukewang.com/63171229000115bc06600658.jpg

以下代码的结果/实际结果:

http://img.mukewang.com/631712390001561806580657.jpg

重现结果的代码:


import numpy as np

import pyvista as pv


vertices = np.array([[0.2, 0, 0],

                     [0.8, 0, 0],

                     [1, 1, 0],

                     [0, 1, 0]]) 


# mesh faces

faces = np.hstack([[4, 0, 1, 2, 3]])  # square


surf = pv.PolyData(vertices, faces)


tex = pv.read_texture("parallel.png")

# Turning these on did not make a visible difference.

tex.InterpolateOn()

tex.MipmapOn()

surf.t_coords = np.array([[0., 0.],

                          [1., 0.],

                          [1., 1.],

                          [0., 1.]])


# experience a weird bend in the texture

surf.plot(texture=tex)


开心每一天1111
浏览 211回答 1
1回答

月关宝盒

由于多边形数量少,看起来您有一些纹理失真。在我看来,你可以1)重新设计你的纹理坐标来“采样”纹理:... surf.t_coords = np.array([[0.2, 0.],                           [0.8, 0.],                           [1., 1.],                           [0., 1.]]) ...或2)增加顶点/三角形的数量,并相应地调整您的UV坐标。它应该减轻失真。
随时随地看视频慕课网APP

相关分类

Python
我要回答