ゼロからはじめるParaView — [04]ParaVIEWから読み込んでみる(二次元分布スカラーデーター)
ParaView。今回は、二次元平面上に分布するスカラー値データーの表示です。
- 平面上にコンター表示させた後(Delaunay2D)、値を使って三次元表示グラフにします(WarpByScalar)。
- メッシュの分割を内装補完して、ポリゴンらしさを押さえた表示にもしてみます(LoopSubdivision)。
ParaVIEWは、入力形式の対応などを見るだけで、かなり充実していると言うことがうかがえると思います。しかし、お手軽に使おう、というずぼら人にとっては、これは非常に敷居の高いことです。綱渡りのように使うこともできるでしょうが、切羽詰まって追い込まれた状況で、不具合が生じたときには、基本のParaVIEWの特性を知っておく必要があるように思います。
そこで、CSV形式で記録された簡単なデーターを作って、試しておこうかと思いますが、さてさて、どうなるのでしょうか。。。
※現時点での疑問問題点
- ホントに二次元で座標は読めないのか?・・・読めそうですが未調査です。
- いじくってたらコンターが消えた!・・・surfaceやcolor の設定では復活しないのか?
- なんかメニューオプションの表示が不安定?・・・選択肢が反映されるタイミングがなんか微妙?
テキストファイル(ASCIIファイル)でデーターをはき出してしまうことはよくあることです。
その際の区切り文字にはいろいろ選択できますが、区切り文字を ” ‘ “(カンマ) にすれは、一応CSV形式として扱えます。日本語などの2バイト文字は ParaView では無難新国は避ける方がよいでしょう。
ParaView は、すでに前のトピックスでもあるように、基本的には大規模データーを扱うための可視化ツールです。したがって、入力するデーターが、従前のグラフrツールのような 2次元データー などというけちなことは考えていないようです。三次元空間中の空間ベクトルデーターの時間履歴データー、なんてお手ものなのです。
したがって、二次元平面上のスカラーデーター分布などというものは、端から相手にしていないようです。
そこで、2次元分布データーは、とりあえず第三軸を0とでもおいて、三次元空間座標にしておいてください。データー地租のものは、スカラーでもベクトルでも、フィルターは対応しているようです。
●入力ファイルの準備
まず、x, y, z の三次元空間座標を列挙して、その次にスカラー値を記述した CSV ファイルを作成します。
x, y, z, value
0, 0, 0, 4.2
1, 0, 0, 4.8
2, 0, 0, 5.6
のような感じのファイルです。今回は2次元平面上分布なので、 z はずべて 0 です。
●ファイルの読み込み
これを、 ParaView でcsvファイルとして読み込みます。
メニューバー、ファイルメニュー、開く、でファイルを指定して読み込みます。1行目に上記のように項目を記しているので、読み込み時のオプションで、「Have Header」にチェックを入れておきます。
これで、Applyボタンを押します。
うまくいくと、右ウインドウにファイルの中身にData Index がついて値が表示されます。
もしエラーが出ると、Pipeline Browser に赤いマークでエラーが表示されますが、詳細は不明です。ファイル操作で、カンマ区切りが認識されてなかったり、ヘッダーの状態が指定と異なっていたり、というあたりをチェックしてみてください。
●数値の物理量関連づけ
データーが読めたら、次はデーターの表示にかかわる数値と座標や物理量との関係の定義です。
TableToPoint フィルターを選択します。
フィルタープロパティズで、x Column, Y Column, Z Column に、データーを割り当てます。同じものが二つ重なったりするとエラーになるようです。だから二次元空間データーは使用できません。ヘッダーが指定されていると、ヘッダーがドロップダウンメニューから選択できるので、確認して空間座標を指定してください。
これで、Applyボタンを押します。
画面には、座標点の位置のみが三次元的に表示されるはずです。
もちろん今回は、平面上に表示されているはずです。
各座標を定義した「Propaties項目の下に、「Display」があります。ここから 「surface」を選択すれば、その下にさらにサブ項目が展開しますので、「Coloring」のプルダウンから、ヘッダー Value を選択します。
これで、Applyボタンを押します。
うまくいけば、カラーコンターの平面が表示されるはずです。
●立体表示
さらに「WarpByScalar」フィルターを選択します。
●パネル解像度の調整
ポリゴンの粗さも調整できます。細かくして表示を滑らかにするには、データー感を補完することになります。それが科学的に適性かどうかと言われれば、あんまりよいことではないので、適宜判断して使用する必要があります。
「Loop Subdivision」フィルターを適用して、オプションで細かさを調整します。
このフィルターは、コンターをワープ変換させる前に適用しないといけませんので、Table to PointフィルターとWarpByScalarフィルターの間に挿入する必要があります。
●出力の保存
結果のグラフを各種形式のファイルにエクスポートできます。Inkscapeで操作がしやすい svg 形式にも保存はできますが、gnuplot と少し似ているようで、座標軸等が操作(フィルター)ごとに上書きされているようです。座標軸の表題を操作してみると、下図のようにいくつもキャラクターが重なっています。文字をベクターに変換すれば、大きさも変更可能ですが、元の場所の背景には影が残ります。うーん。きっとオプションで対応は可能かも。背景は色指定はあるけど透明にできるのでしょうか・