VTK のインストール(FreeBSD の場合)

VTK(Visualization Toolkit)は, 3次元コンピュータグラフィックス,画像処理,可視化のライブラリである. VTK は C++ のクラスライブラリであり,Python, Java, Tcl/Tk のインタフェースを持つ.

このページでは,FreeBSD(14.x, 15.x で確認)での VTK 9 のインストール手順と, サンプルプログラムのビルド・実行手順を説明する.

* Linux での手順は,別のページで説明している.

前準備

システムの更新

「FreeBSD システムの更新,ポーツコレクションの維持更新」 のページを参考に,次のことを行っておく.

VTK のインストール手順

パッケージによるインストール

FreeBSD の VTK は math/vtk9 という単一のポーツ/パッケージにまとめられている. かつて存在した vtk-data, vtk-examples, vtk-headers, vtk-java といった分割されたポーツは,現在は存在しない. パッケージでインストールする場合は,root 権限で次を実行する.

pkg install vtk9

このパッケージには,共有ライブラリ,ヘッダファイル,CMake の設定ファイル, 既定で Python バインディングと Qt 5 サポートが含まれる.

ポーツによるインストール

ビルドオプション(Python バインディング,Qt 5,Java,Tcl/Tk,OpenMPI,EXAMPLES など)を選ぶ場合は, ポーツを用いる.root 権限で次を実行する. make config でオプションを選択し,make install clean でビルドとインストールを行う.

cd /usr/ports/math/vtk9
make config
make install clean

ビルドには devel/cmake が必要であるが,これはポーツの依存関係として自動的にインストールされる. cmake を個別にインストールする場合は次を実行する.

pkg install cmake

サンプルプログラムのソースとデータの入手

VTK 9 では,サンプルプログラムのソースコードとテスト用データは VTK 本体のパッケージに含まれない. VTK のダウンロードページ から, ソースコードのアーカイブ(VTK-9.6.2.tar.gz)と, データファイルのアーカイブ(VTKDataFiles-9.6.2.tar.gz)を取得して展開する.

cd /tmp
fetch https://vtk.org/files/release/9.6/VTK-9.6.2.tar.gz
fetch https://vtk.org/files/release/9.6/VTKDataFiles-9.6.2.tar.gz
tar xzf VTK-9.6.2.tar.gz
tar xzf VTKDataFiles-9.6.2.tar.gz

データの展開先のディレクトリ構成はバージョンによって異なる. これから使用する headsq のデータの場所は,次のコマンドで確認する.

find /tmp -type d -name headsq

* 環境変数 VTK_DATA_ROOT は VTK 5 系までで使われていたものである. VTK 9 では使用せず,データのパスはプログラムのコマンドライン引数で与える.

VTK サンプルプログラムのテスト実行

多数のサンプルプログラムのうち Medical をビルドし,実行する. ビルドには cmake を使用する. -DCMAKE_PREFIX_PATH=/usr/local により, パッケージでインストールした VTK の CMake 設定ファイルが検出される.

cd /tmp/VTK-9.6.2/Examples/Medical/Cxx
cmake -S . -B build -DCMAKE_PREFIX_PATH=/usr/local
cmake --build build

VTK が検出されない場合は,CMake 設定ファイルのあるディレクトリを次のコマンドで調べ, -DVTK_DIR=(調べたディレクトリ)を cmake に指定する.

pkg info -l vtk9 | grep vtk-config.cmake

ビルドされた実行ファイルは build/bin の下に置かれる. 先ほど確認した headsq ディレクトリの下の quarter を引数に与えて実行する.

./build/bin/Medical1 /tmp/VTKDataFiles-9.6.2/Data/headsq/quarter

Medical1 は,連番の画像 quarter.1〜quarter.93(1枚が 64x64 画素,16ビット,リトルエンディアンの raw データ)を読み込み, 画素値 500等値面(皮膚の表面に相当する)を生成して表示する. データの範囲を示す枠線も同時に表示される.

* マウスを使って,回転や拡大縮小ができる.

* ソースファイル Medical1.cxx の 「skinExtractor->SetValue(0, 500);」を「skinExtractor->SetValue(0, 1200);」と書き換え, 再度 cmake --build build でビルドすると, 画素値 1200 の等値面(骨に相当する)が表示される.

今度は Medical2 を実行する. Medical2 は,同じデータから皮膚と骨の等値面を生成し,半透明表示と断面画像を組み合わせて表示する.

./build/bin/Medical2 /tmp/VTKDataFiles-9.6.2/Data/headsq/quarter