Mayaviの概要

はじめに

Mayavi2は,3Dデータの簡単でインタラクティブな視覚化,つまり3Dプロットを提供します.これは次のように行われます.

  • ビジュアライゼーション内のすべてのデータとオブジェクトを対話的に操作するための,(省略可能)ダイアログ付きリッチユーザインタフェース.

  • Python のシンプルでクリーンなスクリプトインタフェースで,matlabや matplotlib ( mlab を使用した場合)に似た3Dビジュアル化機能やオブジェクト指向プログラミングインタフェースをすぐに使えるようになっています.

  • 学習を強制することなく, VTK の機能を活用します.

さらに,Mayavi2は,さまざまな方法でライブラリやアプリケーションに埋め込んだり, Envisage アプリケーション構築フレームワークと組み合わせてドメイン固有のツールを組み立てることができる再利用可能なツールであることを目指しています.

Mayavi2とは何ですか?

Mayavi2は3D科学データ可視化のための汎用クロスプラットフォームツールです.その機能は次のとおりです.

  • スカラー,ベクトル,テンソルのデータを2次元および3次元で視覚化します.

  • Pythonを使用した簡単なスクリプト機能.

  • カスタム・ソース,モジュール,データ・フィルタによる容易な拡張性.

  • 複数のファイル形式の読み込み: VTK (レガシーおよびXML),PLOT3Dなど.

  • 視覚エフェクトの保存.

  • レンダリングしたビジュアライゼーションをさまざまなイメージフォーマットで保存する.

  • mlab( mlab: 3Dプロット用のPythonスクリプト を参照してください.)を使用して科学的なプロットをすばやく行うための便利な機能.

前世代の Mayavi1 とは異なり,Mayavi2はスクリプト可能性と拡張性を念頭において一から設計されています.Mayavi2は,単独で使用できる mayavi2 アプリケーションを提供します.ただし,Mayavi2は,matplotlibやgnuplotと同様に,スクリプトのプロットエンジンとして使用することも,他のアプリケーションでインタラクティブなビジュアライゼーションを行うためのライブラリとして使用することもできます.また,他の Envisage ベースのアプリケーションにネイティブに埋め込むことを可能にする Envisage プラグインとして使用することもできます.

技術情報

Mayavi2は,VTKで使用されているものと同様のパイプラインアーキテクチャに基づく汎用視覚化エンジンを提供します.また,Mayavi2は,2D/3D科学データ視覚化用の Envisage プラグインも提供します.Mayavi2では,Inthought Tool Suite (ETS) が TraitsTVTKEnvisage の形式で使用されます.その機能の一部を次に示します.

  • Traits を最大限に活用するPython API.

  • Mayaviは,numpy_arraysでネイティブかつ透過的に動作します(これは TVTK を使ったおかげです).

  • MVC designが非常に簡潔なため,Mayavi-1よりもスクリプトが簡単です.

  • ソース,コンポーネント,モジュール,およびデータフィルタを追加して簡単に拡張できます.

  • Envisage plug-inを提供します.これは,次のことを意味します.

    • Mayaviの他のEnvisageプラグインを簡単に使用できます.たとえば,MayaviにはPythonシェルが埋め込まれています.これはEnvisageプラグインで,Mayaviに含めるには1行のコードが必要です.

    • Envisageベースのアプリケーションで簡単にMayaviを使用できます.したがって,どのような想定ベースのアプリケーションでも,mayaviプラグインを簡単に使用してスクリプト化し,データを視覚化することができます.

  • wxPython/Qt4ベースのGUI(Traits,PyFace,Envisageのおかげで).Mayaviソースで直接使用されるwxPythonまたはQt4コードはないことに注意してください.

  • 非侵入型の再利用可能な設計.wxPythonまたはQt4ベースのUIなしでもMayaviを使用できます.

注釈

以下のセクションでは,Mayaviが動作していることを前提としています.Mayaviのダウンロードとインストールについては,次のセクション インストール を参照してください.

Mayaviをアプリケーションとして使用しますか,それともライブラリとして使用しますか?

ユーザがMayaviを使用する主な方法は3つあります.

  1. mayavi2 アプリケーションを完全にグラフィカルに使用します.これについての詳細は Mayaviアプリケーションの使用 セクションにあります.

  2. 単純なPythonスクリプト,たとえば,Pythonスクリプトをnumpyと組み合わせて,Mayaviをプロットエンジンとして使用します. mlab スクリプトAPIはバッチ処理スクリプトでMayaviを使う簡単な方法を提供します.これについての詳細は mlab: 3Dプロット用のPythonスクリプト を参照してください.

  3. PythonからMayaviアプリケーションをスクリプトします.Mayaviアプリケーション自体は,強力で汎用的なスクリプトAPIを備えており,これを使用してニーズに合わせることができます.

    1. mayavi2 アプリケーションを使用しながらMayaviをスクリプト化して,タスクを自動化し,Mayaviの動作を拡張することができます.

    2. 独自のPythonベースのアプリケーションからMayaviのスクリプトを作成できます.

    3. Envisage などを使用して,さまざまな方法でアプリケーションにMayaviを埋め込むことができます.

    詳細については, Mayaviによる高度なスクリプト機能 の章を参照してください.

シーン,データソース,およびビジュアライゼーションモジュール:パイプラインモデル

Mayaviは, VTK のようなパイプラインアーキテクチャを使用します.ユーザーに関する限り,これは基本的に単純な階層構造になります.

  • データはMayaviにロードされ, data source に保存されます(ファイルを使用するか,スクリプトから作成します.).任意の数のデータ・ファイルまたはデータ・オブジェクトを開くことができます.データソースは,データを記述するリッチオブジェクトですが,データを視覚化する方法ではありません.

  • このデータはオプションで,データを操作する Filters を使用して処理され,可視化 :モジュール を使用して可視化されます.フィルタおよび modules には,アプリケーションのUIの Visualize メニューまたはパイプラインのコンテキストメニューからアクセスできます.また,Mayaviのスクリプト時にPythonオブジェクトとしてインスタンス化することもできます.

    データコンテナである data source と,それを見るために使用される視覚化ツールである modules とを区別する理由は,同じデータを見る方法がたくさんあるからです.たとえば,次のイメージはすべて,同じデータソースに異なる modules を適用して作成されています.

    volumetric_cut_plane volumetric_contour3d volumetric_volume_tweaked

  • すべてのオブジェクトは Scene に属します.これは,3D表示が実行される領域です.インタラクティブアプリケーションでは, File->New->VTK Scene メニューを使って新規シーンを作成することができます.

Mayaviへのデータのロード

Mayaviは科学データ視覚化ツールです.データを使用可能にするには,主に次の2つの方法があります.

  1. VTKレガシーまたはVTK XMLファイルなど,サポートされているファイルフォーマットでデータを保存します.VTKフォーマットの詳細については, VTK file formats を参照してください.これらのファイルは,メニューを使用してインタラクティブアプリケーションにロードできます.

  2. numpy_arraysまたはその他のシーケンスを使用してTVTKデータセットを生成します.これは,例えば mlab ( creating data sources with mlab または単純な3Dプロット機能 numpy arrayの3Dプロット関数 を参照してください.)のようなスクリプトAPIを使って行うのが最も簡単です.

あるいは,VTKデータ構造やファイルを作成してより深く理解したい場合には,一般的なデータセットについての詳細な情報は Mayaviでのデータ表現 の章を参照してください.