新しく環境を整えてVTKのビルドをしたら昔と同じ部分で躓いたのでその備忘録。
こういった記事を書くのは初めてなので不備がありましたら教えていただけると幸いです。
やること
今回はGPU付きパソコンなのでcuda設定しつつVTK最新版インストールから確認まで
- 最新版VTM9.2のインストール
- cuda用設定
- C++,python用ビルド
- C++,cmake設定確認
- python 確認
失敗したこと
最初に今回の失敗をまとめる
- cmakeのバージョン
何も考えず一番上のをダウンロードしたら安定版ではなかったらしくエラーが出た?らしい。検証できなかったため本当にそうかどうかは不明。 - VTK9用のcmakeファイル設定
VTK8までとは異なりVTK9ではautoinitの項目が必要とのこと。
あらかじめ必要なもの
- cmake安定版
- VisualStudio
- python
インストール
ダウンロード
VTK公式サイトからダウンロード。今回(22/10/27現在)は最新版のsouce VTK-9.2.2.tar.gzを選択。ダウンロードしたら適当な場所に展開。C直下のほうがいいとのことなのでとりあえずC:\lib\VTKに展開。
Cmake
参照先
展開したVTKをCmakeでビルドする。VTKフォルダ直下にbuildフォルダを作成してcmakeにいれる。cmakeの参照先はこんな感じ。
- source :C:/lib/VTK-9.2.2
- binaries :C:/lib/VTK-9.2.2/build
設定後、configureボタンを押し利用するVisualStudioを決定する。そうすると新しい設定項目が赤枠で出てくるので設定したい項目を変更する。前回はここcmakeでエラーが出た。原因は安定版じゃない最新版cmake**-rc2をインストールしていたことだった。何も考えずに一番上ものをインストールしてはいけない…
Cmakeの設定
今回の設定項目はこんな感じ。ここは各自設定する。
Name | Value | 説明 |
---|---|---|
CMAKE_CXX_MP_FLAG | ✓ | コンパイルの並列化 |
CMAKE_INSTALL_PREFIX | C:/lib/VTK-9.2.2/install | dllとかの作成先 |
VTK_USE_CUDA | ✓ | cudaの利用 |
VTK_WRAP_PYTHON | ✓ | python用のbuild |
設定したらもう一度configureボタンを押す。今回の場合はpythonの参照先などが新たに追加されたので確認。また、変更箇所があった場合は改めてconfigureボタンを押す。
Generate->Open Project
まぁまぁ時間がかかる。うまくいったらプロジェクトを開く。
VisualStudioビルド
VisualStudioが起動したら、以下の流れでビルド。これまた時間がかかる。
- 設定をDebugからRelease
- ALL_BUILDをビルド
- INSTALLをビルド
うまくいったら CMAKE_INSTALL_PREFIXで設定したフォルダ(C:\lib\VTK-9.2.2\install)に以下のフォルダが生成されている。
- bin
- include
- lib
- share
できていたらひとまずビルドは終了。
パス設定
環境変数にインストール先のフォルダを登録。
変数 | 参照先 |
---|---|
path | C:\lib\VTK-9.2.2\install\bin |
VTK_DIR | C:\lib\VTK-9.2.2\install |
pythonで使うためにパスを登録。
python用ファイルは、%{VTK_DIR}\bin\Lib\site-packageにあるのでこれでpthファイルを作成。
C:\lib\VTK-9.2.2\install\bin\Lib\site-packages
作成したらcmakeの設定で確認したpythonの参照先のsite-packagesに移動。自分の場合**\Python38\Lib\site-packagesに移動した。
動作確認
C++
折角なのでcmakeで動くように設定する。
cmake_minimum_required( VERSION 3.10)
#create project
project(solution)
add_executable(project VTK_test.cpp)
find_package(VTK REQUIRED)
target_link_libraries(project ${VTK_LIBRARIES})
target_include_directories(project SYSTEM PRIVATE ${VTK_INCLUDE_DIRS})
# autoinitがないとdllが見つかりませんエラーが発生する
vtk_module_autoinit(TARGETS project MODULES ${VTK_LIBRARIES})
VTK9ではRenderingContextOpenGL2の影響で正しくコンパイルできない(dllが見つかりません)となるのでvtk_module_autoinitが必要1。autoinitするのはRenderingContextOpenGL2だけでも問題なかった。前回も今回もここの修正に時間がかかった。
サンプルプログラムは@MusicScience37 さんの記事 を参照.
ちょっと粗めの球をぐりぐりできればOK
Python
こちらは普通にimport vtkでよい。
こちらもサンプルプログラムは@MusicScience37 さんの記事 を参照.
ちょっと粗めの球をぐりぐりできればOK
参考
今回の作業は以下のサイトを参考に執筆しました。とても助かりました。
Visualization Toolkit (VTK) のインストール on Windows, Visual Studio
4. VTKをPythonで動かす --- 3Dイメージ可視化に向けて
VTK:discourse"Can’t build VTK sample project: Missing module"