1

mlab シーンといくつかの特性エディタを提示する特性と Mayavi スクリプトがあります。エディターは、描画メソッドを呼び出すことで、 surfacequiver3dおよび凡例 (スカラー LUT マネージャー) に表示されるデータに影響を与えます。変更するたびに、図がクリアされ、再描画されます。

Mlab 対話型ダイアログの例から学び、図をクリアして再描画せずに * を使用してデータを変更しますplot3dmlab_source.setupdate_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)

mysurfacequiver3d呼び出しが返すものは、それぞれ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

surface1)およびのデータ/ソースを変更するにはどうすればよいscalar LUTManagerですか?

2) 震えのデータ/ソースを正しく変更するにはどうすればよいですか?

quiver の値を変更しようとすると、 6 値の初期化子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])

この例では、は a をplot3d返し、mayavi.modules.surface.Surfaceそのmlab_sourceオブジェクトは amayavi.tools.sources.MLineSourceです。ドキュメントでMLineSourceを検索しても無駄ですが、外部的にはEnthought Tool Suite 3.2の結果が得られます。ツール スイートのドキュメントは最新ですか?

*self.plot、self.surface、self.quiver は として宣言されていvariable = Instance(PipelineBase)ます。PipelineBaseからインポートされmayavi.core.apiます。

4

1 に答える 1

2

あなたのコメントに基づいて:

に mlab ソースへの参照がないのは、mlab ソースsurfaceがないためです。あなたのモジュールは生のvtkソースだけで構成されており、mayaviはそれを純粋に喜んでレンダリングします。ただし、PolyData への参照を保持しているため、そこからスカラーを編集できます。( mlab.triangular_meshvtk PolyData を制御するために介在する TriangularMeshSource を導入しながら、 which を使用することもできます)。

でLUTにアクセスできますsurface.module_manager.scalar_lut_manager

また、コメントのように、ベクターのmlabレベルのソースにアクセスできるはずです。まだある場合、何が問題なのかわかりません。traitsui を使用しても効果はありません。問題はおそらく mayavi とオブジェクト モデル間の競合です。mayavi オブジェクトの特性タイプを に設定してみてくださいAny

于 2014-06-04T22:45:42.783 に答える