3905

チュートリアルフリーの可視化ソフトとして今日広く利用されている ParaView の使い方についてその初歩の初歩を解説します。前号では主として固体の微小変形解析およびモード解析に際して出力すべき Legacy VTK ファイルの内容とそれを ParaView で開いた後の便利な可視化方法について解説を行いました。最終回となる本号では自作の FEM ソフト等の結果ファイルを XML 形式の VTK ファイル（VTK XML ファイル）で出力して Paraview で可視化するための開発環境の整備方法とコーディング例について解説を行います。ParaView 関連の書籍およびウェブ上にある ParaView の操作方法に関するドキュメント類と併せてお読みください。

ParaView 超入門 其の三
大西 有希
1

はじめに

本稿はフリーの汎用可視化ソフトである「ParaView」の超入門チュートリアルの第三弾（最終回）です。第一弾の前々号（Vol. 23, No. 4）および第二弾の前号（Vol. 24,No. 1）をご覧になっていない方はまずそちらからご覧になることをお勧めします。
本チュートリアルは主に自分で FEM などのコードを書いている方向けに自作コードの解析結果を ParaViewでとりあえず可視化できるようになることを目指して
い ま す。 第 一 弾 で は ParaView に 読 み 込 ま せ る Legacy
VTK ファイル形式の基本的なフォーマットを中心に解説しました。第二弾では固体の微小変形解析およびモード解析に際して出力すべき Legacy VTK ファイルの内容とそれを ParaView で効果的に可視化するための手順について解説しました。第三弾の本号では締めくくりとして XML 形式の VTK ファイル（VTK XML ファイル）を自作 FEM ソフト等の結果ファイルとして書き出すための C++ 開発環境の整備方法とコーディング例について解説します。
2章では Legacy VTK 形式と VTK XML 形式の違いについて簡単に説明します。3章では VTK ライブラリを静的リンクで利用するためのライブラリのビルド方法を具体的に示します。4章では VTK XML ファイルを書き出す C++ のコード例をステップ・バイ・ステップで紹介し、最終的には LZMA で圧縮された非構造格子のVTK XML ファイル（拡張子 vtu）を出力できる様になる所まで順に解説します。

2

Legacy VTK と VTK XML の使い分け

本稿の本題である VTK XML の話に移る前に、VTKファイルの使い分けについて簡単に説明したいと思います。第一弾で少しだけ触れましたが、ParaView での可視化に頻繁に使われる VTK ファイル形式には様々な種 類 が あ り ま す。 そ の 中 で 一 番 大 き な 分 類 分 け が「Legacy VTK 形 式」と「VTK XML 形 式」の2種 類 で す。
それぞれ下記の様な長所と短所があるので上手く使い分けると良いでしょう。
● Legacy VTK 形式➢
長所：フォーマットが理解しやすいため、ファイル自体の可読性が高い。よって、VTK ライブ
ラリが無い任意の言語で簡便に利用可能。
➢短所：圧縮や並列化等の機能が無いため、大規模モデルの可視化は困難。
プログラミング初学者に向いているだけでなく、短いコードやスクリプトならびにコードのデバッグでの利用に適しています。
● VTK XML 形式➢
長所：圧縮や並列化等の機能が充実しているた
め、大規模モデルの可視化に対応。
➢
短所：フォーマットが難解なため、ファイル自体の可読性が低い。よって VTK ライブラリの利用が実質的に必須。
C++ か Python の経験がある方が大規模モデルの可視化を行う場合に適しています。
つまり、Legacy VTK 形式ではファイルサイズや可視化速度の面で不満が出て来たタイミングで VTK XML形式に切り替えるのが良いのではないかと思います。
また、第一弾の記事で紹介した Python スクリプトなどを使えば両フォーマットを簡単に変換することが可能なので、それらも併用するとより便利です。

筆者紹介
おおにし ゆうき
2005年東京工業大学大学院情報理工学研究科博士課程修了、みずほ情報総研株式会社を経て、現在、東京工業大学工学院助教。固体の超大変形解析、腐食や電着塗装などの電気化学解析、熱／光インプリントのプロセス解析などの研究に従事。

Vol.24, No.2 2019（23）

続きは Web で
日本計算工学会誌「計算工学（Vol.24, No.2）」HP:
http://www.jsces.org/activity/journal/

チュートリアル

3

ParaView 超入門 其の三

静的リンク可能な VTK ライブラリのビルド

VTK は修正 BSD ライセンスで配布されているため、VTK を使用した自作プログラム等をバイナリで配布することが可能です。また、Linux をお使いであれば大抵のディストリビューションには VTK のパッケージが用意されているのでインストールは簡単です。ただし、静的（static）リンクが可能なライブラリファイルは用意されていない事が多い様です。従って、単体で動作する実行ファイルを作るためには VTK の静的ライブラリを自前で用意しなければなりません。そこで本稿ではVTK をソースからコンパイルすることで静的ライブラリを構築する方法を本題の前に解説したいと思います。
図1

3.1 VTK ソースコードの入手
VTK のウェブページから最新のソースコードをダウンロード [1] します。本稿執筆時点では8.2.0が最新の安定版ですので、VTK-8.2.0.zip をダウンロードしたものと し て 話 を 進 め ま す。 な お、LZMA に よ る 高 効 率 な
データ圧縮は本バージョンから正式に使用可能となった新機能ですので、これ以前のバージョンを使用中の方は是非最新版にアップデートされることをお勧めします。
3.2 Linux 上での VTK のビルド
一 通 り の 開 発 環 境（gcc, g++, cmake ほ か）が イ ン ス
トールされた Linux 上であればコンパイル作業は難しくありません。VTK のウェブページページにも手順が示されている [2] ので参考になると思います。ここでは、
VTK-8.2.0.zip がホームディレクトリにダンロードされており、~/local 以下で作業とインストールを行うものとして解説します。
まず、ccmake 実行までのコマンドは次の通りです。
-------------------% mkdir ~/local% cd ~/local% unzip ~/VTK-8.2.0.zip% cd VTK-8.2.0% mkdir build% cd build% ccmake ..
-------------------上手く行けば、上記を打ち終わった時点で ccmake の設定メニュー画面（図1参照）が表示されているかと思います。
続いて、「Press [c] to conﬁgure」と画面下側に出ているので [c] を押します。完了すると画面上側に様々なオプション選択項目が表示されると思います。ここから先は利用者のニーズによって変更すべきオプションが変わって来るのですが、ここでは ParaView で可視化させるための VTK XML ファイルを吐き出す自作プログラムを作ることにフォーカスします。変更するプションは以下の通りです。
計算工学VTK-8.2.0に対する ccmake 設定作業の初期画面●「BUILD_SHARED_LIBS」を OFF●「CMAKE_BUILD_TYPE」を Release●「CMAKE_INSTALL_PREFIX」を ../../（“~/” や “$HOME” は使用できないので注意）●「VTK_Group_Rendering」を OFF●「VTK_RENDERING_BACKEND」を None
この時点で画面は図2の様になっていると思います。

図2

VTK-8.2.0に対する ccmake 設定作業の途中画面（アドバンスモード設定前）

さらに [t] でアドバンスドモードに入った後に以下を設定します。
●「VTK_USE_64BIT_IDS」を OFF（64bit Integer を使う方は ON のままで良い）●「VTK_USE_X」を OFF
以上の設定変更が済んだら再度 [c] を押します。さらにもう一回 [c] を押すと、画面下側のメニューに「Press [g]to generate and exit」が現れる（図3参照）ので [g] を押して設定を終了します。
最後に make（マルチコア環境の方は make –j4など）とmake install を実行します。以上で VTK のビルドとインストールは完了です。ただし、~/local/lib64/ を見ると出来上がった libvtk*.a という名前のファイルが大量にあることが確認出来ます。それぞれの自作コードに合わせてリンクする .a ファイルを選択しても良いのですが、多数の .a ファイルを Makeﬁle 等に書き並べるのはやや面倒です。

（23-2）

Vol.24, No.2 2019

チュートリアル

ParaView 超入門 其の三-------------------set sources=
for /f "usebackq delims=" %%a in (`where /r .
vtk*.lib`) do ( call :add %%a )lib /out:libVTK-8.2.lib %sources%
cmd /k:add
set sources=%sources% %1-------------------成功すると「libVTK-8.2.lib」という静的リンク可能な単一の VTK ライブラリが出来上がります。使用した vtk*.
lib ファイルは消しても残してもどちらでも構いません。
図3

VTK-8.2.0に対する ccmake 設定作業の最終画面（アドバンスモード設定後）

そ こ で（こ こ か ら は 完 全 に 自 己 流 で す が）全 て のlibvtk*.a フ ァ イ ル を ひ と つ に ま と め て し ま い ま す。
アーカイバ（ar）を用いて全ての libvtk*.a ファイルを統合して「libVTK-8.2.a」を生成するには下記のスクリプトを実行します。
-------------------#!/bin/shrm -f libVTK-8.2.aar cqT libVTK-8.2.a libvtk*.acom="create libVTK-8.2.a\n"for i in libvtk*.a; docom="${com}addlib $i\n"done
com="${com}save\nend"
echo -e $com | ar –M-------------------成功すると「libVTK-8.2.a」という静的リンク可能な単一の VTK ライブラリが出来上がります。使用した libvtk*.
a ファイルは消しても残してもどちらでも構いません。
3.3 Windows 上での VTK のビルド
Windows 上でも似たような手順でビルドすることが可能です。VTK のウェブページページにも記載 [3] の通り、Windows の場合は最初に cmake をダウンロード＆インストールする必要があります。ccmake の設定内容
は Linux の も の と ほ と ん ど 同 じ で す（た だ し、「CMAKE_CONFIGURATION_TYPES」を Release の み に変更、「CMAKE_INSTALL_PREFIX」を環境に合わせて変更、「CMAKE_CXX_FLAGS_RELEASE」と「CMAKE_C_FLAGS_RELEASE」の /MD を /MT に変更）。なお、筆者 は 開 発 環 境 と し て 無 料 の Visual Studio Express for
Windows Desktop を使用しています。
インストールが完了したら、インストール先の lib/ の中を確認してみてください。今度は vtk*.lib という名前のファイルが大量にあるかと思います。全ての vtk*.libファイルを統合して「libVTK-8.2.lib」を生成するには下記のバッチを実行します。ただし、lib コマンドにパスが 通 っ て い る 必 要 が あ り ま す の で、Visual Studio のDeveloper Command Prompt 等を使用してください。
計算工学

4VTK XML ファイルを出力するコード例

では本題に入ります。作成した VTK のライブラリを使って ParaView に読み込ませる VTK XML ファイルを出力する C++ コードの例を示します。コードのビルドに際して必要になる VTK ヘッダーのインクルードディ
レクトリやリンクするライブラリ（先述の libVTK-8.2.aまたは libVTK-8.2.lib）の指定はご自身で忘れずに設定してください。また、ライブラリのマニュアルは Web
ページ [4] を参考にしてください。
4.1 4節点四面体1要素モデルの出力
最も単純な例として、本チュートリアル第一弾の最初に Legacy VTK で示した4節点四面体1要素モデルをVTK XML で出力するプログラムを以下に記します。これをコンパイルして実行すれば “sample-a.vtu” というファイルが出来上がります。
-------------------#include <vtkSmartPointer.h>#include <vtkTetra.h>#include <vtkCellArray.h>#include <vtkUnstructuredGrid.h>#include <vtkXMLUnstructuredGridWriter.h>
int main(void){//// Points ////
auto Points =vtkSmartPointer<vtkPoints>::New();
Points->SetDataTypeToFloat();Points->SetNumberOfPoints(4);Points->SetPoint(0, 0., 0., 0.);
Points->SetPoint(1, 1., 0., 0.);
Points->SetPoint(2, 0., 1., 0.);
Points->SetPoint(3, 0., 0., 1.);

（23-3）//// Connectivity ////
auto Connectivity =vtkSmartPointer<vtkIdTypeArray>::New();
Connectivity->SetNumberOfTuples(5);Connectivity->SetComponent(0,0, 4);Vol.24, No.2 2019

チュートリアル

ParaView 超入門 其の三す。ここでは非構造格子用の vtkUnstructuredGrid に先に作った Points と CellArray をセットしています。SetCells
関数では第一引数に要素タイプを指定しているので、そ の 点 に お い て SetCells 関 数 は Legacy VTK の CELL_
TYPES に相当します。
最後に Writer で今作った Grid をファイルに出力します。 こ の 例 で は SetCompressorTypeToNone 関 数 とSetDataModeToAscii 関数を呼ぶことで敢えて圧縮なしのアスキー形式で出力させています。
出来上がった “sample-a.vtu” はただのテキストファイ
ルですので less やメモ帳などで是非中身を覗いてみてください。また、同ファイルを ParaView で表示させると “sample-a.vtk” と全く同じ四面体が1個表示されることも確認してみてください。

Connectivity->SetComponent(1,0, 0);Connectivity->SetComponent(2,0, 1);
Connectivity->SetComponent(3,0, 2);Connectivity->SetComponent(4,0, 3);//// CellArray ////
auto CellArray =vtkSmartPointer<vtkCellArray>::New();
CellArray->SetCells(1, Connectivity);//// Grid ////
auto Grid =vtkSmartPointer<vtkUnstructuredGrid>::New();Grid->SetPoints(Points);
Grid->SetCells(VTK_TETRA, CellArray);

4.2 スカラーの節点量および要素量の追加
先程のコードには幾何学的な情報しか含まれていなかったので、節点量と要素量、つまり Legacy VTK のPOINT_DATA と CELL_DATA に相当する情報を追加します。先程のコードに対して下記の通り追加・変更してコンパイル＆実行すれば “sample-b.vtu” というファイルが出来上がります。
--------------------//// Writer ////
auto Writer =vtkSmartPointer<vtkXMLUnstructuredGridWriter>::New();
Writer->SetInputData(Grid);
Writer->SetFileName("sample-a.vtu");Writer->SetCompressorTypeToNone();Writer->SetDataModeToAscii();
Writer->Write();＜ include 文の末尾に追加＞#include <vtkPointData.h>#include <vtkCellData.h>#include <vtkFloatArray.h>

return 0;}-------------------Points は Legacy VTK の POINTS に 相 当 し、 節 点 の 座
標 を 格 納 し ま す。 単 精 度 で 出 力 す る 場 合 は
SetDataTypeToFloat 関 数 を 呼 ん で お き ま す。
SetNumberOfPoints 関数で節点数分のメモリをあらかじめ確保し、SetPoint 関数で座標値を代入します。なお、
vtkPoints には InsertNextPoint 関数という節点挿入用の便利な関数も用意されていますが、上記の方法に比べると実行速度が遅くなるので注意が必要です。
Connectivity は Legacy VTK の CELLS に相当し、各要素 の 節 点 数 と 節 点 番 号 リ ス ト を 格 納 し ま す。
SetNumberOfTuples 関数でリスト長分のメモリをあらかじめ確保し、SetComponent 関数で具体的な数字を代入します。SetComponent 関数は2次元配列を想定した仕様となっていますが、ここでは1次元配列を代入するため第二引数は常にゼロを指定します。上記コード例では4,0,1,2,3と代入していますが、その意味については本チュートリアルの第一弾を参照してください。
CellArrray は Connectivity で定義したリストを要素の配列として認識させるオブジェクトです。SetCells 関数の 第 一 引 数 は 要 素 数 を 表 し ま す。vtkPoints と 同 様、
vtkCellArray には InsertNextCell 関数という要素挿入用の便利な関数が用意されていますが、やはり実行速度に注意が必要です。
Grid には最終的に出力するデータセットを格納しま
計算工学＜ Grid と Writer の間に追加＞//// PointData ////
auto PointData =vtkSmartPointer<vtkFloatArray>::New();
PointData->SetNumberOfTuples(4);PointData->SetName("Point Scalar Data");
PointData->SetComponent(0,0, 0.123);
PointData->SetComponent(1,0, 1.234);
PointData->SetComponent(2,0, 2.345);
PointData->SetComponent(3,0, 3.456);
Grid->GetPointData()->AddArray(PointData);//// CellData ////
auto CellData =vtkSmartPointer<vtkFloatArray>::New();
CellData->SetNumberOfTuples(1);CellData->SetName("Cell Scalar Data");
CellData->SetComponent(0,0, 3.14);
Grid->GetCellData()->AddArray(CellData);＜ Writer の出力先ファイル名を変更＞
Writer->SetFileName("sample-b.vtu");-------------------PointData には節点量を格納しており、節点数分のメモ リ を SetNumberOfTuples 関 数 で 確 保 し て い ま す。

（23-4）

Vol.24, No.2 2019

チュートリアル

ParaView 超入門 其の三

SetComponent 関数で具体的な値を代入していますが、スカラー量の場合は第二引数を Connectivity の時と同様にゼロとします。最後に AddArray 関数で出来あがったデータを Grid の節点量として追加します。
CellData には要素量を格納しており、その追加手順はPointData と同様なので容易に理解できるかと思います。
この例についても出来上がった “sample-b.vtu” の中身を是非覗いた後、ParaView で表示させてチュートリア
ル第一弾の “sample-b.vtk” と同じものが表示されることを確認してみてください。
4.3 ベクトルの節点量および要素量の追加
続いてベクトル量を追加してみます。先程のコードに対して下記の通り追加・変更してコンパイル＆実行すれば “sample-c.vtu” というファイルが出来上がります。
--------------------＜ Grid と Writer の間に追加＞//// PointData2 ////
auto PointData2 =vtkSmartPointer<vtkFloatArray>::New();
PointData2->SetNumberOfComponents(3);PointData2->SetNumberOfTuples(4);PointData2->SetName("Point Vector Data");
PointData2->SetComponent(0,0, 0.0);
PointData2->SetComponent(0,1, 0.1);
PointData2->SetComponent(0,2, -0.2);
PointData2->SetComponent(1,0, 0.1);
PointData2->SetComponent(1,1, 0.2);
PointData2->SetComponent(1,2, 0.3);
PointData2->SetComponent(2,0, 0.2);
PointData2->SetComponent(2,1, 0.3);
PointData2->SetComponent(2,2, 0.4);
PointData2->SetComponent(3,0, 0.3);
PointData2->SetComponent(3,1, 0.4);
PointData2->SetComponent(3,2, 0.5);
Grid->GetPointData()->AddArray(PointData2);

4.4 フィールドデータの追加
節点量や要素量などの他に場で共通の量（時刻やソルバーの時間ステップ番号など）を出力させたい場合にはフィールドデータを追加します。ここでは時刻の情報を追加するため、先程のコードに対して下記の通り追加・変更してコンパイル＆実行すれば “sample-d.vtu” というファイルが出来上がります。
--------------------＜ Grid と Writer の間に追加＞//// FieldData ////
auto FieldData =vtkSmartPointer<vtkFloatArray>::New();
FieldData->SetName("Time (s)");FieldData->SetNumberOfTuples(1);FieldData->SetComponent(0,0, 3.14);
Grid->GetFieldData()->AddArray(FieldData);＜ Writer の出力先ファイル名を変更＞
Writer->SetFileName("sample-d.vtu");-------------------追 加 し た い の は 値1つ だ け な の で す が、 仕 様 上
vtkFloatArray という配列を用います。節点数や要素数とは無関係なので SetNumberOfTuples 関数で指定する値は1で、SetComponent 関数では第一・第二引数がゼロとなります。
残念ながら、ParaView の Annotate Time Filter がここで追加したフィールドデータの値を勝手に読んで時刻を表示してくれるということはありません。ただし、表示フレームの時刻をすぐに確認できるメリットは大きいと思います。

//// CellData2 ////
auto CellData2 =vtkSmartPointer<vtkFloatArray>::New();
CellData2->SetNumberOfComponents(3);CellData2->SetNumberOfTuples(1);CellData2->SetName("Cell Vector Data");
CellData2->SetComponent(0,0, 1.2);
CellData2->SetComponent(0,1, -2.3);
CellData2->SetComponent(0,2, -3.4);
Grid->GetCellData()->AddArray(CellData2);＜ Writer の出力先ファイル名を変更＞
Writer->SetFileName("sample-c.vtu");-------------------基本的にはスカラーの場合と変わりませんが、ベク
トルの場合は SetNumberOfComponents 関数で成分数に3計算工学

を 指 定 し て い ま す。 ポ イ ン ト と し て、 必 ず
SetNumberOfTuples 関 数 を 呼 ぶ よ り も 前 に
SetNumberOfComponents 関数を呼んでください。この順序を逆にするとメモリが正しく確保されず、プログ
ラ ム が 異 常 終 了 し ま す。 具 体 的 な 値 を 代 入 す る
SetComponent 関数では第一引数に節点番号または要素番号、第二引数に成分番号を指定します。3成分ベクトル量では SetComponent 関数の代わりに SetTuple3関数を使う方法もあり、コードが少しスッキリします。
SetNumberOfComponents 関数で指定する成分数に縛りはないので、応力の6成分や変形勾配の9成分等を出力する場合のコード例は上記とほとんど同じです。皆さんご自身で書いてみてください。

4.5 LZMA でファイルサイズを圧縮する
最後にファイルサイズを圧縮してみます。人間にとっての可読性は完全に犠牲になりますが、その分ファイルサイズは相当に小さくすることが出来ます。
特に、VTK-8.2.0から正式採用となった LZMA 圧縮を使えばこれまでの Zlib 圧縮よりも更にコンパクトサイズなファイルを出力できます。先程のコードに対して下記 の 通 り 追 加・ 変 更 し て コ ン パ イ ル ＆ 実 行 す れ ば（23-5）

Vol.24, No.2 2019

チュートリアル

ParaView 超入門 其の三“sample-e.vtu” というファイルが出来上がります。
--------------------＜ include 文の末尾に追加＞#include <vtkLZMADataCompressor.h>＜ Writer 部分の記述を変更＞
Writer->SetFileName("sample-e.vtu");//Writer->SetCompressorTypeToNone();//Writer->SetDataModeToAscii();
Writer->SetCompressorTypeToLZMA();//Writer->SetCompressionLevel(5);-------------------Write 関数の前に SetCompressorTypeToLZMA 関数を呼んでおくと、出力ファイルに LZMA 圧縮がかかります。
SetCompressionLevel 関数で圧縮率を調整出来ますが、デフォルト値である5で計算量と圧縮率のバランスがとれていますので、通例変更する必要はないでしょう。
圧縮をかけた vtu ファイルも中身はテキストファイルですので、less やメモ帳などで是非覗いて見てください。ファイル前半の各タグの内容は無圧縮のものとほとんど同じですが、「offset= “xxx”」の項目が追加されています。その代わりにタグの後に続く数値データが無くなっており、ファイル後半の AppendedData タグの中に 移 動 さ れ て い ま す。 移 動 さ れ た 数 値 デ ー タ に はLZMA 圧縮がかかっており、人間には読めない文字列が並んでいることが確認できると思います。
4.6 TeX 形式での数式表示
最後の最後に、変数名などを TeX 形式で記述してParaView で表示させる方法をおまけとして紹介します。節点量、要素量、フィールドデータ等の名前の中で「$」で 囲 ま れ た 部 分 は TeX 形 式 の 数 式 と し てParaView に認識されます。TeX そのものには及びませんが、そこそこのクオリティの数式が表示できるので、見た目の美しい可視化画像を手軽に得たい場合には是非利用したい機能です。

計算工学

VTK XML フ ァ イ ル の 場 合、 そ の 利 用 は 極 簡 単 でSetName 関数の引数の中身を書き換えるだけで済みます。コード例を3つほ示しておきます。
● PointData->SetName("Measured Velocity,$\\widetilde{v}$ (m/s)");● CellData->SetName("Estimated Mean Stress,$\\overline{\\sigma}^{*}$ (Pa)");● FieldData->SetName("$\\sum_a^b\\int_\\alpha^\\beta \\varepsilon(x)\\mathrm{d}x$");C++ のコード内で書く場合にはエスケープ（バックスラッシュあるいは円マーク）を2個続けて書かなければいけないことに注意してください。なお、同じことをLegacy VTK でやろうとするとスペースを全て「$\,$」に置き換えるなど結構骨が折れます。VTK XML だと名前の中のスペースはそのままスペースになってくれるので記述が簡単という訳です。

5

おわりに全3回に分けて連載してきた「ParaView 超入門」です
が、振り返ってみると「VTK 超入門」のような内容になってしまいました。ParaView の GUI 操作に関する書籍
や Web ページは既に結構充実していますし、GUI 操作は「習うより慣れろ」の面が多分にあるので実際に触った方が早いとも思われます。他方、VTK に関するまとまった日本語解説は比較的数が少なかったこと、および計算工学会には自作プログラムを書いている方がまだ大勢いらっしゃることを加味し、FEM の自作プログラマー初心者を対象とした解説記事にしてみました。今回の連載が少しでも皆様のお役に立てば幸いです。
■参考文献
[1]
[2]
[3]
[4]

（23-6）

https://vtk.org/download
https://vtk.org/Wiki/VTK/Conﬁgure_and_Build
https://vtk.org/Wiki/VTK/Building/Windows
https://vtk.org/doc/nightly/html/

Vol.24, No.2 2019