こんばんは、蓬莱です!
何だか今日はかっこいいサムネイルですね! 今日はparaviewというツールについてお話しするという、すごく真面目な記事になります。
paraviewを学びたいという入門者さんに向けて、「VTKファイルを使って自分の好きな形を作る」というテーマでお送りしたいと思います!
こんな人に読んでほしい!
- paraviewでファイルを読み込む方法は分かったけど、肝心のファイルの作り方がわからなくて困っている人
- VTKのフォーマットは分かるけど基本的な図形しか作れず、自分の作りたい形を作れない人
以上のような人たちが、VTKファイルの中身を理解しつつ、自在に形を作れる術を学べるように記事をお送りしたいと思います!
この記事を書こうと思ったきっかけ
この記事を書こうと思ったきっかけは、自分も読者さんと同じように色々と調べて悩んだからです。
ご存知の通り、paraviewはモデルや解析結果を可視化するためのツールです。誰でもダウンロードして使用できる無料ツールであり、多くの研究で利用されています。vtkは、paraviewで可視化する際のファイルのことですね。
ここで驚くべきことなのですが、幅広く利用されている人気ツールのはずなのに、paraviewとvtkの情報が日本にはあまり無いのです。入門者けの記事なんて、多分2つくらいしか存在していないと思います。
そこで、自分が入門者向けの記事を作ろうと考えたのです。この記事を学べば、画像のようなくだらない形から、サムネイルのような複雑な形まで様々な形状を作成するとができますよ!
日本にない情報
不足している情報が1つ、補足すべき情報が1つあります。まず今回のテーマである「作りたい形を作る」という情報が、日本には存在しません。
百歩譲って、VTKファイルの中身について説明しているサイトは多数見られます。
例えば、PENGUINITIS様の「VTKファイルフォーマット」。ここでは例図を挙げて詳しい書き方が述べられていますが、簡単な平面から立方体までの作り方しか書かれていません。この記事だけを見て、自在に形を作るのはなかなか困難です。
補完すべき情報と言うのは、Pythonについてです。paraview関連の記事を調べると、いろいろなサイトで当たり前のようにPythonのコードを使っている記事が多く見られます。
別にPythonを使うのは問題ないのですが、この状況はparaview入門者に「Pythonユーザー以外はparaviewを使えないのか」と、誤解を与えてしまう危険性があります。
形を作るだけならPython以外のプログラムでも代用できるので、この情報も記事後半で補完したいと思います。
VTKフォーマットの勉強
ファイルを読み込んで図形を描写するためには、VTKファイルを作成しなければなりません。その作り方と使い方を、レベル別に分けて説明していきます。
レベル1 VTKのフォーマットを知る
こちらのコードを読み込むと、paraviewは右図のような平面を表示してくれます。この例を使って、VTKファイルの構造を理解しましょう!
- 1行目:バージョンを選択。古すぎなければ何でも良い。
- 2行目:適当なファイル名を入れる欄
- 3行目:手書きでファイルを作成するため、ASCIIを入れる。
- 4行目:データの形式を定義する。POLYDATA以外の形式もありますよ。
- 5行目:変えるのは4の部分のみ。6行目以降に定義する点の数を書きます。
- 6行目以降:5行目で入力した数字だけ、点の座標を書いていきます。
率直にいうと1~4行目までは何も変える必要はありません。他の方法(例えばポリゴンではなくセルデータで表示したい)を試したいとき、これらの行を変える必要があります。
点の定義だけ捕捉します。下図のように、左からX座標,Y座標,Z座標の順番で数値を入れて点を作ります。
今回はただの平面なので、Z座標はすべて0です!
さて、後半の2行を説明しましょう。
- 11行目:1と5の部分を変えます。1はポリゴンの総数、5は12行目以降に書いた数字の総数です。
- 12行目:最初の数字は「何点でポリゴンを作るか」で、それ以降の数字はどの点を使うかを記載します。
最後の行はなかなか面倒なので捕捉します。
四角形のポリゴンを作りたいのであれば4点が必要なはずです。そのため、最初の数字は4に指定します。三角形であれば3を、五角形であれば5を最初に入力すればOKですね。
使う点についてですが、時計回りか反時計回りにして定義しなければなりません。詳しくは画像をご覧くださいませ。
点の番号についてですが、6行目以降から定義した順につけられています。そして12行目では、(0,1,3,2)と時計回りに設定できています。
時計回りなら何でもいいので(3,2,0,1)としても良いですし、(0,2,3,1)の反時計回りでも大丈夫です!
VTKフォーマットの説明は以上で終了です! 構造さえ分かれば意外と簡単かもしれませんね!
レベル2 立方体を作ってみよう
ここまででVTKの構造が分かり、平面のポリゴンを表現することができました。次は立体を表示することを目標にします。
……一気に難易度が高くなったような気がしますが、実はレベル1を習得していれば凄く簡単です!
まずはとりあえず、1面を増やすやり方を覚えましょう。今まで通り新たな点を作成し、新たなポリゴンデータの指示をするだけでできます。
平面の左側に、新しいポリゴンができましたね!
新しい点も新しいポリゴンの指示も、今まで作ったものの後ろに置けば難なく完成します。点やポリゴンを増やした場合は、5行目の点の数と13行目のPOLYGONS以降の数字を変えることをお忘れなく!
この調子で、あと4面追加しましょう!
素晴らしいですね!
ここまでの内容を駆使すると、下記のような四面体なども作れますよ!
レベル3 簡単な図形をたくさん配置してみよう
さて、ここまでで簡単な立方体を作成することができました。最後は、それらの図形を組み合わせて色々な形や配置を作ってみましょう。
いよいよ最終レベルになりますが、レベル2と変わったことはやりません。ちまちまと点とポリゴンの情報を増やしていくだけで、好きな形や配置を表示することができます。
例として、レベル3で作った立方体の横に新しい立方体を作ってみましょう。
コード的にはだいぶ長くなりましたね。しかしながら、結局は同じことをやっているのだということが分かると思います。
新しく作ったブロックが少しだけ高いのは、Z座標を変えているからですね。
駄目押しでもう1ブロック追加してみました。ここまで理解できれば、どんな形でも作れそうですね!
面倒くさいことはプログラムで解決!
さて、これにてVTKを使って自分の作りたい形を作れるようになりました。
しかし、ここら辺で皆さんは気付いたことでしょう。VTKファイルを作るのが面倒くさすぎるということに…。
レベル3の最後に3つのブロックを並べましたが、あんな初歩的な形でさえ50行目まで到達しました。こんなものはまだまだ序の口で、複雑な形の場合は平気で10000行のコードになることさえあります。こんなのは手打ち作業じゃできませんよね。
そこで使えるのが、Pythonなどのプログラムです。
pythonが使えなくてもparaviewは使える
paraviewやvtkの使い方を検索してサイトを見ると、当たり前のようにpythonのコードが書かれています。そういう現実を見ると、作りたい形のVTKファイルをプログラムで作ってparaviewで表示するためには、pythonができなければならないと考えがちです。
1つだけ先に知っておいてほしいことが、形を作るだけならPython以外のプログラムを使用しても構わないということです。
代表的なC言語のように、コードを輩出できるプログラムを習得していれば何の問題ありません。
自分が使っているのは統計用のプログラムR言語ですが、形状を作りだすのは問題なくできております。少なくとも、冒頭のサムネイルや最後にお見せする画像のような複雑な形を描写することはできています。
なんでPythonを使うの?
他のプログラムでも別にいいとは言え、多くのparaviewユーザーがPythonを採用しているのはやはり気になるところです。
paraviewとセットにして使う言語にPythonが採用されている理由は、オリジナルのアニメーションが使えるからだと思います。paraviewには既存のアニメーションが配備されていますが、よりオリジナルのアニメーションを設定したい場合はPythonを使うようです。
あと、もしかしたらparaview上で解析をする場合、Python以外ではできないかもしれません。ここはparaview初心者である自分の間違った意見かもしれませんから、頭の隅にでも入れておいてくれれば幸いです。
最後に:まとめ
R言語でも、複雑な地形を表現できます!(112万行のコード)
ここまで読んでくださり、ありがとうございました! VTKの内容さえ理解していれば、本当にいろいろな形を作ることができそうですね!
本当に長い記事になりましたので、最後にまとめを残しておきます。pythonができないからと諦めず、paraviewライフを送ってくれる人が多くなったら幸いです!
- 点の定義とポリゴンの指示ができれば、自分の作りたい形を作ることができる。
- ファイル出力ができるプログラムであれば、Python以外の言語が使える。
- ただし、オリジナルのアニメーションや解析はPython以外ではできない。