VTK と Vulkan

以前に VTK のことを取り上げた。
これまで、VTK は MacOS 向けの画像ライブラリに OpenGL を用いていたが、ご存じの通り、将来的には OpenGL は廃止になる。VTK は各 OS 向けに window を提供しているが、MacOS で使う vtkCocoaRenderWindow は、クラスの継承関係としては以下のようになっている。

vtkObjectBase

vtkObject

vtkWindow

vtkRenderWindow

vtkOpenGLRenderWindow

vtkCocoaRenderWindow

このうち vtkOpenGLRenderWindow が OpenGL に依存しているのため、これを継承している vtkCocoaRenderWindow は OpenGL が廃止になったら、使えなくなってしまう。

当然、VTK は、こういった構成も含めて、再検討しなければならない。

順当にいくなら、アップル公式推奨の Matal を使うことになるのだろうが、Metal は windows や linux 上では動かず、マルチプラットフォームが売りの VTK の基本設計と甚だ相性がよろしくない。

どうするか気になっていたのだが、結局、Vulkan を採用するようだ。

GitLab のリポジトリには、(完全ではないが)ある程度のコードが既に上がっている。
開発者からのメッセージも読むことができる。

 

ただ、ここのところ更新は滞っており、どうなることやら。

 

VTK のサワリ

VTK といいうのは Visualization Tool Kit の頭文字の略で、容易に想像がつくようにデータの可視化ツールだ。

技術的には標準的な C++ で書かれており(一部、OS 依存の部分はもちろんあるが)、cmake というツールを使って各々の OS 向けにライブラリとしてビルドする。

医療系のソフトだと、まず OsiriX に3D構築のツールとして組み込まれて知名度が高まった。(だから、当然、Horos や HorliX にも使われている)

今でもアクティブに開発は続けられているが、新しい MacOS 向けの修正(M1 や Metal 対応)がやや遅れている。

VTK がどんなものかは見てもらった方がわかりやすいでしょう。

これは、サンプルコードを cmake のみで Mac アプリまで作成した例。

では、こちらはどうでしょう。

表示されている内容は最初のものといっしょですが、動作のさせ方が違いますね。いったん、空の window が表示され、メニューからこの画像を呼び出しています。
これは、VTK のライブラリを MacOS のアプリに組み込んで使っているのでこうなっています。

実際のソフトは特定の OS 上で動き、UI などのパーツはその OS が提供するものを用いるので、実務的には後者の使い方が多くなります。