VTK のインストール(FreeBSD の場合)
このページでは,FreeBSD(14.x, 15.x で確認)での VTK 9 のインストール手順と, サンプルプログラムのビルド・実行手順を説明する.
* Linux での手順は,別のページで説明している.
前準備
システムの更新
「FreeBSD システムの更新,ポーツコレクションの維持更新」 のページを参考に,次のことを行っておく.
- FreeBSD のセキュリティパッチの適用(
freebsd-update fetch install) - パッケージの更新(
pkg update,pkg upgrade) - ポーツからインストールする場合は,ポーツツリーの取得・更新(git を用いる.
git clone https://git.FreeBSD.org/ports.git /usr/ports,更新はgit -C /usr/ports pull)
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