Я пытаюсь получить триангулированный vtkPolyData
с участка mlab.contour3d
. Я использую mayavi
, потому что это, по-видимому, самый быстрый способ получить minimal surfaces, триангулированный правильно. Мне нужно это как vtkPolyData
, потому что я хочу сохранить его как .stl-файл.Convert mayavi mlab.contour3d plot to vtkPolyData
Вот MWE моего кода:
import numpy as np
from mayavi import mlab
def fun(x, y, z):
return np.cos(x) + np.cos(y) + np.cos(z)
x, y, z = np.mgrid[-1:1:100j, -1:1:100j, -1:1:100j]
contour = mlab.contour3d(x, y, z, fun)
mlab.show()
Что я получаю то из mayavi
является поверхностью, которая уже триангулирован и отображается с помощью VTK
(или tvtk
), поэтому она должна быть возможность получить vtkPolyData
оттуда. Но единственным способом, который я нашел до сих пор, является использование mlab.savefig(test.obj)
для экспорта .obj-файла (что плохо, потому что требуется время, чтобы сохранить файл каждый раз, когда открывается пользовательский интерфейс mayavi
) и снова импортировать этот файл, используя vtkOBJReader
, что дает мне vtkPolyData
Я хочу.
Кто-нибудь знает более прямой способ сделать это?
Редактировать: Чтобы уточнить мою проблему немного больше: я могу получить доступ к данным из визуализации, например. с mayavi.tools.pipeline.get_vtk_src()
, но он поставляется в форме vtkImageData
. Если кто-то знает способ конвертировать это в vtkPolyData
, это также будет решением.