遠隔可視化ツール PBVR(v1.08)マニュアル2016 年 4 月

独立行政法人日本原子力研究開発機構
システム計算科学センター

改訂履歴
版数

改定日

章番号

改版内容

1.04

2015.3.31

-

新規

1.05

2015.5.18

5.2

サーバの可視化パラメータファイル読み込み機能と粒子データ出力機能を追加

1.06a

2015.10.30

5.4.2

メインパネルに File ボタンを追加

5.4.6

粒子データ保存機能を追加

5.4.2

Mac 版の特徴領域抽出機能を追加

5.4.3

伝達関数エディタにヒストグラムを追加

5.4.5

画像ファイル作成機能を拡張（ファイル出力ディレクト
リ，キーフレーム機能）

1.07

2016.2.1

1.2

動作環境に ICEX を追加。ライブラリに VTK を追加。

2

逐次版を含めてパッケージ更新。VTK 用フィルタを追加。

3.4

入力データ形式に STL，PLOT3D，VTK を追加し，パラメータファイルを拡張。

4.2

コマンドラインにプションに-pd を追加し，-plimit の定義を修正。これに伴い，-sl オプションを廃止。

5.2

コマンドラインにプションに-pd を追加し，-plimit の定義を修正。これに伴い，-sl オプションを廃止。-pin オプ
ションを-pin10 まで拡張。

1.08

2016.4.25

5.4.5

粒子統合エディタを追加。

6.4

粒子統合エディタの使用事例を追加。

2

ソースコードパッケージを更新。コンパイル・インストー
ル方法を変更5.4.2

伝達関数エディタ・粒子統合エディタ・動画作成用パネ
ルをサブパネル化し，メインパネルにボタンを追加。

i

目次
１ はじめに ........................................................................................................................................... 4
１.１. 概要 ........................................................................................................................................... 4
１.２. 動作環境.................................................................................................................................... 5
２ インストール ................................................................................................................................... 7
２.１. ロードモジュールのインストール ........................................................................................... 7
２.１.１. フィルタ ........................................................................................................................... 7
２.１.２. サーバ ............................................................................................................................... 9
２.１.３. クライアント .................................................................................................................... 9２.２. ソースコードからのインストール ......................................................................................... 10
２.２.１. Linux/Mac ..................................................................................................................... 12２.２.２. Windows ........................................................................................................................ 12
３ フィルタ ......................................................................................................................................... 14
３.１. 概要 ......................................................................................................................................... 14
３.２. 分割方式.................................................................................................................................. 14
３.３. 起動方法.................................................................................................................................. 16
３.３.１. VTK データ用フィルタの起動 ........................................................................................ 16
３.４. ファイル形式 .......................................................................................................................... 17
３.４.１. 入力データ形式 ............................................................................................................... 17
３.４.２. エンディアン .................................................................................................................. 18
３.４.３. フィルタ出力情報ファイル(.pfi) ..................................................................................... 19
３.４.４. SPLIT ファイル形式 ....................................................................................................... 21
３.４.５. サブボリューム集約ファイル形式 .................................................................................. 24
３.４.６. ステップ集約ファイル形式 ............................................................................................. 29
３.５. パラメータファイル................................................................................................................ 33
３.５.１. PLOT3D 設定ファイル .................................................................................................. 34
３.６. MPI 並列処理 ........................................................................................................................... 35
３.７. ステージング環境での実行方法.............................................................................................. 36
３.７.１. 実行シェルとパラメータファイル .................................................................................. 36
３.７.２. 入出力ファイルとディレクトリ ...................................................................................... 37
３.８. 要素タイプの混合した非構造格子の実行 ............................................................................... 38
４ サーバ ............................................................................................................................................ 40
４.１. 概要 ......................................................................................................................................... 40
４.２. 起動方法.................................................................................................................................. 40
４.２.１. バッチモードでの起動 .................................................................................................... 41ii

４.２.２. クライアント・サーバモードでの起動 ........................................................................... 42
４.２.３. ソケット通信によるクライアント・サーバの接続 ......................................................... 42
５ クライアント ................................................................................................................................. 48
５.１. 概要 ......................................................................................................................................... 48
５.２. 起動方法.................................................................................................................................. 48
５.３. 終了方法.................................................................................................................................. 50
５.３.１. 通常終了 .......................................................................................................................... 50
５.３.２. 強制終了 .......................................................................................................................... 50
５.４. 操作説明.................................................................................................................................. 51
５.４.１. ビューワ .......................................................................................................................... 51
５.４.２. メインパネル .................................................................................................................. 51
５.４.３. 伝達関数エディタ ........................................................................................................... 57
５.４.４. タイムステップ制御パネル ............................................................................................. 67
５.４.５. 粒子統合エディタ ........................................................................................................... 68
５.４.６. 画像ファイル作成 ........................................................................................................... 71
６ サンプルデータを用いた可視化事例 .......................................................................................... 77
６.１. フィルタ処理 .......................................................................................................................... 77
６.２. プログラム起動 ....................................................................................................................... 78
６.３. 伝達関数の設計 ....................................................................................................................... 80
６.３.１. 単変量のボリュームレンダリング .................................................................................. 80
６.３.２. 多変量のボリュームレンダリング .................................................................................. 81
６.３.３. 断面表示 .......................................................................................................................... 82
６.３.４. 伝達関数の合成 ............................................................................................................... 83
６.４. 粒子データの統合 ................................................................................................................... 84
６.４.１. 粒子データの保存 ........................................................................................................... 84
６.４.２. 粒子データの読み込み .................................................................................................... 85
６.５. 可視化結果の保存 ................................................................................................................... 87
６.６. バッチモード処理 ................................................................................................................... 87

iii

１

はじめに

１.１. 概要
本書は，日本原子力研究開発機構システム計算科学センターで開発した遠隔可視化システム PBVRのマニュアルである。本システムでは，京都大学小山田研究室で開発された PBVR（Particle Based
Volume Rnderring）法，および，KVS ライブラリを用いて，大規模ボリュームデータの高速な遠隔可視化を実現している。システムは以下の３つのコンポーネントで構成されている。
（１） フィルタ
解析結果のボリュームデータを入力し，PBVR サーバでの並列可視化処理単位であるサブボ
リュームにデータを領域分割する。
（２） PBVR サーバ
サブボリュームを入力して PBVR 法による並列可視化を行い，粒子データを出力する。
（３） PBVR クライアント
粒子データを入力し，OpenGL を用いて画像として表示する。

図 1

可視化アプリケーションシステムの全体構成

4

１.２. 動作環境
本システムの動作確認を行った環境を示す。
●フィルタ
プラットフォーム

コンパイラ

ライブラリ

Linux 64bit

gcc version 4.4.6

VTK※4

Mac 64bit※2

gcc version 4.8.2

VTK※4

Windows 64bit※3

Visual Studio 2013

VTK※4

京コンピュータ

富士通コンパイラ

FX10

富士通コンパイラ

ICEXIntel コンパイラ 15.0.3●サーバ
プラットフォーム

コンパイラ

ライブラリ

Linux 64bit

g++ version 4.4.6

KMATH, NTL※1

Mac 64bit※2

g++ version 4.8.2

Windows 64bit※3

Visual Studio 2013

Visual C++ランタイムコンポーネント

京コンピュータ

富士通コンパイラ

KMATH, NTL※1

FX10

富士通コンパイラ

KMATH, NTL※1

ICEXIntel コンパイラ 15.0.3

KMATH, NTL※1

プラットフォーム

コンパイラ

ライブラリ

Linux 64bit

g++ version 4.4.6

OpenGL, GLUT

Mac 64bit※2

g++ version 4.8.2

OpenGL, GLUT

Windows 64bit※3

Visual Studio 2013

OpenGL, GLUT，Visual C++ランタ●クライアント

イムコンポーネント※1. KMATH は理化学研究所計算科学研究機構で開発された超並列計算用乱数ライブラリであり，数値計算ライブラリ NTL を用いて構築される。
※2. Mac の動作確認は Maverics，Yosemite，El Capitan に対して行っている。また，Mac の Xcodeで導入されるデフォルトの gcc は OpenMP 非対応なので，ロードモジュールを利用する，あるいは，ソースコードをコンパイルするために，OpenMP 対応の gcc を導入する必要がある。提
供バイナリは macports で導入された gcc48 によって構築された。Macports による gcc の導入例を以下に示す。
$port install gcc48$port select –set gcc mp-gcc48

5

※3. Windows の動作確認は 7，8.1，10 に対して行っている。また，Visual Studio 2013 が無い Windows 64bit 環境で動作させるときには VisualC++ランタイムコンポーネントが必要となる。
※4. VTK 用フィルタのコンパイルには VTK6.0 以上が必要である。

6

２

インストールPBVR はロードモジュールパッケージ，および，ソースコードパッケージとして提供される。以下にそれぞれのインストール方法を説明する。

２.１. ロードモジュールのインストール
２.１.１. フィルタ
フィルタプログラムのロードモジュールは，逐次処理版，スレッド並列処理用の OpenMP 版，および，超並列処理用の MPI+OpenMP 版が用意されている。各環境のロードモジュールをパスの通った適当なディレクトリにコピーすることによりインストールが完了する。ロードモジュールの構成は以下の通りである。
表 1

フィルタプログラムのロードモジュール一覧

機種

並列化

ロードモジュール名Linux 64bit

逐次

pbvr_filter_linux
pbvr_filter_linux_vtk※2

OpenMP

pbvr_filter_linux_omp
pbvr_filter_linux_omp_vtk※2

MPI+OpenMP

pbvr_filter_linux_mpi_omp
pbvr_filter_linux_mpi_omp_vtk※2

Mac 64bit

逐次

pbvr_filter_mac
pbvr_filter_mac_vtk※2

OpenMP

pbvr_filter_mac_omp
pbvr_filter_mac_omp_vtk※2

Windows 64bit

逐次

pbvr_filter.exe
pbvr_filter_vtk.exe※2

OpenMP

pbvr_filter_omp.exe
pbvr_filter_omp_vtk.exe※2

京コンピュータ※1

FX10※1ICEX

OpenMP

pbvr_filter_k_omp

MPI+OpenMP

pbvr_filter_k_mpi_omp

OpenMP

pbvr_filter_fx10_omp

MPI+OpenMP

pbvr_filter_fx10_mpi_omp

OpenMP

pbvr_filter_icex_omp

MPI+OpenMP

pbvr_filter_icex_mpi_omp

7※1. スーパーコンピュータ用のロードモジュールは計算ノード専用となるので，Linux サーバによって構成されるログインノードやポスト処理ノードでは Linux 用ロードモジュールを用いる。
※2. VTK データ用フィルタには VTK ライブラリが必要となる。

２.１.１.１ VTK 用 フ ィ ル タ の イ ン ス ト ー ル
VTK 用フィルタのインストールには VTK6.0 以上が必要である。VTK ライブラリのインストール
については VTK ウェブサイト（http://www.vtk.org/）を参照すること。また，インストールにあたっては CMake-gui において以下の設定を行うこと。
①

BUILD_SHARED_LIBS オプションをオンにする。

②

CMAKE_BUILD_TYPE オプションを “Release”にする。

③

CMAKE_INSTALL_PREFIX を VTK をインストールする場所に設定する。

VTK 用フィルタに必要な設定を以下に示す。
Linux, Mac
以下のように環境変数を設定する。
% export VTK_VERSION=n.n% export VTK_LIB_PATH=/usr/local/lib% export VTK_INCLUDE_PATH=/usr/local/include/vtk-n.n
ここで，n.n には使用する VTK のバージョンを入力し，パスは VTK ライブラリのインストール環
境に合わせて書き換えること。
Windows
コントロールパネル->システム->詳細設定->環境変数に移動し，以下の環境変数を設定する

変数

値

VTK_VERSIONn.n

VTK_LIB_PATH

d:\environments\VTK\lib

VTK_INCLUDE_PATH d:\environments\VTK\include\vtk-n.n
ここで，n.n には使用する VTK のバージョンを入力し，値は VTK ライブラリのインストール環境に合わせて書き換えること。

8

２.１.２. サーバ
サーバプログラムのロードモジュールは，逐次処理版，スレッド並列処理用の OpenMP 版，および，超並列処理用の MPI+OpenMP 版が用意されている。各環境のロードモジュールをパスの通った
適当なディレクトリにコピーすることによりインストールが完了する。ロードモジュールの構成は以下の通りである。
表 2

サーバプログラムのロードモジュール一覧

機種

並列化

ロードモジュール名Linux 64bit

逐次

pbvr_server_linux

OpenMP

pbvr_server_linux_omp

MPI+OpenMP

pbvr_server_linux_mpi_omp

逐次pbvr_server_mac

OpenMP

pbvr_server_mac_omp

逐次pbvr_server.exe

OpenMP

pbvr_server_omp.exe

OpenMP

pbvr_server_k_omp

MPI+OpenMP

pbvr_server_k_mpi_omp

OpenMP

pbvr_server_fx10_omp

MPI+OpenMP

pbvr_server_fx10_mpi_omp

OpenMP

pbvr_server_icex_omp

MPI+OpenMP

pbvr_server_icex_mpi_omp

Mac 64bit

Windows 64bit

京コンピュータ※1

FX10※1ICEX※1. スーパーコンピュータ用のロードモジュールは計算ノード専用となるので，Linux サーバによって構成されるログインノードやポスト処理ノードでは Linux 用ロードモジュールを用いる。

２.１.３. クライアント
クライアントプログラムのロードモジュールは pthread により並列化されている。各環境のロードモジュールをパスの通った適当なディレクトリにコピーすることによりインストールが完了する。
ロードモジュールの構成は以下の通りである。
表 3

クライアントプログラムのロードモジュール一覧

機種

並列化

ロードモジュール名Linux 64bit

pthreadpbvr_client_linux

Mac 64bit

pthreadpbvr_client_mac

Windows 64bit※1

pthreadpbvr_client.exe※1. Windows 版については glut32.dll も同じディレクトリにコピーする。

9

２.２. ソースコードからのインストール
ソースコードパッケージを任意のディレクトリに展開し，PBVR/ディレクトリ配下の pbvr.conf，
Makefile を用いてコンパイルする。pbvr.conf ファイルにより make を設定し，フィルタ，サーバ，
クライアントプログラムをコンパイルする。PBVR/ディレクトリの構成は以下のようになっている。
表 4

ソースコードパッケージのディレクトリ構成

ディレクトリ・ファイル

説明

PBVR/
KMATH/

並列乱数生成ライブラリ KMATH

KVS/

可視化ライブラリ KVS

glui/

GUI 用ウィジェットライブラリ

FunctionParser/

関数エディタライブラリ

Common/プロトコル，通信，共通のライブラリ

Filter/

フィルタプログラム

Server/

サーバプログラム

Client/クライアントプログラム

arch/

各コンパイルの設定ファイル

pbvr.conf ※1

make 設定ファイル

Makefile ※1

PBVR/配下のソースコードをコンパイルする※1. Windows 環境では，Makefile と pbvr.conf の代わりに VisualStudio 用のソリューション

ファイル pbvr.sln を用いる。
pbvr.conf において変数の入力値を変更することで，インストールする機能を指定する。pbvr.confの変数の一覧を以下に示す。
表 5

pbvr.conf の変数と入力値の一覧

変数

入力値

説明

PBVR_MACHINE

文字列

arch/配下のコンパイル設定ファイル

PBVR_MAKE_FILTER

0 or 1フィルタのサポートの有無

PBVR_MAKE_CLIENT

0 or 1

クライアントのサポートの有無

PBVR_MAKE_SERVER

0 or 1

サーバのサポートの有無

PBVR_SUPPORT_KMATH 0 or 1

KMATH サポートの有無（サーバのみ）※1

PBVR_SUPPORT_VTK

VTK サポートの有無（フィルタのみ）

0 or 1※1. Mac 版，windows 版サーバでは並列乱数生成ライブラリ KMATH を使用できないため，逐次乱数生成ライブラリ TinyMT を用いる。

10

変数 PBVR_MACHINE ではコンパイル環境に応じて arc/ディレクトリ配下に格納されている
Makefile の設定ファイルを指定する。
表 6

コンパイル設定ファイルの一覧

ファイル名

説明

Makefile_machine_gcc

gcc による逐次版コンパイルの設定

Makefile_machine_gcc_omp

gcc による OpenMP 版コンパイルの設定

Makefile_machine_gcc_mpi_omp

gcc による MPI+OpenMP 版コンパイルの設定

Makefile_machine_intel

intel による逐次版コンパイルの設定

Makefile_machine_intel_omp

intel による OpenMP 版コンパイルの設定

Makefile_machine_intel_mpi_omp

intel による MPI+OpenMP 版コンパイルの設定

Makefile_machine_fujitsu

富士通コンパイラによる逐次版コンパイルの設定

Makefile_machine_fujitsu_omp

富士通コンパイラによる OpenMP 版コンパイルの設定

Makefile_machine_fujitsu_mpi_omp 富士通コンパイラによる MPI+OpenMP 版コンパイルの設定
Makefile_machine_icex

当機構大型計算機上での逐次版コンパイルの設定

Makefile_machine_icex_omp

当機構大型計算機上での OpenMP 版コンパイルの設定

Makefile_machine_icex_mpi_omp

当機構大型計算機上での MPI+OpenMP 版コンパイルの設定

各環境に対応する設定ファイルの使用環境を下記に示す。
表 7

コンパイル設定ファイルの使用環境

ファイル名

使用環境
Linux

Mac

ICEX

FX10

京※2

京(Pre/Post)

Makefile_machine_gcc

◎

◎

-

-

-

○

Makefile_machine_gcc_omp

◎

◎

-

-

-

○

Makefile_machine_gcc_mpi_omp

◎

-

-

-

-

○

Makefile_machine_intel

○

-

-

-

-

○

Makefile_machine_intel_omp

○

-

-

-

-

○

Makefile_machine_intel_mpi_omp

○

-

-

-

-

○

Makefile_machine_fujitsu

-

-

-

○

○

-

Makefile_machine_fujitsu_omp

-

-

-

○

○

-

Makefile_machine_fujitsu_mpi_omp

-

-

-

○

○

-

Makefile_machine_icex

-

-

○

-

-

-

Makefile_machine_icex_omp

-

-

○

-

-

-

Makefile_machine_icex_mpi_omp

-

-

○

-

-

-

※1. ◎はフィルタ，サーバ，クライアント，○はフィルタ，サーバをサポートしている。
※2. 京コンピュータ上でクライアント・サーバモードを実行する場合は Pre/Post ノードを使用する。

11

２.２.１. Linux/Mac
以下に Linux, Mac 上でのコンパイル・インストールの手順を示す。
（１） PBVR/ディレクトリ配下の pbvr.conf を，各環境で使用する機能に合わせて編集する。
gcc コンパイラを使用して OpenMP により並列化されたクライアント，フィルタ，サーバをコンパイルする例を示す。
■pbvr.conf の例
PBVR_MACHINE=Makefile_machine_gcc_omp
PBVR_MAKE_CLIENT=1
PBVR_MAKE_FILTER=1
PBVR_MAKE_SERVER=1
PBVR_SUPPORT_KMATH=0（２） PBVR/配下で下記のようにコンパイルを行う。
$make
PBVR 配下で下記のように実行モジュールが作成される。
フィルタ：

Filter/pbvr_filter

サーバ：

Server/pbvr_server

クライアント：Client/pbvr_client（３） 生成されたロードモジュールをパスの通った適当なディレクトリにコピーする

２.２.２. Windows
以下に Windows 上でのコンパイル・インストールの手順を示す。
（１） glut（64bit）のインストールについて①

下記のホームページより，glut-3.7.6-bin_x64.zip(64bit)をダウンロードする。
http://ktm11.eng.shizuoka.ac.jp/lesson/modeling.html②①を解凍し，上記ホームページのインストール手順を参考に適切な場所に置く。
glut.hglut32.lib
glut32.dll（２） Visual Studio 2013 環境のある端末上で，PBVR 環境を展開する。
（３） 展開したしたディレクトリ配下の pbvr.sln を実行し，Visual Studio 2013 を起動する。
（４） 構成（下図参照）を Release x64 にする。

12

図 2

Visual Studio 2013 の構成例

（５） Visual Studio 2013 メニューの[ビルド] ⇒[ソリューションのビルド]を実行する。
\\x64\Release 配下に pbvr_filter.exe（フィルタ），pbvr_server.exe（サーバ），pbvr_client.exe（クライアント）それぞれの実行モジュールが作成される。

13

３

フィルタ

３.１. 概要
フィルタプログラムは，時系列ボリュームデータを PBVR サーバの並列処理を目的として分割し，可視化用のサブボリュームデータを生成するプログラムであり，PBVR とは独立な前処理プログラムである。データ分割には 8 分木構造モデルを適用し，構造格子および非構造格子データに対し，任意の 8 分木領域で分割を行い，PBVR サーバの並列処理に有効な入力となるファイル出力を行う。

３.２. 分割方式
八分木構造の領域分割は図 3 に示すように，直方体の各辺を 2 分割し，１つに直方体を 8 個の直方体に分割する。この分割を再帰的に繰り返すことにより領域の細分化を行う。１つの直方体には 8 個の子となる直方体が存在し，子の直方体には 1 つの親となる直方体が存在することとなる。

図 3八分木構造の領域分割

148 分木の領域分割の座標値は，図 4 に示すとおり，親となる直方体の頂点座標に対して，各軸の最小値と最大値および最小値と最大値の和を２で割ることによる中点で求める事ができる。各軸方向の座標を各軸の中点との大小関係を比較することにより，ある点がどの領域（子の直方体）内の点となるかが判断可能となる。

図 4八分木構造の領域分割での分割点座標値

15

３.３. 起動方法
実行コマンド（filter）直後にパラメータを記述したパラメータファイル名（任意）を指定すること
によりパラメータが読みとられ実行される。パラメータファイル名が指定されない場合や，存在しな
いファイル名を指定した場合はエラーとなり正しく起動されない。
（MPI+OpenMP での起動方法，N にプロセス並列数を入力する）$ mpiexec –n N filter param.txt（OpenMP のみでの起動方法）$ filter param.txt※1. どちらの場合も OpenMP スレッド数は環境変数 OMP_NUM_THREADS で指定。

３.３.１. VTK データ用フィルタの起動
ロードモジュールパッケージに含まれる VTK データ用フィルタを起動するには、各環境に合わせた環境変数の設定が必要になる。
Linux
以下のように環境変数を設定する。
% export LD_LIBRARY_PATH=${VTK_LIB_PATH}:$LD_LIBRARY_PATH
Mac
以下のように環境変数を設定する。
% export DYLD_LIBRARY_PATH=${VTK_LIB_PATH}:$DYLD_LIBRARY_PATH
Windows
コントロールパネル->システム->詳細設定->環境変数に移動し，以下の環境変数を設定する。

変数

値

Path

d:\Program Files\VTK 6.3.0\bin

値は vtk のインストールディレクトリ配下の bin ディレクトリを指定する。

16

３.４. ファイル形式
フィルタの入出力ファイル形式に関して以降に示す。なお，出力されるファイルの中で，バイナリ
形式のファイルは全てヘッダ，フッタなしの単精度であり，リトルエンディアンに統一されている。
ファイル形式としては図 5 に示す SPLIT 形式（別名 KVSML 形式），サブボリューム集約形式，ステップ集約形式の 3 種類が利用可能である。SPLIT 形式では全てのステップ・サブボリューム毎に独立なファイルを生成する。しかしながら，この方式では 8 分木の階層が増大するとファイル数が爆発的に増大するためサブボリューム毎に時間方向にファイルを集約するサブボリューム集約形式，および，ステップ毎に空間方向にファイルを集約するステップ集約形式を利用可能とした。ファイル形式の詳細を以下で説明する。

図 5

3 つのファイル形式の模式図

３.４.１. 入力データ形式
フィルタプログラムで処理できる入力データは以下の通り。
（１）

AVSFLD バイナリデータ※1（２）

AVSUCD アスキー・バイナリデータ※1（３）

STL バイナリデータ※２（４）

PLOT3D バイナリデータ※3（５）

VTK Legacy バイナリデータ※4※1.

AVS デ ー タ フ ォ ー マ ッ ト の 詳 細 に つ い て は http://www.cybernet.co.jp/avs/products/avsexpress/dataformat.html 等を参照。AVSUCD データは data 形式のみで，geom 形式，data_geom 形式は未対応。要素タイプは表 10 に示す２次元
要素，３次元要素に対応しており，混合要素も利用可能。

※2.

STL デ ー タ フ ォ ー マ ッ ト の 詳 細 に つ い て は https://en.wikipedia.org/wiki/STL_(file_format)等を参照。
※3.

PLOT3D デ ー タ フ ォ ー マ ッ ト の 詳 細 に つ い て は http://ntrs.nasa.gov/archive/nasa

17

/casi.ntrs.nasa.gov/19900013774.pdf 等を参照。
※4.

VTK デ ー タ フ ォ ー マ ッ ト の 詳 細 に つ い て は http://www.vtk.org/ 等 を 参 照 。 VTK
Structured

Points,VTK

Structured

Grid,

VTK

Rectilinear

Grid,

VTK

UnstructuredGrid，および， VTKPolygonalData を利用可能。

３.４.２. エンディアン
フィルタプログラムで扱うバイナリファイルは，リトルエンディアンに統一されている。リトルエ
ンディアンのマシン上ではエンディアンに関して特別な処理は必要ないが，ビッグエンディアンのマ
シンでは可視化データをリトルエンディアンで出力する，あるいは，リトルエンディアンに変換した
上でフィルタプログラムを実行する必要がある。

18

３.４.３. フィルタ出力情報ファイル(.pfi)
このファイルはバイナリ形式ファイルである。サブボリューム分割前のモデル全体の情報を１つのファイルにまとめて出力する。
全ノード数(int)
全要素数(int)
要素タイプ(int)※1
ファイルタイプ(int)※2
ファイル数(int)※3
成分数(int)
開始ステップ(int)
最終ステップ(int)
サブボリューム数(int)※4
全体 3 次元空間 X 軸最小値(float)
全体 3 次元空間 Y 軸最小値(float)
全体 3 次元空間 Z 軸最小値(float)
全体 3 次元空間 X 軸最大値(float)
全体 3 次元空間 Y 軸最大値(float)
全体 3 次元空間 Z 軸最大値(float)
サブボリューム 1 ノード数(int)
サブボリューム 2 ノード数(int)
サブボリューム 3 ノード数(int)：
サブボリューム n ノード数(int)
サブボリューム 1 要素数(int)
サブボリューム 2 要素数(int)
サブボリューム 3 要素数(int)：
サブボリューム n 要素数(int)
サブボリューム 1 X 軸最小値(float)
サブボリューム 1 Y 軸最小値(float)
サブボリューム 1 Z 軸最小値(float)
サブボリューム 1 X 軸最大値(float)
サブボリューム 1 Y 軸最大値(float)
サブボリューム 1 Z 軸最大値(float)
サブボリューム 2 X 軸最小値(float)
サブボリューム 2 Y 軸最小値(float)
サブボリューム 2 Z 軸最小値(float)
サブボリューム 2 X 軸最大値(float)
サブボリューム 2 Y 軸最大値(float)
サブボリューム 2 Z 軸最大値(float)：
サブボリューム n X 軸最小値(float)
サブボリューム n Y 軸最小値(float)
サブボリューム n Z 軸最小値(float)
サブボリューム n X 軸最大値(float)
サブボリューム n Y 軸最大値(float)
19

サブボリューム n Z 軸最大値(float)
ステップ 1 成分 1 最小値
ステップ 1 成分 1 最大値
ステップ 1 成分 2 最小値
ステップ 1 成分 2 最大値：
ステップ 1 成分 N 最小値
ステップ 1 成分 N 最大値：
ステップ m 成分 1 最小値
ステップ m 成分 1 最大値
ステップ m 成分 2 最小値
ステップ m 成分 2 最大値：
ステップ m 成分 N 最小値
ステップ m 成分 N 最大値※1. 要素タイプの定義は表 10 参照。
※2. ファイルタイプは以下の 3 つの形式。
・0：SPLIT 形式

・1：サブボリューム集約形式

・2・ステップ集約形式※3. ファイルタイプが「サブボリューム集約形式」の場合のファイル総数を示す。
※4. サブボリューム数は 8n_layer となる。
・n_layer=0：1 個

・n_layer=1：8 個

・n_layer=2：64 個

・n_layer=3：512 個・n_layer=4：4,096 個・n_layer=5：32,768 個

・n_layer=6：262,144 個

・n_layer=7：2,097,152 個

20

３.４.４. SPLIT ファイル形式
要素構成ファイルおよびノード座標ファイルは，サブボリューム単位に分割される。kvsml ファイ
ルおよび成分ファイルは，サブボリューム単位，ステップ単位に分割される。全ファイル数は，サブボリューム数×2+サブボリューム数×ステップ数×2となる。（例：n_layer=7&step=100：423,624,704 個）

３.４.４.１ フ ァ イ ル 構 成
prefix_XXXXX_YYYYYYY_ZZZZZZZ.kvsml………kvsml ファイル（アスキー形式）

prefix_YYYYYYY_ZZZZZZZ_connect.dat………要素構成ファイル（バイナリ形式）

prefix_YYYYYYY_ZZZZZZZ_coord.dat………ノード座標ファイル（バイナリ形式）

prefix_XXXXX_YYYYYYY_ZZZZZZZ_value.dat………成分ファイル（バイナリ形式）

XXXXX：ステップ数（5 桁数値）

YYYYYYY：サブボリューム番号（7 桁数値）

ZZZZZZZ：全サブボリューム数（7 桁数値）

３.４.４.２ kvsm l フ ァ イ ル 仕 様<?xml version="1.0" ?><KVSML><Object type="UnstructuredVolumeObject"><UnstructuredVolumeObject cell_type="要素タイプ"><Node nnodes="サブボリューム内 ノード数"><Value veclen="成分数"><DataArray type="float" file="prefix_XXXXX_YYYYYYY_ZZZZZZZ_value.dat" format="binary" /></Value><Coord><DataArray type="float" file=" prefix_YYYYYYY_ZZZZZZZ_coord.dat" format="binary" /></Coord></Node><Cell ncells="サブボリューム内 要素数"><Connection><DataArray type="uint"

file=" prefix_YYYYYYY_ZZZZZZZ_connect.dat" format="binary" /></Connection></Cell></UnstructuredVolumeObject></Object></KVSML>21

３.４.４.３ 要 素 構 成 フ ァ イ ル 仕 様要素 1 構成ノード 1
要素 1 構成ノード 2：
要素 1 構成ノード n
要素 2 構成ノード 1
要素 2 構成ノード 2：
要素 2 構成ノード n
要素 3 構成ノード 1
要素 3 構成ノード 2：
要素 3 構成ノード n：
要素 N 構成ノード 1
要素 N 構成ノード 2：
要素 N 構成ノード n

３.４.４.４ ノ ー ド 座 標 フ ァ イ ル 仕 様
ノード 1
ノード 1
ノード 1
ノード 2
ノード 2
ノード 2
ノード 3
ノード 3
ノード 3

X 座標
Y 座標
Z 座標
X 座標
Y 座標
Z 座標
X 座標
Y 座標
Z 座標
：
：
ノード m X 座標
ノード m Y 座標
ノード m Z 座標

22３.４.４.５ 成 分 フ ァ イ ル の 仕 様
ノード 1
ノード 2
ノード 3
ノード n
ノード 1
ノード 2
ノード 3
ノード n
ノード 1
ノード 2
ノード 3
ノード n

成分 1
成分 1
成分 1
：
成分 1
成分 2
成分 2
成分 2
：
成分 2
成分 m
成分 m
成分 m
：
成分 m

23

３.４.５. サブボリューム集約ファイル形式
要素構成，ノード座標および全ステップの成分が，サブボリューム単位に分割される。指定により複数サブボリューム情報を１ファイルに集約することも可能である。全ファイル数は，最大でサブボ
リューム数となる。（n_layer=7：2,097,152 個）

３.４.５.１ フ ァ イ ル 構 成
prefix_YYYYYYY_ZZZZZZZ.dat ………（バイナリ形式）
prefix：接頭辞

YYYYYYY：ファイル番号（7 桁数値）

ZZZZZZZ：全ファイル総数（7 桁数値）

24

３.４.５.２ フ ァ イ ル 仕 様（サブボリュームが 1 つの場合）
開始サブボリューム番号
終了サブボリューム番号要素 1 構成ノード 1
要素 1 構成ノード 2：
要素 1 構成ノード n
要素 2 構成ノード 1
要素 2 構成ノード 2：
要素 2 構成ノード n
要素 3 構成ノード 1
要素 3 構成ノード 2：
要素 3 構成ノード n
要素 4 構成ノード 1
要素 4 構成ノード 2：
要素 4 構成ノード n：：
要素 N 構成ノード 1
要素 N 構成ノード 2：
要素 N 構成ノード n
ノード 1 X 座標
ノード 1 Y 座標
ノード 1 Z 座標
ノード 2 X 座標
ノード 2 Y 座標
ノード 2 Z 座標
ノード 3 X 座標
ノード 3 Y 座標
ノード 3 Z 座標
ノード 4 X 座標
ノード 4 Y 座標
ノード 4 Z 座標：：
ノード m X 座標
ノード m Y 座標
ノード m Z 座標

サブボリューム情報

要素単位

要素構成

ノード単位

ノード座標

25

ステップ 1ステップ 1ステップ 1

ノード 1
ノード 2
ノード 3

成分 1
成分 1
成分 1

成分単位

：
ステップ 1ステップ 1ステップ 1ステップ 1

ノード n 成分 1
ノード 1 成分 2
ノード 2 成分 2
ノード 3 成分 2

ステップ単位：
ステップ 1ステップ 1ステップ 1ステップ 1

ノード n 成分 2
ノード 1 成分 m
ノード 2 成分 m
ノード 3 成分 m：

ステップ 1

ノード n
：
：
：
：
ステップ M ノード 1
ステップ M ノード 2ステップ M ノード 3：ステップ M ノード nステップ M ノード 1
ステップ M ノード 2ステップ M ノード 3：ステップ M ノード nステップ M ノード 1
ステップ M ノード 2ステップ M ノード 3：ステップ M ノード n

成分 m

成分 1
成分 1
成分 1
成分 1
成分 2
成分 2
成分 2
成分 2
成分 m
成分 m
成分 m
成分 m

26

（サブボリュームが複数の場合）
開始サブボリューム番号
終了サブボリューム番号要素 1 構成ノード 1
要素 1 構成ノード 2：
要素 1 構成ノード n：
要素 N 構成ノード 1
要素 N 構成ノード 2：
要素 N 構成ノード n
ノード 1 X 座標
ノード 1 Y 座標
ノード 1 Z 座標：
ノード m X 座標
ノード m Y 座標
ノード m Z 座標
：
：
：
：
：
：
：
要素 1 構成ノード 1
要素 1 構成ノード 2：
要素 1 構成ノード n：
要素 N 構成ノード 1
要素 N 構成ノード 2：
要素 N 構成ノード n
ノード 1 X 座標
ノード 1 Y 座標
ノード 1 Z 座標：
ノード m X 座標
ノード m Y 座標
ノード m Z 座標
ノード m X 座標
ノード m Y 座標
ノード m Z 座標

サブボリューム情報

要素構成

サブボリューム 1

ノード座標

要素構成

サブボリューム n

ノード座標

27

ステップ 1ステップ 1

ノード 1
ノード 2

成分 1
成分 1

ノード n

成分 1

：
ステップ 1

サブボリューム単位：
ステップ 1ステップ 1

ノード 1
ノード 2

成分 m
成分 m

ノード n

成分 m

：
ステップ 1：：ステップ 1ステップ 1

ステップ単位

ノード 1
ノード 2

成分 1
成分 1

ノード n

成分 1

：
ステップ 1

サブボリューム単位：
ステップ 1ステップ 1

ノード 1
ノード 2

成分 m
成分 m

ノード n
：
：
：
：
ステップ N ノード 1
ステップ N ノード 2：ステップ N ノード n：ステップ N ノード 1
ステップ N ノード 2：ステップ N ノード n：：ステップ N ノード 1
ステップ N ノード 2：ステップ N ノード n：ステップ N ノード 1
ステップ N ノード 2：ステップ N ノード n成分 m：ステップ 1

成分 1
成分 1
成分 1
サブボリューム単位

成分 m
成分 m
成分 m
ステップ単位

成分 1
成分 1
成分 1
サブボリューム単位

成分 m
成分 m
成分 m

28

３.４.６. ステップ集約ファイル形式
要素構成ファイルおよびノード座標ファイルは，それぞれが 1 つのファイルとなり（全サブボリュー
ムの情報を１つのファイルに集約），成分ファイルは，ステップ単位に分割される。全ファイル数は，ステップ数＋2 となる。

３.４.６.１ フ ァ イ ル 構 成
prefix_connect.dat………要素構成ファイル（バイナリ形式）

prefix_coord.dat………ノード座標ファイル（バイナリ形式）

prefix_XXXXX_value.dat ………成分ファイル（バイナリ形式）
prefix：接頭辞

XXXXX ：ステップ数（5 桁数値）

29

３.４.６.２ 要 素 構 成 フ ァ イ ル 仕 様
サブボリューム 1
サブボリューム 1：
サブボリューム 1
サブボリューム 1
サブボリューム 1：
サブボリューム 1
サブボリューム 1
サブボリューム 1：
サブボリューム 1：
サブボリューム 1
サブボリューム 1：
サブボリューム 1：
サブボリューム M
サブボリューム M：
サブボリューム M
サブボリューム M
サブボリューム M：
サブボリューム M
サブボリューム M
サブボリューム M：
サブボリューム M：
サブボリューム M
サブボリューム M：
サブボリューム M

要素 1 構成ノード 1
要素 1 構成ノード 2

要素単位

要素 1 構成ノード n
要素 2 構成ノード 1
要素 2 構成ノード 2
要素 2 構成ノード n
要素 3 構成ノード 1
要素 3 構成ノード 2

サブボリューム単位

要素 3 構成ノード n
要素 N 構成ノード 1
要素 N 構成ノード 2
要素 N 構成ノード n
要素 1 構成ノード 1
要素 1 構成ノード 2
要素 1 構成ノード n
要素 2 構成ノード 1
要素 2 構成ノード 2
要素 2 構成ノード n
要素 3 構成ノード 1
要素 3 構成ノード 2
要素 3 構成ノード n
要素 N 構成ノード 1
要素 N 構成ノード 2
要素 N 構成ノード n30

３.４.６.３ ノ ー ド 座 標 フ ァ イ ル 仕 様
サブボリューム 1
サブボリューム 1
サブボリューム 1
サブボリューム 1
サブボリューム 1
サブボリューム 1
サブボリューム 1
サブボリューム 1
サブボリューム 1：：
サブボリューム 1
サブボリューム 1
サブボリューム 1：：：
サブボリューム M
サブボリューム M
サブボリューム M
サブボリューム M
サブボリューム M
サブボリューム M
サブボリューム M
サブボリューム M
サブボリューム M：：
サブボリューム M
サブボリューム M
サブボリューム M

ノード 1
ノード 1
ノード 1
ノード 2
ノード 2
ノード 2
ノード 3
ノード 3
ノード 3

X 座標
Y 座標
Z 座標
X 座標
Y 座標
Z 座標
X 座標
Y 座標
Z 座標

ノード m
ノード m
ノード m

X 座標
Y 座標
Z 座標

ノード 1
ノード 1
ノード 1
ノード 2
ノード 2
ノード 2
ノード 3
ノード 3
ノード 3

X 座標
Y 座標
Z 座標
X 座標
Y 座標
Z 座標
X 座標
Y 座標
Z 座標

ノード m
ノード m
ノード m

X 座標
Y 座標
Z 座標

ノード単位

サブボリューム単位31３.４.６.４ 成 分 フ ァ イ ル 仕 様
サブボリューム 1
サブボリューム 1
サブボリューム 1：
サブボリューム 1
サブボリューム 1
サブボリューム 1
サブボリューム 1：
サブボリューム 1
サブボリューム 1
サブボリューム 1
サブボリューム 1：
サブボリューム 1：：：
サブボリューム M
サブボリューム M
サブボリューム M：
サブボリューム M
サブボリューム M
サブボリューム M
サブボリューム M：
サブボリューム M
サブボリューム M
サブボリューム M
サブボリューム M：
サブボリューム M

ノード 1
ノード 2
ノード 3

成分 1
成分 1
成分 1

成分単位

ノード n 成分 1
ノード 1 成分 2
ノード 2 成分 2
ノード 3 成分 2

サブボリューム単位

ノード n 成分 2
ノード 1 成分 m
ノード 2 成分 m
ノード 3 成分 m
ノード n

成分 m

ノード 1
ノード 2
ノード 3

成分 1
成分 1
成分 1

ノード n 成分 1
ノード 1 成分 2
ノード 2 成分 2
ノード 3 成分 2
ノード n 成分 2
ノード 1 成分 m
ノード 2 成分 m
ノード 3 成分 m
ノード n

成分 m

32

３.５. パラメータファイル
パラメータファイルは（AVSFLD/UCD，PLOT3D，STL 用）フィルタ，および，VTK 用フィル
タで共通に使用されるアスキー形式のファイルである。フィルタ実行時の引数としてファイル名を指定することにより，そのファイルが入力パラメータとして解釈され，パラメータがセットされる。
表 8

フィルタ入力パラメータ一覧表

パラメータ名パラメータ内容

デフォルト値

備考

in_dir

入力ファイルディレクトリ

“.”

入力ファイルのディレクト
リパス※１

field_file

AVSFLD ファイル名-※2，※3，※4

stl_binary_file

STL ファイル名-※2

plot3d_config_file

PLOT3D 設定ファイル名

-

※2，※3

vtk_file

VTK ファイル名-※2，※3，※5

vtk_in_prefix

VTK 時系列ファイル名の-※2，※3，※5-※2，※3，※5

接頭辞
vtk_in_suffix

VTK 時系列ファイル名の接尾辞

ucd_inp

AVSUCD ファイル名-

アスキー形式※2

in_prefix

AVSUCD 時系列ファイル-

バイナリ形式※2-

バイナリ形式※2

名の接頭辞
in_suffix

AVSUCD 時系列ファイル
名の接尾辞

formatVTK，AVSUCD 時系列ス“%05d”

テップ数形式
out_dir

出力ファイルディレクトリ

“.”

出力ファイルのディレクト
リパス※1

out_prefix

出力ファイル名の接頭辞“output.”

start_step

開始ステップ数

1※6

end_step

終了ステップ数

1※6n_layer

八分木分割数00～7 までの整数

output_type

ファイル形式0

0:SPLIT 形式
1:サブボリューム集約
2:ステップ集約
上記以外出力なし

file_number

出力ファイル数00 以上の整数で，0 の場合
はサブボリューム数となる
サブボリューム集約ファイルの場合のみ有効33

mpi_volume_div

サブボリューム分割数1

サブボリュームの分割数※7mpi_step_div

ステップ分割数

1

ステップの分割数※7

mpi_div

MPI 並列における分割軸

2

0:ステップ分割数，サブボ
リューム分割数により決定
1:サブボリューム分割軸を優先
2:ステップ分割軸を優先
mpi_volume_divと

mpi_step_div が指定された場合は無効multi_elem_type

非構造格子の混合要素デー

0

タフラグ

0:単一タイプの要素のみで構成
1:複数タイプの要素で構成

temp_delete

混合要素データ実行時の一

1

時ファイル削除指示

0:一時ファイルを残す
1:一時ファイルを消す※1. ディレクトリ指定は，絶対・相対パスでの指定が可能であるが，~(チルダ)での指定は不可。
※2. field_file，stl_binary_file，vtk_file，vtk_in_prefilx（suffix），ucd_inp，in_prefix（suffix）のどれか一つを指定すること。
※3. 入力データが構造格子の場合は，3 次元では 6 面体一次要素（非構造格子），2 次元では 4 角形
一次要素（非構造格子）として出力される。
※4. nstep,ndim,dim1,dim2,dim3,veclen,coord [123],variable に関するパラメータのみ参照。
※5. VTK Legacy 形式については，5 つのデータ形式（VTK Structured Points, VTK Structured
Grid, VTK Rectilinear Grid, VTK UnstructuredGrid，および，VTKPolygonalData）をプ
ログラムが自動判別する。
※6. 時系列データのみで指定すること。
※7. mpi_volume_div と mpi_step_div が指定された場合，その積とプロセス数が一致しない場合はエラーとなる。

３.５.１. PLOT3D 設定ファイル
PLOT3D 設 定 フ ァ イ ル に よ っ て PLOT3D デ ー タ の フ ァ イ ル 形 式 を 記 述 す る 。 こ こ で ，usebytecount は Fortran バイナリで 1，C バイナリで 0 を設定する。
パラメータ名パラメータ内容

デフォルト値

coordinate_file_prefix

座標ファイル名の接頭辞-

coordinate_file_suffix

座標ファイル名の接尾辞-

coordinate_mode_precision

精度 (float | double)

doublecoordinate_mode_usebytecount

1 for true, 0 for false

truecoordinate_mode_endian

エンディアン (little | big)

littlecoordinate_mode_iblanks

1 for true, 0 for false

false

solution_file_prefix

ソリューションファイル名の接頭辞-

34

solution_file_suffix

ソリューションファイル名の接尾辞-

solution_mode_precision

精度 (float | double)

doublesolution_mode_usebytecount

1 for true, 0 for false

truesolution_mode_endian

エンディアン (little | big)

littlefunction_file_prefix

ファンクションファイル名の接頭辞-

function_file_suffix

ファンクションファイル名の接尾辞-

function_mode_precision

精度 (float | double)

doublefunction_mode_usebytecount

1 for true, 0 for false

truefunction_mode_endian

エンディアン (little | big)

little３.６. MPI 並列処理
MPI 並列処理における分割数の決定方法を説明する。以下では 50 ステップ×8 サブボリュームのデータ処理を考える。
（１） ステップ分割軸優先l

プロセス数がステップ数以下の時は，全ステップをプロセス数で分割する。
例) 8 プロセスで起動する場合の各プロセスの担当領域は 6 ステップ×8 サブボリューム，
もしくは，7 ステップ×8 サブボリュームとなる。

l

プロセス数がステップ数より大きい時は，フィルタ処理を行うプロセス数は，ステップ数の整数倍のプロセス数とし，サブボリューム数側の分割も行う。
例) 128 プロセスで起動する場合，50×2=100 プロセス（余り 28 プロセス）の処理となり，各プロセスの担当領域は１ステップ×4 サブボリュームとなる。

（２） サブボリューム分割軸優先l

プロセス数がサブボリューム数以下の時は，全サブボリュームをプロセス数で分割する。
例) 8 プロセスで起動する場合の各プロセスの担当領域は 50 ステップ×1 サブボリュームとなる。

l

プロセス数がサブボリューム数より大きい時は，フィルタ処理を行うプロセス数は，サブボ
リューム数の整数倍のプロセス数とし，ステップ数側の分割も行う。
例) 128 プロセスで起動する場合，8×16=128 プロセス（余り 0 プロセス）の処理となり，各プロセスの担当領域は 6 ステップ×1 サブボリューム，もしくは，7 ステップ×1 サ
ブボリュームとなる。

（３） ユーザ指定分割
lパラメータファイルによる指定では，分割数の積とプロセス数が一致しない場合はエラーとする。

35

３.７. ステージング環境での実行方法
京コンピュータにおけるステージング環境での実行方法に関して記述する。パラメータファイルの指定とファイル転送の指定に関しては整合性を図り，フィルタプログラムを起動する必要がある。また，フィルタプログラムの出力形式によっては，複数プロセスから１つのファイルに出力を行う場合がある。そのような場合には出力先を複数プロセスからアクセス可能な共有ディレクトリを指定する必要がある。

３.７.１. 実行シェルとパラメータファイル#!/bin/bash -x##PJM --rsc-list "elapse=01:00:00"#PJM --rsc-list "node=64"#PJM --rsc-list "rscgrp=small"#PJM --stg-transfiles all#PJM --mpi "proc=64"#PJM --mpi "use-rankdir"#PJM --stgin"rank=* ./filter%r:./"…………①#PJM --stgin"rank=* ./param.txt%r:./"…………②#PJM --stgin"rank=0 /data/ucd/ucd*.dat

0:../"…………③#PJM --stgout "rank=* %r:../output*.dat

./"

…………④

#PJM --stgout "rank=* %r:./pbvr_filter.*./LOG/"…………⑤#PJM -S. /work/system/Env_base
export PARALLEL=8
export OMP_NUM_THREADS=8
mpiexec -n 64 lpgparm -p 4MB -s 4MB -d 4MB -h 4MB -t 4MB filter param.txt………⑥① 実行モジュールを各プロセスのランクディレクトリに転送② パラメータファイルを各プロセスのランクディレクトリに転送③ 入力データを共有ディレクトリに転送（パラメータファイル内で指定するファイル）④ 出力データを共有ディレクトリからローカルディレクトリに転送⑤ ログおよびエラーファイルをランクディレクトリからローカルディレクトリに転送⑥ 各プロセスのランクディレクトリ内のパラメータファイルを引数として各プロセスのランクディ
レクトリ内の実行モジュールを起動。

36

#
in_dir=../…………⑦

field_file=pd3d.fld
out_prefix=case0
out_dir=./…………⑧

file_type=0…………⑨n_layer=3
start_step=0
end_step=511⑦ 入力データのパスを指定（ステージング環境では相対パスによる指定，上記例では，共有ディレク
トリから入力データを読み込む）⑧ 出力データのパスを指定（ステージング環境では相対パスによる指定。上記例では，各プロセス内のランクディレクトリへ出力）⑨ ファイル出力形式の指定（上記例では，SPLIT 形式）

３.７.２. 入出力ファイルとディレクトリ
ステージング環境におけるフィルタプログラムの入出力ファイルとディレクトリの関係を以下に示す。入出力先を共有ディレクトリに指定した場合は問題ない（ログ＆エラーファイルを除く）。出力デー
タに関しては，SPLIT 形式のみランクディレクトリに出力可能である。他のファイル形式ではデータ集約処理のため共有ディレクトリの使用が必要となる。

表 9
IO
入
力

出
力

京における入出力ファイルとディレクトリの対応表
種別

ランクディレクトリ

パラメータファイル
入力データ

出力データ

共有ディレクトリ

○

※1

○

○

※2

○

SPLIT 形式○○

ステップ集約形式

×○サブボリューム集約形式

×○

ログ＆エラーファイル○※3※1. パラメータファイルはランク 0 のみが入力※2. 全プロセスのランクディレクトリに全入力ファイルの転送が可能な場合。
※3. 出力先はランクディレクトリに固定

37×３.８. 要素タイプの混合した非構造格子の実行
複数要素タイプを含んだ非構造格子のボリュームデータの場合，フィルタプログラムでは，まず単一要素タイプ毎に分割した UCD バイナリデータを生成し，その後，その単一要素タイプの UCD バイ
ナリデータをフィルタプログラムでサブボリューム分割をし，PBVR サーバの入力となるファイル出力を行う。
次に示すようにパラメータファイル内のパラメータ名「multi_element_type」に 1 を設定することにより，フィルタプログラムは要素タイプ毎に分割したサブボリューム分割ファイルの出力を行う。
#
in_dir=.
in_prefix=MULTI
in_suffix=.dat
out_dir=.
out_prefix=div
out_prefix=.dat
format=%03
start_step=1
end_step=20
multi_element_type=1

要素タイプ毎に出力されるファイルは，ファイル名の先頭に要素タイプの 2 桁のコードが付加されたファイル名となる。以下に要素名と要素タイプコードの一覧を示す。

38

表 10

要素タイプ一覧表

要素名

要素タイプコード

3 角形

2

4 角形

3

4 面体

4

ピラミッド

5

プリズム

6

6 面体

7

3 角形 2 次

94 角形 2 次

10

4 面体 2 次

11

6 面体 2 次

14

上記パラメータファイルで，4 面体一次要素と 4 面体二次要素から構成されるボリュームデータの場合には以下のような出力ファイル名となる。

表 11

ファイル分割でのファイル名

オリジナル混合データ

4 面体一次データ

4 面体二次データ

MULTI001.dat

04-div001_～

11-div001_～

MULTI002.dat

04-div002_～

11-div002_～

MULTI003.dat⇒

04-div003_～

11-div003_～

MULTI004.dat

分割

04-div004_～

11-div004_～

04-div005_～

11-div005_～

MULTI005.dat：
MULTI020.dat：
04-div020_～

39：
11-div020_～

４

サーバ

４.１. 概要
サーバは，フィルタの出力データであるサブボリュームファイルを入力して PBVR 法による並列可視化を行い，可視化結果として粒子データを出力する。

４.２. 起動方法
PBVR はスーパーコンピュータ上で粒子データのみをバッチ処理で生成するバッチモード，および，
ソケット通信可能なサーバとクライアントを接続して対話処理により粒子データを生成するクライア
ント・サーバモード（クラサバモード）による処理が可能である。PC やワークステーション上のスタ
ンドアロン処理はクラサバモードでクライアントプログラムとサーバプログラムを同一マシン上で起動することにより実現する。サーバの起動方法を以下に示す。
（MPI+OpenMP での起動方法，N にプロセス並列数を入力する）$ mpiexec -n N CPUServer（OpenMP のみでの起動方法）$ CPUServer※1. MPI+OpenMP 版サーバはマスター・スレーブ型で動作するので，並列数 N はスレーブの並列数+１で指定。
※2. どちらの方法の場合も OpenMP スレッド数は環境変数 OMP_NUM_THREADS で指定。
※3. Window の場合は，VS2013 x64 Native Tools コマンドプロンプトを起動してコマンドを
実行。

表 12

サーバのコマンドラインオプション一覧

オプション

適用先

指定値

デフォルト

機能

-h

CS,B

-

-

オプションおよび指定可能パラメー
タの一覧を表示

-B

B

-

-

バッチモードを指定する

-pa

B

ファイル名

-

可視化パラメータファイルを指定す
る

-pd

B

実数値

1.0

40

画像の濃さを指定する

-S

B

u, m

u

粒子サンプリング方法（u:uniform sampling,
m:metropolis sampling）-plimitB

1～

1000000

粒子数制限値※299999999
-vin

B

ファイル名

-

入力ボリュームデータ名※2

-pout

B

ファイル名

-

出力粒子データファイル名※３

-p

CS

ポート番号

60000

ソケット通信ポート番号-viewerB

100 ～ 9999

620×620

ビューワ解像度

×

100

～

9999
※1. 適用先の凡例は，CS：クラサバモード，B：バッチモードである。
※2. このオプションは，-pa で指定するパラメータファイル内のオプションよりも優先される。
※3. 指定されたファイル名をプレフィックスとして“ファイル名_時刻番号_サブボリューム数_サブボリューム番号.kvsml”という形式の粒子ファイル群を生成する。

４.２.１. バッチモードでの起動
サーバ起動時のコマンドラインオプションとして –B を指定すると，バッチモードで起動する。バッ
チモードでの起動例（MPI+OpenMP 版）を以下に示す。
$ mpiexec –n 5 CPUServer –B -vin ./data/case.pfi -pout ./output/case –pa ./param.in
上記の例では，入力データ./data/case.pfi を可視化パラメータファイル./param.in に記述されたパラメータによって処理を行い，以下の粒子データを出力する。
./output/case_XXXXX_YYYYYYY_ZZZZZZZ.kvsml./output/case _XXXXX_YYYYYYY_ZZZZZZZ_colors.dat./output/case _XXXXX_YYYYYYY_ZZZZZZZ_coords.dat./output/case _XXXXX_YYYYYYY_ZZZZZZZ_normals.dat
ここで，XXXXX は時刻，YYYYYYY はサブボリューム番号，ZZZZZZZ は全サブボリューム数を示し，colors，coords，normals はそれぞれ色，座標，法線ベクトルのデータを示す。
バッチモードのサーバ起動時のコマンドラインオプション –pa で指定する可視化パラメータファ
イルはクラサバモードの対話処理によって生成する。このファイルをそのまま利用，あるいは，パラメータを編集し，バッチ処理で大量データの処理を行う。

41

４.２.２. クライアント・サーバモードでの起動
サーバ起動時のコマンドラインオプションとして –B を指定しなかった場合は，クライアント・
サーバモードで起動する。以下に起動例を示す。
$ mpiexec -n 5 CPUServer
first reading time[ms]:0
Server initialize done
Server bind done
Server listen done
Waiting for connection ...
上記のようにクライアントとのソケット通信の接続待ちになったら，別の端末からクライアントを起動する。なお，入力ボリュームデータ名はクライアント側で指定する。
サーバ起動時のポート番号の省略値は 60000 である。ポート番号は，以下のように起動時のコマンドラインオプション–p で変更できる。
$mpiexec -n 5 CPUServer -p 55555

４.２.３. ソケット通信によるクライアント・サーバの接続
４.２.３.１ ロ ー カ ル 接 続
以下では 1 台のマシン（machineA）でクライアントプログラムとサーバプログラムを起動する例を示す。この例ではクライアントプログラムとサーバプログラムの両方が machineA におけるデフォ
ルトのポート番号 60000 を用いて連携する。
手順 1[サーバ起動]
machineA> mpiexec –n 5 CPUServer
手順 2[クライアント起動]
machineA> PBVRViewer –vin filename

４.２.３.２ 2 点 間 リ モ ー ト 接 続
以下では遠隔地の 2 台のマシンでクライアントプログラム（machineA）とサーバプログラム（machineB）を起動する例を示す。この例では ssh ポートフォワードを用いて machineA の 60000
番ポートを machineB の 60000 番ポートに接続し，各マシンでクライアントプログラムとサーバプ
ログラムを起動することによってデフォルトのポート番号 60000 を用いて連携する。基本的には ssh
ポートフォワードが確立した後の起動方法はスタンドアロンと同じである。ssh ポートフォワードについては Windows の場合は TeraTerm，putty 等を用いて設定する。
手順 1[ssh ポートフォワード A→B]
42

machineA> ssh -L 60000:localhost:60000 username@machineB（machineA の 60000 番ポートを machineB の 60000 番ポートにフォワード）手順 2[サーバ起動]
machineB> mpiexec –n 5 CPUServer
手順 3[クライアント起動]
machineA> PBVRViewer –vin filename

４.２.３.３ 複 数 マ シ ン 経 由 の リ モ ー ト 接 続
以下では遠隔地の 2 台のマシンでクライアントプログラム（machineA）とサーバプログラム（machineB）を起動するが，セキュリティ上の理由等により machineC を経由して接続する例を示す。この場合も 2 点間の場合と同様に ssh ポートフォワードが確立した後の起動方法はスタンドアロ
ンと同じである。
手順 1[ssh ポートフォワード A→C]
machineA> ssh -L 60000:localhost:60000 username@machineC（machineA の 60000 番ポートを machineC の 60000 番ポートにフォワード）手順 2[ssh ポートフォワード C→B]
machineC> ssh -L 60000:localhost:60000 username@machineB（machineC の 60000 番ポートを machineB の 60000 番ポートにフォワード）手順 3[サーバ起動]
machineB> mpiexec –n 5 CPUServer
手順 4[クライアント起動]
machineA> PBVRViewer –vin filename

４.２.３.４ ssh ポ ー ト フ ォ ワ ー デ ィ ン グ の 接 続 確 認 方 法
ssh ポートフォワーディングによる接続ができているかどうかを確認するにあたり，クライアント
側からタイプインした文字列をサーバ側へエコー出力するだけの単純なソケット通信の動作確認用プ
ログラム（サーバ側プログラム名：server

クライアント側プログラム名：client）を利用すると便利である。このプログラムは以下から入手できる。
「C for Linux 2」小俣光之著 (株)秀和システム 2005 年 9 月
http://www.ncad.co.jp/~komata/c4linux2/
サーバ側起動方法
server ポート番号
クライアント側起動方法
client サーバホスト名

ポート番号

43

サポートページ４.２.３.５ 京 プ リ ポ ス ト サ ー バ と の 接 続 例
以下では応用例として研究室の PC（machineA）を「京」のログインノード（klogin）を経由してプリポストサーバ（pps3）に接続する例を示す。
手順 1[ssh ポートフォワード A→klogin]machineA> ssh -L 60000:localhost:60000 username@k.aics.riken.jp（machineA の 60000 番ポートを K ログインノードの 60000 番ポートにフォワード）手順 2[ssh ポートフォワード K ログインノード→プリポストサーバ]
klogin> ssh -L 60000:localhost:60000 username@pps3（klogin の 60000 番ポートを pps3 の 60000 番ポートにフォワード）手順 3[サーバ起動]
pps3> mpiexec –n 5 CPUServer
手順 4[クライアント起動]
machineA> PBVRViewer –vin filename

４.２.３.６ W indow s 環 境 ロ ー カ ル 接 続
以下では 1 台の Windows マシンででクライアントとサーバを起動する例を示す。ターミナルはVisualStudio2013 付属の VS2013 x64 Cross Tools コマンドプロンプトを使用するものとする。
手順 1[サーバ起動]
Windows> CPUServer.exe
手順 2[クライアントの Windows マシン用設定]
Windows> set TIMER_EVENT_INTERVAL=1000
手順 3[クライアント起動]
Windows> PBVRViewer.exe –vin pfi_filename
あるいは以下の内容のバッチファイルを作成し実行する。
set TIMER_EVENT_INTERVAL=1000
start PBVR_Server_win.exe
PBVRViewer.exe –vin pfi_filename

４.２.３.７ W indow s ク ラ イ ア ン ト の リ モ ー ト 接 続Windows マシンと遠隔サーバを接続するには，TeraTerm や Putty といった SSH クライアント
ソフトを利用してポートフォワーディングを行う。以下に Tera Term を用いたポートフォワードの方
法を示す。

44

（１） まず Tera Term を起動する。“新しい接続”ウインドウが立ち上がるが，“キャンセル”を選択する。

図 6（２） メニューバーから

Tera Term 操作例（１）

設定→SSH 転送を選択する。“SSH ポート転送”ウィンドウが立ち上がる。“追加”を選択する。

図 7

Tera Term 操作例（２）（３） “ポート転送を行う向きの選択”で“ローカルのポート”を選択し，そこにクライアント側
で使用するポート番号を入力する。
“リモート側ホスト”にサーバ側のドメイン名あるいは IP ア
ドレスを入力する。“ポート”にサーバ側で使用するポート番号を入力する。“OK”を選択する。これでポートフォワードの設定は完了となる。

45

図 8

Tera Term 操作例（３）（４） 次にポートフォワードされたサーバと接続する。メニューバーからファイル→新しい接続を選択する。“新しい接続”ウインドウが立ち上がるのでサーバ側のホスト名を入力し“OK”を選択する。“SSH 認証”ウインドウが立ち上がるので，ユーザ名とパスフレーズ，あるいは
秘密鍵のディレクトリを指定し“OK”を選択する。これでサーバに接続されたターミナルが起
動する。

図 9

Tera Term 操作例（４）以下にポートフォワード後のクライアント・サーバ起動の手順の例を示す。クライアント側のター
ミナルは VisualStudio2013 付属の VS2013 x64 Cross Tools コマンドプロンプトを使用するものとする。
手順 1[サーバ起動]46

Server> mpiexec –n 4 CPUServer –p server_port_number
手順 2[クライアントの Windows マシン用設定]
Windows> set TIMER_EVENT_INTERVAL=1000
手順 3[クライアント起動]
Windows> PBVRViewer.exe –vin server_pfi_filename –p client_port_number
Windows 側は以下の内容を記述したバッチファイルを作成し実行してもよい。
set TIMER_EVENT_INTERVAL=1000
PBVRViewer.exe –vin server_pfi_filename –p client_port_number

47

５

クライアント５.１. 概要
クライアントは，クライアント・サーバモード（以降，クラサバモードと表記）またはスタンドア
ロンモードで動作する。
クラサバモードでは，サーバの可視化結果として送信される粒子データを受信し，OpenGL を用いて描画する。また，サーバがボリュームレンダリングを行う際の可視化パラメータ（伝達関数等）を入力し，サーバへ送信する。クライアントとサーバ間のデータの送受信は，任意のポート番号による
ソケット通信で行う。
スタンドアロンモードでは，サーバがバッチモードで出力した粒子データファイルを読み込んで表示する。

５.２. 起動方法
クラサバモードおよびスタンドアロンモードでの起動例を以下に示す。正常に起動すると，ビューワ，メインパネル，伝達関数エディタ，タイムステップ制御，キャプチャの 5 つのパネルが開く。
（クラサバモードでの起動方法）※1$ PBVRViewer -vin [サブボリュームファイル名※2] [コマンドラインオプション]（スタンドアロンモードでの起動方法）$ PBVRViewer –pin1 [粒子データファイル名] [コマンドラインオプション]※1. クラサバモードはサーバを起動した状態で実行すること。
※2. サブボリュームファイル名は.pfi ファイルを絶対パス，もしくは，相対パスで指定。
表 13

クライアントのコマンドラインオプション一覧

オプション

適用先

指定値

デフォルト

機能

-h

CS,SA

-

-

オプションおよび指定可能パラメー
タの一覧を表示

-pd

CS,SA

実数値

1.0

画像の濃さを指定する

-S

CS

u, m

u

粒子サンプリング方法（u: uniform sampling,
m:metropolis sampling）-plimitCS

1～99999999

100000048

粒子数制限値※2

-tdataCS

all, div

all

粒子データ転送方式（all:ステップ一括転送,
div:サブボリューム分割転送）-pa

CS, SA

ファイル名-

パラメータファイルを指定する

-vin

CS

ファイル名

-

入力ボリュームデータ pfi ファイル
※２

-tf

CS

ファイル名

-

伝達関数※3

-p

CS

ポート番号

60000

ソケット通信ポート番号-viewer

CS, SA

100 ～ 9999 ×

620×620

ビューワ解像度

100～9999-shading

CS, SA{L/P/B},ka,kd,ks,n-

シェーディング方法 ※4-pout

CS, SA

ファイル名-

粒子データ出力ファイル名※5-pin1〜10

CS，SA

ファイル名

-

粒子データ入力ファイル名※5-iout

CS, SA

ディレクトリ名./

画像ファイル出力ディレクトリ名※1. 適用先の凡例は，CS：クラサバモード，SA：スタンドアロンモードである。
※2. このオプションは，-pa で指定するパラメータファイル内のオプションよりも優先される。

※3. 伝達関数ファイルは伝達関数エディタの Export File ボタンで出力される。起動後に伝達関数エディタの Apply ボタンを押すことで伝達関数が反映される。伝達関数エディタのImport File ボタンでも同様の伝達関数ファイルを読み込むことができる。
※4. シェーディング方法の指定は以下の通り。
L:ランバートシェーディング
効果：拡散反射を考慮したシェーディングを与える。
使用パラメータ：ka（物体の明るさに掛かる係数。0〜１の実数），kd（法線方向と光線方向から計算される拡散反射成分に掛かる係数。０〜１の実数）
P：フォンシェーディング
効果：ランバートシェーディングにハイライト効果を追加したもの。
使用パラメータ：ka,kd,ks（視線方向，法線方向，光線方向から計算される鏡面反射成分に掛かる係数。０〜１の実数），n（ハイライトの強さ。０〜１００の実数）
B：ブリン−フォンシェーディング
効果：フォンシェーディングの簡略化モデル
使用パラメータ：ka,kd,ks,n※5. 指定されたファイル名をプレフィックスとして“ファイル名_時刻番号_サブボリューム数_サブボリューム番号.kvsml”という形式の粒子ファイル群を生成する。

49

５.３. 終了方法
５.３.１. 通常終了
クライアントは時系列データの先頭時刻から描画を開始し，最終時刻の描画後は再度先頭時刻の描画に戻るというループ動作をする。このためクライアントの終了はクライアントプログラムを起動したコンソールにおいて Ctrl+c キーを押して行う。
クラサバモードでの動作中に Ctrl+c キーを押すと，クライアントとサーバの時刻更新のタイミング
で同期してサーバも終了する。ただし，タイムステップ制御パネルの Stop ボタンでクラサバ通信を中断させた状態だと Ctrl+c キーの入力は無視される。

５.３.２. 強制終了
サーバを Ctrl+c キーで終了させてしまうと，クライアントを Ctrl+c キーで終了させることができな
くなる。また，クライアントを Ctrl+c キーで終了させても，サーバでの粒子生成が長時間に及ぶ等で時刻更新がなされない場合は，クライアントもサーバも応答しない状態に陥ることがある。このような場合は以下に示すように，ps コマンドでクライアントとサーバのプロセス番号を取得し，kill コマ
ンドで強制終了させる。
【クライアントプロセスの強制終了】$ ps -C PBVRViewer
PID TTY
19582 pts/6

TIME CMD
00:00:00 PBVRViewer$ kill -9 19582【サーバプロセスの強制終了】$ ps -C CPUServer
PID TTY
19539 pts/5

TIME CMD
00:00:00 CPUServer$ kill -9 19539

50

５.４. 操作説明
５.４.１. ビューワ
図 10 に示すビューワには，粒子データの描画結果が表示される。

図 10

ビューワ

【操作方法】
回転：左クリックでマウス移動
移動：右クリックでマウス移動
拡大・縮小：マウスホイール，もしくは，Ctrl+マウスの上下操作
リセット：home ボタン（Mac では fn + left arrow）【表示内容】
time step：表示しているデータのタイムステップ
fps：フレームレート（frame/sec）

５.４.２. メインパネル
クラアイントのメインパネルを図 11 に示す。パネル内の各項目について以下に説明する。

51

図 11

メインパネル・PARTICLE DENSITY
画像の濃さに影響する粒子密度を指定する。
・PARTICLE LIMIT
伝達関数誤指定等による粒子数の爆発を避けるため，サーバ側で生成する粒子数の上限値を指定する。
・EYE POINT
カメラの視点位置を指定する。
・CENTER POINT
カメラが見込む位置を指定する。
・UP VECTOR
カメラの上方向ベクトルを指定する
・RESOLUTION
ビューワの解像度を指定する。
・SENDING
52

データ送信中であることを示す。
・RECIEVING
データ受信中であることを示す。
・CPU MEMORY
システムメモリの使用状況（単位：MB）を表示する。
・GPU MEMORYGPU レンダリング GPU メモリの使用状況（単位：MB）を表示する。
・PFI file path (SERVER)
サーバ上の入力ボリュームデータ pfi ファイル名を指定する。
・PBVR Filter information
サーバ上のボリュームデータに関する情報（フィルタ情報ファイルの内容）を表示する。
・CROP ボタン
特徴領域抽出パネルを表示する。特徴領域抽出パネルの詳細については後述。
・FILE ボタン
File パネルを表示する。File パネルの詳細については後述。
・Set Parameter ボタン
クライアントのパネルで指定したパラメータをサーバへ送信する。
・Transfer Function Editor ボタン
伝達関数エディタを表示する。伝達関数エディタの詳細については後述。
・Particle Panel ボタン
粒子統合エディタを表示する。粒子統合エディタの詳細については後述。
・Animation Control Panel ボタン
動画作成用パネルを表示する。動画作成用パネルの詳細については後述。

53

５.４.２.１ FILE パ ネ ル
可視化パラメータファイルの読み込みと保存に関する操作を行うパネルで，メインパネルの FILE
ボタンを押すと現れる。パネル内の各項目について以下に説明する。

図 12

FILE パネル・VIZ PARAMETER FILE
可視化パラメータファイルのパスを指定する。
・Browse ボタン
ファイルダイアログを表示して，可視化パラメータファイルのパスを指定する。
・Export FILE ボタン
可視化パラメータファイルを保存する。
・Import FILE ボタン
可視化パラメータファイルを読み込む。
・Close ボタン
本パネルを閉じる。

54

５.４.２.２ 特 徴 領 域 抽 出 パ ネ ル
形状指定した特徴領域の内側に含まれる要素のみを抽出して描画する操作に関するパネルで，メイ
ンパネルの CROP ボタンを押すと現れる。特徴領域の形状は，直方体，球，円筒のいずれかで指定す
る。

図 13

特徴領域抽出パネル【操作方法】
領域移動：３面図上でマウス移動
領域サイズ変更：３面図上で Ctrl+マウス移動
Select Object：特徴領域の形状を指定する
CROP：直方体領域
SPHERE：球PILLAR-XY base：XY 平面を底面とする円筒55

PILLAR-YZ base：YZ 平面を底面とする円筒PILLAR-XZ base：XZ 平面を底面とする円筒
CROP：直方体の範囲を指定する
SPHERE：球の中心と半径を指定する
PILLER：円筒の半径，高さ，底面の中心座標値を指定する
RESET：本パネルの内容を初期化する
APPLY：領域抽出を実行する
CLOSE：本パネルを閉じる
本パネルを表示すると，以下に示すように，特徴領域の形状がビューワ内に重ね書きされる。

図 14

Crop 機能適用時のビューワパネル

56

５.４.３. 伝達関数エディタ
伝達関数エディタでは，ボリュームレンダリングにおいてスカラーデータと色および不透明度の対応を定義する伝達関数を作成する。通常のボリュームレンダリングでは伝達関数は一つの物理量のみによって定義されるが，PBVR では（１） 色と不透明度に独立な変量を割り当てる。
（２） 各変量を座標 X,Y,Z，変量 q1,q2,q3…の任意の関数式で定義。
（３） １次元伝達関数 t1〜t5 をさらに任意の関数式で合成し，多次元伝達関数を定義。
という，新たな伝達関数設計を可能としたことで，極めて自由度の高い可視化処理を実現した。図 15に伝達関数エディタパネルを示す。パネル内の各項目について以下に説明する。

図 15

伝達関数エディタメインパネル【操作方法】
histogram スケール変更：Histogram 上でマウスを上下にドラッグ57

・Transfer Fuction RESOLUTION
伝達関数の解像度を指定する。
・Transfer Fuction SYNTHESIZER
t1～t5 の名称で作成した伝達関数同士の合成式を指定する。※1
・Transfer Fuction name プルダウンメニュー
作成対象の伝達関数の名称を指定する。選択肢は t1～t5。
・Reset ボタン
本パネルを初期状態にリセットする。
・Apply ボタン
本パネルで作成した伝達関数をサーバへ送信する。
・File Path
伝達関数ファイルを保存，読み込みする際のファイルパスを指定する。
・Export File ボタン
本パネルで作成した伝達関数を，-pa オプションで指定するパラメータファイルと同じ書式で，ファイルへ保存する。
・Inport File ボタン
ファイルに保存されている伝達関数を読み込んで本パネルへ反映する。
・Close ボタン
本パネルを閉じる。

５.４.３.１ カ ラ ー マ ッ プ 指 定 機 能【Transfer Fuction Color Map カテゴリ】
Transfer Fuction name で選択した伝達関数名に対応する変量と色の伝達関数を作成する。
・Color
本エディタで作成した，変量と色の伝達関数のカラーバーが表示される。
・Variable
選択した伝達関数名に対応する（合成）変量の定義式を指定する。定義式で使用できる変量の名称は以下。
物理量：q1, q2, q3,・・・qn
座標値：X, Y, Z
・Range Min
選択した伝達関数名に対する変量の最小値を指定する。
・Range Max
選択した伝達関数名に対する変量の最大値を指定する。
・Server side range min
Variable で指定した（合成）変量について，サーバ側で取得した最小値を表示する。
・Server side range max
Variable で指定した（合成）変量について，サーバ側で取得した最大値を表示する。
・Color Map Editor (freedom curve)ボタン
58

選択した伝達関数名に対応する変量と色の伝達関数をマウスによる自由曲線入力で作成する
パネルを出す。

図 16

Color Map Editor (freedom curve)パネル

・Color palette
横軸が彩度，縦軸が明度で，マウスの位置によりこれらを指定する。
・RGB 指定バー
色相をマウスの位置により指定する。Color palette と併せて作成した色が右上に表示される。
・Color
カラーバーを左クリックでなぞることによって，Color palette と RGB 指定バーで作成した色でバーを上塗りする。ここで，既存の色との合成比率はバーの縦軸方向のマウス位置によって決定される。例えば，カラーバー上辺を左右になぞれば，なぞった範囲を指定色のみで塗りつぶし，カラーバー上下中央位置を左右になぞれば，なぞった範囲を既存色と 50％の割合で合成する。
・Reset ボタン
本パネルを初期状態に戻す。
・Undo ボタン
１マウスアクションを取り消す。
・Redo ボタン
取り消したマウスアクションを再実行する。
・Save ボタン
本パネルで作成した伝達関数を保持する。
・Cancel ボタン
59

本パネルを閉じる。
・Color Map Editor (expression)ボタン
選択した伝達関数名に対応する変量と色の伝達関数を数式記述で作成するパネルを出す。

図 17

Color Map Editor (expression)パネル

・Color
本パネルで作成した伝達関数のカラーバーが表示される。
・R
色の R 成分の伝達関数式を記述する。
・G
色の G 成分の伝達関数式を記述する。
・B
色の B 成分の伝達関数式を記述する。
・Save ボタン
本パネルで作成した伝達関数を保持する。
・Cancel ボタン
本パネルを閉じる。
・Color Map Editor (control points)ボタン
選択した伝達関数名に対応する変量と色の伝達関数を制御点指定で作成するパネルを出す。

60

図 18

Color Map Editor (control points)パネル

・Color
本パネルで作成した伝達関数のカラーバーが表示される。
・Control Point
制御点（最大 10 個）の値を CP1)～CP10)に指定する。
・Red
制御点の値に対応する色の R 成分値を指定する。
・Green
制御点の値に対応する色の G 成分値を指定する
・Blue
制御点の値に対応する色の B 成分値を指定する
・Save ボタン
本パネルで作成した伝達関数を保持する。
・Cancel ボタン
本パネルを閉じる。
・Color Map Editor (select colormap)ボタン
選択した伝達関数名に対応する変量と色の伝達関数をあらかじめ用意されているカラーバー
から選択して作成するパネルを出す。

61

図 19

Color Map Editor (select colormap)パネル

・Color
本パネルで作成した伝達関数のカラーバーが表示される。
・Default Color プルダウンメニュー
伝達関数として設定するカラーバーを選択する。選択肢は以下。
RainBow
Blue-white-red
Black-red-yellow-white
Black-blue-violet--yellow-white
Black- yellow-whiteBlue-green-red
Green-red-violet
Green- blue--white
HSV model
Gray-scale
・Save ボタン
本パネルで作成した伝達関数を保持する。
・Cancel ボタン
本パネルを閉じる。

５.４.３.２ 不 透 明 度 指 定 機 能【Transfer Fuction Opacity Map カテゴリ】
Transfer Fuction name で選択した伝達関数名に対応する変量と不透明度の伝達関数を作成する。
・Opacity
本エディタで作成した，変量と不透明度の伝達関数曲線を表示する。
・Variable
選択した伝達関数名に対応する（合成）変量の定義式を指定する。定義式で使用できる変量の名称は以下。
物理量：q1, q2, q3,・・・qn
62座標値：X, Y, Z
・Range Min
選択した伝達関数名に対する変量の最小値を指定する。
・Range Max
選択した伝達関数名に対する変量の最大値を指定する。
・Server side range min
Variable で指定した（合成）変量について，サーバ側で取得した最小値を表示する。
・Server side range max
Variable で指定した（合成）変量について，サーバ側で取得した最大値を表示する。
・Color Map Editor (freedom curve)ボタン
選択した伝達関数名に対応する変量と不透明度の伝達関数をマウス操作による自由曲線入力で作成するパネルを出す。

図 20

Opacity Map Editor (freeform curve)パネル

・Opacity
不透明度の伝達関数をマウス操作で作成する。左ドラッグで自由曲線を描く。右クリックで2 点間の線形補間直線を描く。
・Reset ボタン
本パネルを初期状態に戻す。
・Undo ボタン
１マウスアクションを取り消す。
・Redo ボタン
取り消したマウスアクションを再実行する。
・Save ボタン
本パネルで作成した伝達関数を保持する。
・Cancel ボタン
本パネルを閉じる。
・Color Map Editor (expression)ボタン

63

選択した伝達関数名に対応する変量と不透明度の伝達関数を数式記述で作成するパネルを出
す。

図 21

Opacity Map Editor (expression)パネル

・Opacity
O で入力した数式に基づき，不透明度の伝達関数を指定する曲線が描かれる。
・O
不透明度の伝達関数を指定する曲線の数式を記述する。
・Save ボタン
本パネルで作成した伝達関数を保持する。
・Cancel ボタン
本パネルを閉じる。

64

・Color Map Editor (control point)ボタン
選択した伝達関数名に対応する変量と不透明度の伝達関数を制御点指定で作成するパネルを
出す。

図 22

Opacity Map Editor (control points)パネル

・Opacity（上段）
本パネルで作成した不透明度の伝達関数を指定する折れ線が描かれる。
・Control Point
制御点（最大 10 個）の値を CP1)～CP10)に指定する。
・Opacity（中段右側）
制御点の値に対応する不透明度を指定する。
・Save ボタン
本パネルで作成した伝達関数を保持する。
・Cancel ボタン
本パネルを閉じる。

65

５.４.３.３ 関 数 エ デ ィ タ
伝達関数エディタにおける伝達関数合成，変量合成，カラーマップ曲線，不透明度曲線の入力に使用される関数エディタで使用できる組み込み関数は以下の通り。

表 14

関数エディタで利用可能な演算

演算

書式

+

+

-

-

×

*

/

/

Sin

sin(x)Cos

cos(x)Tan

tan(x)Log

log(x)Exp

exp(x)

平方根

sqrt(x)

冪乗

x^y

66

５.４.４. タイムステップ制御パネル
タイムステップ制御パネルを図 23 に示す。各ウィジットの動作は以下のとおり。

図 23

タイムステップ制御パネル

・Progress
タイムステップの進捗状況をパーセント表示する。
・Time step
レンダリングを行うタイムステップを指定する。
・Min Time
最小タイムステップを指定する。
・Max Time
最大タイムステップを指定する。
・Start/Stop
サーバ/クライアント間の通信を開始または停止する。

67

５.４.５. 粒子統合エディタ
複数の粒子データを統合して表示する Particle パネルを図 24 に示す。パネルの操作方法は以下の
通り。

図 24

粒子統合エディタ・Display Particle
統合表示の対象となる粒子データの一覧を示す。粒子データは サーバから送られてきた

データ，もしくは，クライアントのローカルファイルから読み込んだデータ（最大 10個まで）から構成される。
①Server チェックボックス
クラサバモードで動作中にサーバから送られてきた粒子データを統合表示の対象とする場合にチェックする。スタンドアロンモードで動作中のときはチェックできない。
②(Particle1)～(Particle10)チェックボックス
クライアントのローカルファイルから読み込んだ粒子データを統合表示の対象とする場合にチェックする。粒子データが読み込まれていない状態ではチェックできない。後述する
Particle file パネルで粒子データを読み込む，または，クライアント起動時のオプション-pin1, -pin2・・・, pin10 で，粒子データファイルを指定すると，読み込んだ粒子データ
ファイル名が表示され，統合表示の対象としてチェックできるようになる。
・Keep Initial Step68

開始タイムステップが異なる粒子データを統合表示するときに，時系列の開始前に先頭のタ
イムステップのデータを表示する粒子データの一覧を示す。
・Keep Final Step
終了タイムステップが異なる粒子データを統合表示するときに，時系列の終了後に最終のタ
イムステップのデータを表示する粒子データの一覧を示す。
・Particle File (Add/Export) ボタン
Particle File パネルを表示する。
・Delete Particle プルダウンメニュー
Display Particle の一覧から削除する粒子データを選択する。
・Delete ボタン
Delete Particle プルダウンメニューで選択した粒子データを Particle パネルの一覧から削除する。
・Close ボタン
本パネルを閉じる。

５.４.５.１ PARTICLE FILE パ ネ ル
粒子データファイルの読み込みと保存に関する操作を行うパネルで，Particle Panel の Particle
File ボタンを押すと現れる。パネル内の各項目について以下に説明する。

図 25

PARTICLE FILE パネル

・Close ボタン
Particle File パネルをクローズする。
【Add Particle カテゴリ】
・Add Item プルダウンメニュー
クライアントのローカルファイルから Particle パネルの一覧へ粒子データを追加するときに，どの名前に対して追加するかを選択する。既に一覧へ追加済みの名前を選択した場合は，後から読み込んだ粒子データで上書きする。
69

・File path 欄
読み込む粒子データファイル名を指定する。
・Browse ボタン
ファイルダイアログを表示して，File path 欄へ入力する粒子データファイル名を指定する。
・Particle name (Optional)欄
粒子データを Particle パネルの一覧へ追加するときの名前を記述する。省略すると，File path欄で指定したファイル名が表示される。
・Add ボタン
File path 欄で指定した粒子データを，Particle パネルの一覧へ追加する。
【Export Particle カテゴリ】
・File path 欄
出力する粒子データファイル名を指定する。
・Browse ボタン
ファイルダイアログを表示して，File path 欄へ入力する粒子データファイル名を指定する。
・Export ボタン
メモリ上にある粒子データを統合して File path 欄で指定したファイルへ出力する。

70

５.４.６. 画像ファイル作成
ビューワに表示した内容をキャプチャして保存し，動画として再生できる。以下の２つのモード
でのキャプチャができる。
l

イメージキャプチャ

ビューワに表示した内容を時刻毎の連番画像ファイルとして保存する。画像ファイルの形式はBMP である。保存した一連の画像ファイルは，ImageMagic の convert や ffmpeg 等の外部コマ
ンドを用いて，mpeg 等の動画ファイルとして圧縮できる。
l

キーフレームアニメーション

ビューワに表示した内容に対応するビュー情報を，任意のタイミングでキーフレームとして保存する。保存した一連のキーフレームは動画として再生できる。
動画作成用パネルの内容を図 26 に示す。パネル内の各項目について以下に説明する。

図 26

動画作成用パネル・capture プルダウンメニュー
イメージキャプチャの開始／終了を措定する。選択肢は off または on。
・image file71

イメージキャプチャした内容を連番画像ファイルとして保存するときのファイル名の，ベース名の部分を指定する。省略値は「PBVR_image」。
・file
キーフレームアニメーションでキャプチャしたキーフレームを保存するファイル名を指定する。省略値は「./xform.dat」。
・interpolation
キーフレームアニメーション再生時にキーフレーム間のビューを補間するときのフレーム数を指定する。省略値は 10。補間は線形・等間隔で行う。
・total key frames
キーフレームアニメーションで現在キャプチャされているキーフレームの数を表示する。初期値は 0。x キーの操作が成功する度に現在値+1，d キーの操作が成功する度に現在値-1，
D キーの操作が成功すれば 0 という表示結果になる。
・total animation frames
キーフレームアニメーション再生時のフレーム数を表示する。フレーム数は，(total key frames の値 – 1) * interpolation の値である。
・Close ボタン
本パネルを閉じる。

５.４.６.１ イ メ ー ジ キ ャ プ チ ャ
イメージキャプチャを行うときの操作方法を説明する。
【操作方法】①

image file で，連番画像として保存するファイル名のベース名の部分を指定する。

②

capture プルダウンメニューで on を選択する。

③

時刻の更新毎にビューワの表示内容が連番画像として保存される。

④

capture プルダウンメニューで off を選択すると，連番画像の保存を停止する。

連番画像は，クライアント起動時に-iout オプションで指定したディレクトリの下に保存される。
-iout を省略した場合，クライアントを起動したディレクトリの直下に連番画像が保存される。
file で指定したベース名が PBVR_image の場合，保存される連番画像の名前は以下のようになる。
PBVR_image.00001.bmp
PBVR_image.00002.bmp::
後述するキーフレームアニメーションの再生をイメージキャプチャした場合は，以下に示す例のよ
うに，連番画像として保存するファイル名のベース名の最後に ”_k” が補われる。
72

PBVR_image_k.00001.bmp
PBVR_image_k.00002.bmp::

５.４.６.２ 静 止 画 の キ ー フ レ ー ム ア ニ メ ー シ ョ ン
タイムステップ制御パネルの stop ボタンを押した状態の静止画からキーフレームアニメーションを作成するときの操作方法を説明する。
【キーフレームをキャプチャし，ファイルに保存する】①

file で，キーフレームを保存するファイル名を指定する。

②

ビューワウィンドウをマウスカーソルでクリックしてアクティブにする③

キーフレームとしてキャプチャしたい描画内容に対して，キーボードの x キーを押す。これにより x キーを押した時点の描画内容に対応するビュー情報をキーフレームとしてメモリ上に保存する。

④③の操作を必要な数だけ繰り返す。

⑤

キーボードの M（Shift+m）キーを押す。これによりメモリ上に保存したキーフレームをアニメーションとして再生する。

⑥

再生内容に問題が無ければ，キーボードの S（Shift+s）キーを押して，キーフレームをファイルに保存する。

【ファイルに保存したキーフレームを再生する】①

file で，キーフレームが保存されているファイル名を指定する。

②

ビューワウィンドウをマウスカーソルでクリックしてアクティブにする③

キーボードの F（Shift+f）キーを押す。これによりファイルに保存したキーフレームをアニメーションとして再生する。

F キーを押した後に x キーを押すと，ファイルからメモリ上に読み込んだキーフレームに対して新
たなキーフレームを追記する。

キーフレームアニメーションで使うキーの機能を表 15 に示す。
表 15

キーフレームアニメーションの操作キー

キー

機能

x

現在のビューワの表示に対応するビュー情報をキーフレームとしてメモリ上に保存するd

メモリ上の最終キーフレームを削除する

D

メモリ上の全てのキーフレームを削除する

73

M

メモリ上のキーフレームをアニメーション表示／一時停止する

S

メモリ上のキーフレームをファイルへ保存する

F

ファイルからメモリ上に読み込んだキーフレームをアニメーショ
ン表示する

74

５.４.６.３ 時 系 列 デ ー タ の キ ー フ レ ー ム ア ニ メ ー シ ョ ン
時系列データのキーフレームアニメーションを作成する場合の動作について説明する。
①

時系列データを描画中に x キーを押すと，キーフレーム情報として，ビューと共に，現在表示している時系列オプジェクトのタイムステップ番号を保存する。ただしオブジェクトのファイ
ル名は保存しない（これにより，オブジェクト A で作成したキーフレーム情報をオブジェクト
B に対して適用することができる）。

②

S キーを押したときに，ビューと共に，タイムステップ番号もキーフレーム情報としてファイルへ保存する。

③

F キーを押したときに，ビューと共に，タイムステップ番号もメモリに読み込んでキーフレー
ムアニメーションを開始する。これにあたり，パネルの interpolation で指定したコマ数でタ
イムステップ番号を補間しながら，対応するタイムステップ番号のオブジェクトをキーフレー
ムとして読み直す。
時系列オブジェクト
キーフレーム情報
No.

タイムステップ番号

0

00002

1

00004

2

00025

3

00035

00002,00003
00004,00006,00008～00024
00025,00026,00027～00034
00035～00044

図 27

時系列データのキーフレームアニメーション構成

図 27 の例で interpolation を 10 フレームに指定した場合，キーフレーム No.0 と No.1 の間のビュー
情報を補間した 10 個のビューをタイムステップ番号 00002 と 00003 のデータに割り当てて 5 フ
レームずつ表示する。次に，キーフレーム No.1 と No.2 の間の 10 フレームに関しては 10 個のビュー
を時間方向に等間隔に割り当てて，タイムステップ番号 00004，00006，…000024 のデータを
表示する。

75

５.４.６.４ キ ー フ レ ー ム 情 報 フ ァ イ ル の フ ォ ー マ ッ ト
キーフレーム情報を保存するファイル（省略値は「./xform.dat」）はバイナリファイルである。そのファイルフォーマットを図 28 に示す。

型

サイズ
(byte)

用途

int

4

タイムステップ

float

4rotation[0].x

float

4

rotation[0].y

float

4

rotation[0].z

ファイルフォーマット

float

4

rotation[1].x

キーフレームデータ 1

float

4

rotation[1].y

キーフレームデータ 2

float

4

rotation[1].z

float

4

rotation[2].x

float

4

rotation[2].y

float

4

rotation[2].z

float

4

translation.x

float

4

translation.y

float

4

translation.z

float

4

scaling.x

float

4

scaling.y

float

4

scaling.z:

図 28

キーフレーム情報ファイルのフォーマット

76

６

サンプルデータを用いた可視化事例

サンプルデータ gt5d.tgz を用いた可視化処理によって PBVR の機能を説明する。

６.１. フィルタ処理
gt5d.tgz を展開すると./gt5d 以下に下記のファイルが生成される。
gt5d.fld

AVS フィールドファイル

co3d.dat

座標データ

pd3d.dat

変量１

psid.dat

変量２

param.txt

フィルタプログラム入力パラメータ

demo.tf

デモ用伝達関数ファイル

フィルタプログラムを実行する。（OpenMP 版）$ filter ./gt5d/param.txt
param.txt の内容は以下の通り。
#
in_dir=./gt5dfield_file=gt5d.fld
out_dir=./gt5d
out_prefix=casestart_step=0
end_step=4
上記の例ではデフォルトの SPLIT ファイル形式，領域分割数１とし，入力と出力に同じディレクト
リを指定している。この処理によって指定ディレクトリに以下のファイルが生成される。
case.pfi

pfi ファイル

case_YYYYYYY_ZZZZZZZ_connect.dat

要素構成ファイル

case_YYYYYYY_ZZZZZZZ_coord.dat

ノード座標ファイル

case_XXXXX_YYYYYYY_ZZZZZZZ.kvsml

kvsml ファイル

case_XXXXX_YYYYYYY_ZZZZZZZ_value.dat

成分ファイル77

６.２. プログラム起動[手順１]

サーバプログラムを実行する（OpenMP 版）。

$ CPUServer
first reading time[ms]:0
Server initialize done
Server bind done
Server listen done
Waiting for connection ...
[手順２]

クライアントプログラムを実行する。この起動例では伝達関数ファイル demo.tf を起動時に読み込み，粒子生成処理にメトロポリスサンプリングを使用，シェーディングパラメータにフォンシェーディングを設定している。ここで，初期に読み込んだ伝達関数ファイルは伝達関数エディタの Apply ボタンを押さないと反映されないことに注意。
$ PBVRViewer -S m -vin ./gt5d/case.pfi –tf demo.tf -shading P,0.6,0.6,0.6,30

78

図 29

PBVR 起動直後の状態

79

６.３. 伝達関数の設計
以下では 2 変数の構造格子ボリュームデータである gt5d.fld に対して PBVR の高度な伝達関数設計機能を適用した可視化事例を紹介する。

６.３.１. 単変量のボリュームレンダリング
まずは伝達関数 t1 を図 30 のように設定して変数 q1 の概要を確認する。この例では，パネル左側の色の設計とパネル右側の不透明度の設計の両方に変数 q1 を使用して単変量のボリュームレンダリ
ングを行っている。

図 30

変量 q1 に対する単変量ボリュームレンダリング

80

６.３.２. 多変量のボリュームレンダリング
次に変量 q1 と変量 q2 を合成する多変量のボリュームレンダリングの事例を示す。この例では，色の設計に変量 q1 を使用し，不透明度の設計に変量 q2 を使用している。不透明度の伝達関数では変量
q2 のトーラス状の等値面 2 枚を抽出し，そこでの変量 q1 の変化を色で示している。

図 31

変量 q2 の等値面に変量 q1 の色をマップする多変量ボリュームレンダリング

81６.３.３. 断面表示
多変量ボリュームレンダリングの応用例として図 32 に断面表示例を示す。この例では不透明度の設計に座標を使用している。PBVR では伝達関数設計に任意の関数を利用可能であり，この例では
X^2+Z^2=const.という円筒面を抽出して，そこでの変量 q1 の変化を示している。

図 32

多変量ボリュームレンダリング機能を応用した断面表示

82

６.３.４. 伝達関数の合成
PBVR における伝達関数の合成機能を説明する。図 33 では不透明度を座標 Y で与え，Y>0 の領域
を透明にする伝達関数 t4 を定義し，伝達関数 t4 と先に定義した 3 つの伝達関数 t1,t2,t3 を(t1+t2)*t4+t3 と合成することにより部分領域を抽出する可視化例を示している。伝達関数の合成にあたり，t2 と t3 の色は（R,G,B）＝（0,0,0）と設定し，t4 の色は（R,G,B）＝（1,1,1）と設定している。これに上記合成式を適用すると，色の設計は t1 で使用されている q1 の rainbow によって定義される。一方，不透明度の設計は t1 と t2 を合成したものに t4 をかけて Y<0 の領域を抽出し，それと t3 の円筒面を合成したものが定義される。PBVR では通常の領域抽出機能を Crop パネルで実装しているが，伝達関数による領域抽出機能は着目する等値面やボリュームレンダリングのみに適用できるので極めて自由度が高い。

図 33

伝達関数の合成機能

83

６.４. 粒子データの統合
前節では多次元伝達関数を用いたボリュームレンダリング表示，等値面表示，断面表示の統合例を示したが，粒子統合機能を用いても同様の複雑な可視化処理を実現できる。以下にその手順を説明する。

６.４.１. 粒子データの保存
粒子データの保存は粒子統合エディタにおける Particle File パネルを使用して行う。図 34 に粒子
データファイル名の指定例を示す。この場合にはプレフィックスが p1 となり，以下のファイルが生成される。
./particle/p1_XXXXX_YYYYYYY_ZZZZZZZ.kvsml./particle/p1_XXXXX_YYYYYYY_ZZZZZZZ_colors.dat./particle/p1_XXXXX_YYYYYYY_ZZZZZZZ_coords.dat./particle/p1_XXXXX_YYYYYYY_ZZZZZZZ_normals.dat
ここで，XXXXX は時刻，YYYYYYY はサブボリューム番号，ZZZZZZZ は全サブボリューム数を示し，colors，coords，normals はそれぞれ色，座標，法線ベクトルのデータを示す。粒子データファ
イル名を入力し，Export ボタンを押すと粒子保存が開始され，粒子データの保存処理中は図 35 に示
すように Export ボタンが非アクティブ状態となり，全時系列の粒子データを保存後に粒子保存が終了し Export ボタンがアクティブ状態に復帰する。

図 34

Particle File パネル（粒子データ保存前後）

84

図 35

Particle File パネル（粒子データ保存中）

６.４.２. 粒子データの読み込み
以下の例では図 30〜図 32 に示す可視化結果を保存した粒子データ p1〜p3 を読み込んで合成する例を示す。ここでは以下のコマンドでクライアントプログラムをスタンドアロンモードで起動し，コマンドラインオプションで粒子データを指定して読み込む。（クラサバモードの場合には Particle
panel で粒子データを指定して読み込む。）$ PBVRViewer -shading P,0.6,0.6,0.6,30 –pin1 ./particle/p1 –pin2 ./particle/p2 –pin3 ./particle/p3
起動後に Particle panel を開くと p1〜p3 が読み込まれている。ここで，p1 の Display Particle
チェックボックスをオンにすると図 36 のようにボリュームレンダリングの粒子データが表示される。
次に，p2，および，p3 のチェックボックスをオンにすることで，図 37 のように３つの粒子データが統合される。Particle File パネルを使用して統合された粒子データを１つの粒子データとして保存することも可能である。粒子統合機能を使用する際には，全ての粒子データが同じ particle density，
および，particle limit パラメータ（コマンドラインオプション”-pd”，および，”-plimit”，もしくは，Main panel で指定）を用いて処理されたデータでないと正しい合成画像とならないことに注意
すること。

85

図 36

図 37

p1 の表示結果

p1，p2，および，p3 の統合表示

86

６.５. 可視化結果の保存
伝達関数の設計が完了し，必要な可視化処理が完了したら可視化結果を保存する。可視化結果を保存するには以下の 3 つの方法が利用できる。
（１） 画像出力（５.４.５）
可視化結果を画像ファイルとして出力するには画像出力パネルの capture を on にする。
これにより，ビットマップ画像ファイルが生成される。
（２） 伝達関数ファイル（５.４.３）
可視化に用いた伝達関数を保存するには伝達関数エディタの File Path に伝達関数ファイル
名を入力し，Export File ボタンを押す。これにより生成される伝達関数ファイルは Import
File ボタンで読み込み可能である。ただし，伝達関数読み込み後に Apply ボタンを押さな
いと伝達関数が反映されないことに注意すること。
（３） 可視化パラメータファイル（５.４.２）
バッチモードのサーバ処理用に伝達関数を含めた全ての可視化パラメータファイルを保存できる。メインパネルの File サブパネルでファイル名を指定し，Export File ボタンを押して可視化パラメータファイルを保存する。

６.６. バッチモード処理
前節で保存した可視化パラメータファイルを用いるバッチモードの処理例を説明する。バッチモー
ドはスーパーコンピュータ上の超並列処理を想定して開発された機能であるが，スタンドアロンモー
ドの描画処理では粒子生成処理の待ち時間がなくなるため，時系列データの高速な描画にも適用が可
能である。

[手順１]

サーバプログラムをバッチモードで実行する（OpenMP 版）。

$ CPUServer –B –vin ./gt5d/case.pfi –pout ./output/case –pa ./param.in[手順２]

クライアントプログラムをスタンドモードで実行する。

$ PBVRViewer –pin1 ./output/case -shading P,0.6,0.6,0.6,30

87