Текстура на поливаты пивиста (трапеции) выглядит изогнутой по диагонали - PullRequest
1 голос
/ 18 марта 2020

У меня есть многоугольник pyvista (в частности, равнобедренная трапеция ), и я хочу наложить на него текстуру. Проблема в том, что первоначально параллельные линии странно изогнуты по диагонали трапеции. Есть ли способ предотвратить это? Я также пока не знаю, стоит ли решать эту проблему на уровне pyvista, vtk или opengl. Ниже приведен минимальный рабочий пример для воспроизведения проблемы.

Исходная текстура: Original texture Ожидаемый результат (более или менее, речь идет не о яркости, а о линиях): Expected outcome Результат / фактический результат кода ниже: enter image description here

Код для воспроизведения результата:

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 голос
/ 18 марта 2020

Похоже, что у вас есть искажение текстуры из-за низкого количества полигонов. На мой взгляд, вы могли бы 1) переделать ваши текстурные координаты для сортировки "образца" текстуры:

...
surf.t_coords = np.array([[0.2, 0.],
                          [0.8, 0.],
                          [1., 1.],
                          [0., 1.]])
...

enter image description here

или 2) увеличить количество вершин / треугольников и соответственно адаптировать ваши UV-координаты. Это должно смягчить искажения.

...