vtk7.0.0が出たという記事を見た時、といってももう1年も前なのだと今気付いたが、分子のためのクラスがあることを知った。で、以前vtkで分子を表示するために複数個の球体を浮かべようと悪戦苦闘した記憶が思い起こされ、こういうものがあるなら使ってみたいと思った。
というわけでVTKを持ってくる。公式サイトからソースファイルをダウンロードし、解凍する。vtkはCMakeを使っているので、CMakeに慣れていれば簡単だ。
$ mkdir build
$ cmake ..
$ make
$ make install
特に何もしなければ、/usr/local
あたりにインストールされるので、最後のmake install
にはsudo
がいる場合がある。また、make
にはそこそこ時間がかかるので、-jN
とかのオプションをつけたほうがよい気がする。
さて、インストールが終わったので適当にサンプルプロジェクトを……と思ってwikiを見に行ったところ、VTK/Example/Cxxで検索したところmolecule
なるページは引っかからなかった。doxygen
には当然説明があるが、これを見てわかるほどVTKに親しくはない。というかHello World程度のことしかしていない上に、その中身をしっかりと覚えてはいない。
さて困った。ということでgithubのVTKのレポジトリでサンプルがないかとvtkMolecule
と検索したところ、テストコードが見つかった。テストコードは非常に良い。(少なくともリリース版なら)動作すると期待できるし、必要な一通りのコードは入っているはずだろう。
というわけで、VTK/Domains/Chemistry
を見に行こう。Testing
なるディレクトリがある。その中のCxx
に、動作することが期待できるコードが散らばっている。もちろん、これはテストコードなので、testMolecule.cxx
などはvtkMolecule
を作って正しくvtkAtom
を登録し、情報を保持できるかなどを確認するコードになっている。ユーザーに過ぎない私としては、もう少し統合テストに近いもの、例えばVTK中の他のものと同じく表示できるかなどのテストがほしい。
全部は見ていないが、例えばTestMoleculeMapperPropertyUpdate.cxx
などは描画させるのに使える。これを見る限り、Moleculeの使い方は、
- vtkMoleculeを作る
- Atomを追加していく(appendするとvtkAtomが帰ってくる)。原子番号と位置を指定する。
- さきほど帰ってきたvtkAtomを使ってBondを指定する(中にポインタを持っているとかだろうか)
- vtkMoleculeMapperにvtkMoleculeのポインタを渡し、表示方法を設定
- ActorにvtkMoleculeMapperのポインタを渡す
- …
まだ細々としたことが続くが、まあよしとしよう。このテストコードでは、vtkMoleculeMapper
の側で設定を変えた時、Renderし直しただけで追従できるかのテストのようなので、94行目で一度表示方法をball&stickからVDWに変更している。この部分は好みの問題なので、好きに設定するといいだろう。設定変更と再レンダリングはなくしてしまっても動く。
テストコードがちゃんと存在するプロジェクトは、何なら動くと期待してよいのかとか、どう動くべきだと思って作っているのかが、ほとんど内容を知らなくてもわかるのでありがたい。wikiが充実しないうちは、テストコードを眺めていろいろと試してみようか。