我正在尝试提取由Mayavi中的多个轨迹/线组成的数据集的横截面视图。使用scalar_cut_plane,我可以设置和查看数据集的管轮廓,但是如何访问/提取剖面对象中显示的内容以在其他地方进行操作?最终,这将生成一个网格以填充试管的横截面,然后将其绘制在另一个二维场景中。
我的简化代码是:
from mayavi import mlab
import numpy as np
from tvtk.api import tvtk
"generate data"
size = 50
"plot data"
fig = mlab.figure(size=(800, 600), bgcolor=(1, 1, 1), fgcolor=(0, 0, 0))
ap = tvtk.AppendPolyData()
for idx in range(size):
x, y = np.random.uniform(size=2)
s0, s1, s2 = np.random.uniform(size=3)
src = mlab.plot3d([x, x+0.1, x], [y, y+0.1, y], [0, 0.5, 1], [s0, s1, s2],
tube_radius=0.005, tube_sides=10, opacity=0.75, figure=fig, vmin=0, vmax=1)
fig.remove_child(fig.children[0])
data_out = src.module_manager.source.get_output_dataset()
ap.add_input_data(src.module_manager.source.outputs[0].output)
ap.update()
surf = mlab.pipeline.surface(ap.output, figure=fig)
surf.visible = False
vcp = mlab.pipeline.scalar_cut_plane(ap.output, plane_orientation='z_axes', figure=fig)
outline = mlab.outline(surf, figure=fig)
mlab.show()