MayaviをPythonのスクリプトで起動したい(2)
streamlineを描くときの設定が不明な点が多い。ドキュメントが少なすぎるのだけど。ソースが最良のドキュメントか...。
こんな感じの雛型を使って実際に描いてみる。
from enthought.mayavi.scripts import mayavi2 from enthought.mayavi.sources.vtk_file_reader import VTKFileReader from enthought.mayavi.modules.streamline import Streamline def setup_data(fname): mayavi.new_scene() r = VTKFileReader() r.initialize(fname) mayavi.add_source(r) return r def streamline(): o = Outline() mayavi.add_module(o) s = Streamline(streamline_type='tube') mayavi.add_module(s) s.stream_tracer.integration_direction = 'both' s.seed.widget = s.seed.widget_list[1] s.seed.widget.set(point1=(-10,-5,2), point2=(-10,5,2)) s.seed.widget.resolution = 20 s.ribbon_filter.width = 0.15 @mayavi2.standalone def main(): import enthought.mayavi fname = 'xxx.vtk' r = setup_data(fname) streamline() if __name__ == '__main__': main()
streamline関数の中をいろいろ変えて試してみる。線のタイプとか本数とか変えてみたい。
線のタイプをtubeにした場合の設定方法。seed(線の出発点)は線で与えている。
o = Outline() mayavi.add_module(o) s = Streamline(streamline_type='tube') mayavi.add_module(s) s.stream_tracer.integration_direction = 'both' s.seed.widget = s.seed.widget_list[1] s.seed.widget.set(point1=(-10.0,-5.0,2.0), point2=(-10.0,5.0,2.0)) s.seed.widget.resolution = 20 s.tube_filter.radius = 0.05 s.seed_visible=False s.module_manager.scalar_lut_manager.show_scalar_bar = True
線のタイプをribbonにした場合の設定方法。ついでにseedの与え方を変えてみる。よく分からないが、平面で与えているみたいに見える。
s = Streamline(streamline_type='ribbon') mayavi.add_module(s) s.stream_tracer.integration_direction = 'both' s.seed.widget = s.seed.widget_list[2] s.seed.widget.set(center=(0.0,0.0,2.0)) s.seed.widget.resolution = 20 s.ribbon_filter.width = 0.15 #s.seed_visible=False #s.module_manager.scalar_lut_manager.show_scalar_bar = True
今度もseedの与え方を変えてみる。resolutionを指定することはできない。1点だけを与えているのか?
s = Streamline(streamline_type='ribbon') mayavi.add_module(s) s.stream_tracer.integration_direction = 'both' s.seed.widget = s.seed.widget_list[3] s.seed.widget.position=(-10.0,0.0,2.0) #s.seed.widget.resolution = 20 s.ribbon_filter.width = 0.15 #s.seed_visible=False #s.module_manager.scalar_lut_manager.show_scalar_bar = True