Introduction_JP - CCSEPBVR/CS-IS-PBVR GitHub Wiki

はじめに

概要

CS/IS-PBVRは粒子ベースボリュームレンダリング(Particle-Based Volume Rendering, PBVR)に基づき設計された科学可視化用アプリケーションである。 このアプリケーションはシミュレーションや計測器から得られた3次元のボリュームデータを対象にして、ボリュームレンダリングや等値面などの標準的な可視化機能に加えて、多変量可視化や3次元点群可視化が可能である。 そして、最適化されたPBVRを分散処理するフレームワークにより、遠隔地にある大規模時系列ボリュームデータを高速に遠隔可視化できる特徴がある。 遠隔可視化の方式として、遠隔地のストレージに保存されたボリュームデータを可視化するクライアント・サーバ(Client Server, CS)可視化と、シミュレーションを同時かつ同環境で可視化するIn-Situ (IS)可視化を選択できる。 このアプリケーションは日本原子力研究開発機構 システム科学計算センターで開発されている。

PBVRはボリュームデータを圧縮された可視化用粒子に変換し画面に投影してボリュームレンダリング画像を生成する。 CS/IS-PBVRのフレームワークの構成を下図に示す。CS-PBVRは粒子生成処理と粒子投影処理を遠隔地のサーバと手元のユーザPCに分割し、可視化用粒子を通信することで遠隔可視化を実現している。 また、ユーザが指定した色や不透明度等の可視化パラメータを通信して対話的にデータ探索が可能である。 IS-PBVRでは、シミュレーションに結合された粒子生成処理がストレージ上に粒子ファイルを出力し、ログインノードで動作するIn-Situ制御プログラムがそれをユーザPCに送信することで、シミュレーションを阻害することなく対話的な可視化が可能である。 またユーザが指定した可視化パラメータをIn-Situ制御プログラムがストレージにファイル出力し、粒子生成処理がシミュレーションの時間ステップ更新のタイミングでそれをチェックすることで対話的なデータ探索が可能である。 CS/IS-PBVRにおいてユーザPC上のGUIは共通のプログラムで構築されている。

Local Image

CS-PBVRのサポートするデータ形式

CS-PBVRはボリュームデータを可視化用粒子に変換するサーバプログラムと画像表示用のクライアントプログラムから構成されている。サーバプログラムは以下に示すデータ形式を処理できる。

  • VTKレガシー(ASCII、バイナリ)
  • VTK XML(ASCII、バイナリ)
  • EnSight Gold(ASCII、バイナリ)
  • CGNS(バイナリのみ存在)
  • Plot3D(ASCII、バイナリ)
  • AVS(ASCII、バイナリ)
  • STL(ASCII、バイナリ)

Local Image

サーバプログラムはXMLによる独自の可視化用データ形式であるKVSML形式を処理できる。PBVRとは独立のプログラムであるKVSMLコンバータを利用することで、上記のデータ形式をKVSML形式に変換できる。KVSMLコンバータはMPIによる並列読み込みが可能であるため、大型計算機等で大規模データを処理する場合は、KVSMLコンバータを利用することで読み込みを効率化できる。 また、ストレージ上の大規模データを並列処理するために、ボリュームデータを空間分割してKVSML形式として出力するためのフィルタプログラムがある。

IS-PBVRのサポートするシミュレーション

IS-PBVRはOpenFOAMをサポートしており、シミュレーションのソースコードに可視化用関数を挿入することで計算と同時に同環境での可視化処理が可能になる。 またそれ以外でも、C/C++/Fortranで記述されたシミュレーションをサポートしている。 シミュレーションのメッシュに関して、構造格子、非構造格子、Block Structured AMR格子を処理可能である。

テクスチャ付きポリゴンデータのサポート

CS/IS-PBVRのクライアントプログラムはテクスチャ付きポリゴンを表示可能である。 サポートしている形式はFBX形式と3DS形式である。

ソースコード構成

ユーザPC上で動作するCS/IS-PBVRのGUIアプリケーションのソースコードはQTPBVRディレクトリに、CS-PBVRのサーバプログラムはCS_serverディレクトリに、KVSMLコンバータはkvsml_converterディレクトリに、そしてIS-PBVRの粒子生成プログラムとIn-Situ制御プログラムはIS_DaemonAndSamplerディレクトリに格納されている。 以降、In-Situ制御プログラムのことを単にデーモンと記載する。

## 本Wikiの構成 配布しているバイナリのインストール方法を「バイナリ」に記載する。 ソースコードをからバイナリを生成するためのLinux/Windows/Mac上での環境設定の方法とビルド方法を「Linux環境設定」「Linuxビルド方法」「Windows環境設定」「Windowsビルド方法」「Mac環境設定」「Macビルド方法」に記載する。 フィルタプログラムの詳細と起動方法を「フィルタプログラム」に記載する。 CS-PBVRのサーバプログラムの詳細と起動方法を「サーバ」に記載する。 IS-PBVRの粒子生成プログラムに必要な設定を「In-Situセットアップ」に記載する。 IS-PBVRの粒子生成プログラムをシミュレーションソースコードに挿入するためのコーディング方法を「粒子サンプラ」に記載する。 CS/IS-PBVRのクライアントプログラムの詳細と起動方法を「クライアント」に記載する。 KVSMLコンバータの詳細と起動方法を「KVSMLコンバータ」に記載する。 CS/IS-PBVRの使用方法を「チュートリアル」に記載する。

動作環境

CS/IS-PBVRはC++言語をベースにして、画像描画をOpenGL、可視化処理を可視化ライブラリKVS、GUIをQtで開発されている。 Linux、Mac、Windowsのクロスプラットフォームで動作し、機構所有のスーパーコンピュータSGI8600で利用可能である。 下表に動作確認済みの環境を記載する。

プラットフォーム OS コンパイラ クライアント CSサーバ KVSMLコンバータ ISデーモン IS粒子生成
Linux Kubuntu 22.04.04 g++ 11.4.0 O O O O O
Mac OSX14.4.1 Apple clang 15.0.0 O O N/A N/A N/A
Windows Windows11 MSVC2022 O O N/A N/A N/A
SGI8600 Red Hat 7.8 Intel Parallel, OpenMPI N/A O O O O

動作環境(OpenXR)

本アプリケーションのVR機能は、OS:Windows11、コンパイラ:MSVC2022、そしてQt6.2.4を搭載したPCを使用して、下記のHMDに関して動作を確認している。

  • Meta Quest2
  • Meta Quest3
  • VIVE Pro
  • VIVE Focus 3
  • PICO4
⚠️ **GitHub.com Fallback** ⚠️