更改 mlab quiver3d 和 surf 数据源,而无需清除特征脚本中的数字



我有一个性状和Mayavi脚本,它显示了一个mlab场景和几个性状编辑器。编辑器通过调用我的绘图方法来影响surfacequiver3d和图例(标量LUT管理器)中显示的数据。每次更改都会触发一个清晰的图形并重新绘制。

借鉴Mlab交互对话例,plot3d *使用mlab_source.set更改数据,无需清除图形和重新绘制。在update_plot ():

if self.plot is None:
    self.plot = self.scene.mlab.plot3d(x, y, z, t, tube_radius=0.025, colormap='Spectral')
else:
    self.plot.mlab_source.set(x=x, y=y, z=z, scalars=t)

我的surfacequiver3d调用返回分别是mayavi.modules.surface.Surfacemayavi.modules.vectors.Vectors对象。Surface和LUTManager没有报告mlab_source: AttributeError: 'Surface'/'LUTManager' object has no attribute 'mlab_source'。Quiver3d报告mayavi.tools.sources.MGlyphSource

1)我如何改变我的surfacescalar LUTManager的数据/来源?

2)我如何正确地改变箭袋的数据/来源?

当我试图改变箭筒的值时,我得到一个TraitError: Cannot set the undefined 'u' attribute of a 'Vectors' object.,这让我感到困惑,因为我使用了六值初始化器。

if self.quiver is None:
    self.quiver = self.scene.mlab.quiver3d(xyz[:,0], xyz[:,1], xyz[:,2],
        velocity[:,0], velocity[:,1], velocity[:,2], 
        figure=self.scene.mayavi_scene, scale_factor = self.scale)
else:
    self.quiver.mlab_source.set(x = xyz[:,0], y = xyz[:,1], z = xyz[:,2],
            u = velocity[:,0], v = velocity[:,1], w = velocity[:,2])

在这个例子中,plot3d返回一个mayavi.modules.surface.Surface,它的mlab_source对象是一个mayavi.tools.sources.MLineSource。在文档中搜索MLineSource是没有结果的,但是在外部会产生Enthought Tool Suite 3.2的结果。工具套件文档是最新的吗?

*自我。情节,自我。表面和自我。箭袋被声明为variable = Instance(PipelineBase)PipelineBase是从mayavi.core.api导入的

根据您的评论:

surface中没有引用mlab源代码的原因是没有mlab源代码。您的模块仅由原始的vtk源组成,mayavi非常乐意将其完全呈现。然而,你保留了对PolyData的引用,所以你可以从中编辑标量。(你也可以使用mlab.triangular_mesh,它很可能做你想要的,同时引入一个中间的TriangularMeshSource来控制vtk PolyData)。

您可以使用surface.module_manager.scalar_lut_manager获得LUT。

你也应该能够得到mlab级别的源向量在评论中,我不知道是什么问题,如果仍然有一个。使用traitsui应该不会产生影响——问题可能是mayavi和对象模型之间的冲突。尝试将mayavi对象的trait类型设置为Any

相关内容

  • 没有找到相关文章

最新更新