Текстура на pyvista polydata (трапеция) выглядит криво по диагонали.
У меня есть многоугольник Pyvista (в частности , равнобедренная трапеция), и я хочу применить к нему текстуру. Проблема в том, что изначально параллельные линии странно искривлены по диагонали трапеции. Есть ли способ предотвратить это? Я также пока не знаю, следует ли решать эту проблему на уровне pyvista, vtk или opengl. Ниже приведен минимальный рабочий пример для воспроизведения проблемы.
Исходная текстура: Ожидаемый результат (более или менее, дело не в яркости, а в линиях): Результат / фактический результат кода ниже:
Код для воспроизведения результата:
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)
1 ответ
Похоже, у вас есть искажения текстуры из-за малого количества полигонов. На мой взгляд, вы могли бы 1) переделать координаты текстуры, чтобы создать своего рода "образец" текстуры:
...
surf.t_coords = np.array([[0.2, 0.],
[0.8, 0.],
[1., 1.],
[0., 1.]])
...
Или 2) увеличьте количество вершин / треугольников и соответствующим образом адаптируйте свои UV-координаты. Это должно уменьшить искажение.