Zindaiji 3 ver 1.09

English

Zindaiji 3 は、天文学におけるN体計算などに代表される、大規模な粒子シミュレーションを可視化するためのアプリケーションです。 Zindaijiという名前は、国立天文台付近の地名にちなんでつけられています。 Zindaiji 3 の目標は…

となっています。目標3は手がける前にZindaiji4の開発を始めてしまいました^ ^);

Zindaiji4(開発中)
ボリュームデータの可視化はこちら

Zindaijiシリーズの特徴

旧版と比べて強化点としては次のようなものがあります、もしくはそうなる予定です。

Zindaiji3はOpenGLとそのシェーダー機能を利用しています。速いグラフィックボードの付いたPCでの利用が推奨です。OpenGLのバージョンが1.5より以前の古いものだと機能しないと思われます。OpenGL 3.0以上が推奨です。

外付けグラフィックボードを使用しない(ノートPCなどの)環境では、Intel の CPUグラフィックスだと、多くの機能が動作しない可能性が高いです。現時点ではAMD の APUのほうがグラフィックスは強いようです。

ギャラリー

更新履歴

2012/01/15 ver0.30
2012/01/19 ver0.32
2012/01/31 ver0.35
2012/02/13 ver0.37
2012/02/27 ver0.40
2012/03/17 ver0.42
2012/04/04 ver0.45
2012/04/22 ver0.47
2012/04/24 ver0.48
2012/05/15 ver0.50
2012/05/31 ver0.52
2012/06/25 ver0.54
2012/07/06 ver0.56
2012/07/19 ver0.58

2012/08/06 ver0.60
2012/08/27 ver0.62
2012/09/14 ver0.64
2012/10/13 ver0.66
2012/11/12 ver0.68
2012/12/30 ver0.70
2013/03/13 ver0.72
2013/07/05 ver0.74
2013/08/24 ver0.76
2013/10/05 ver0.78
2013/11/12 ver0.79
2013/11/25 ver0.80
2013/12/17 ver0.81
2014/01/08 ver0.82

2014/02/06 ver0.83
2014/03/16 ver0.84
2014/03/25 ver0.85
2014/04/24 ver0.86
2014/05/16 ver0.87
2014/06/20 ver0.88
2014/07/24 ver0.89
2014/09/18 ver0.90
2014/10/22 ver0.91
2014/11/15 ver0.92
2014/12/11 ver0.93
2015/01/07 ver0.94
2015/02/04 ver0.95
2015/02/25 ver0.96

2015/03/23 ver0.97
2015/04/06 ver0.975
2015/04/27 ver0.98
2015/06/08 ver0.985
2015/07/09 ver0.99
2015/08/24 ver0.995
2015/11/09 ver1.00
2015/12/28 ver1.01
2016/01/29 ver1.02
2016/02/29 ver1.03
2016/04/04 ver1.04
2016/05/09 ver1.05
2016/08/08 ver1.06
2016/10/31 ver1.07

2017/02/21 ver 1.071
2017/04/27 ver 1.08
2020/06/23 ver 1.083
2020/10/20 ver 1.09










ダウンロード

バージョン 1.08

Zindaiji3Win109.zip
Zindaiji3Linux109.zip
Zindaiji3MacOSX072.zip(ver 0.74 以降はまだ)

Zindaiji3Help.zip .chm 形式のヘルプファイル 別途ダウンロードして Resource/HELP/ に置く

ソースコード

Zindaiji3SRC105.zip
Zindaiji3SRC100.zip
Zindaiji3SRC097.zip
Zindaiji3SRC096.zip
Zindaiji3SRC090.zip

インストール

圧縮ファイルを解凍して、全体を好きな場所に置きます。設定ファイルなどが実行ファイルの場所に書き込まれるので、自分が書き込みパーミッションの無い場所などには置かないでください。また、日本語や空白のあるパスは思わぬエラーの原因になる可能性があるので、避けてください。
レジストリーは弄らないので、削除するだけでアンインストールできます。

Windows 版(1.083)は、Visual Studio 2017 でコンパイルしたので、実行のために再配布可能パッケージがインストールされていることが必要です。
https://support.microsoft.com/ja-jp/help/2977003/the-latest-supported-visual-c-downloads

Linux版は wxWidget-gtk 及び Lua, openEXR のインストールが必要です。Ubuntu環境ではsynapticからインストールできます。
1.05 以降は、wxWidgets のバージョンは 3.0に、Lua のバージョンは 5.3、OpenEXR のバージョンは2.2 を使用しています。

Mac OS X 版は、開発環境が無くなったので、ver 0.72 までの32bit対応しかしていません。また、Mac OS X 版は、./Zindaiji3Mac.app/Contents/MacOS/Zindaiji3Mac をターミナルから実行する必要があります。まだMac初心者なので、ダブルクリックで実行できるようにする方法わからない…、というか本当に他人の環境で動くか分かっていないという。
また、ダイヤログをメインのウィンドウの下に隠すことが可能なので、狭い画面で使いにくいです(Win/Linux版は隠れない)。

開発初期段階につき、多くのバグが予想されます。そうした際にはブログなどで連絡ください。症状の再現性などがよければ改善できるかと思います。

コンパイル

コンパイルの手順と必要な環境などに関してです。

for Linux (Ubuntu)

for Windows

操作マニュアル

1. プレビュー画面の操作

2. データ読み込み

データ読み込みダイヤログ HDF5データ読み込み TOKI圧縮の解凍

PDCデータ読み込み .bphysデータ読み込み データ加工時の文法

3. メインメニュー

連番画像保存設定ダイヤログ 粒子データ出力ダイヤログ

PovRayレンダリング設定 ビューとカメラの設定 光源設定

カラーカーブエディタ テクスチャ設定

ステレオグラム設定 シーン設定ダイヤログ 設定ダイヤログ

4. 可視化のパラメータ

テクスチャ設定 表示オプション オブジェクト表示と擬似表示

5. フィルターパネル

ブーリアン フィルタリング 周期境界 画面外の省略処理 情報

オブジェクト テキスト グリッド 軌跡

データボックス コピーボックス フォグ 背景 解析

6. カメラパス設定

7. タイムラインエディタ

キーフレーム タイムリマップ マーカー 親子関係 グラフエディタ

8. エクスプレッション

編集ダイアログ データの作成 外部テーブルの参照

9. アニメーション

10. PovRayによるレンダリング

11. 大規模データの時には

12. 既知の問題とFAQ

1. プレビュー画面の操作

操作

デフォルトで一番大きいパネルがプレビューパネルになっていて、可視化された画面を表示する場所になっています。最初の状態ではグリッドとカメラと光源、そしてピボット(回転の中心、青い十字)が表示されます。

視点の移動の基本は、ピボットを中心とした回転(trackball)になっていて、マウスの左ボタンに割り当てられています。また。ctrl+マウス左ボタンで操作すると、ボタンを離すした後も視点の移動が継続します。

ズームは、マウスの中ボタンとマウスホィールに割り当てられています。 また、中ボタンがないマウスのために、Alt+マウス左ボタンが、マウスの中ボタンと同等の操作になるようになっています。

画面のパン(横移動)は、Shift+Ctrl+マウス左ボタンが割り当てられています。画面をパンすると、同時に回転の中心(ピボット)も動くことに注意してください。

パンすると、ピボットも動く。

アイテムの移動

プレビュー画面内で、アイテム(カメラと光源)を掴んで動かすことができます。
デフォルトでは、Shift+右マウスボタンで、アイテムを選択することができます。選択したアイテムは、Shift+左マウスボタンに割り振られています。
画面左下に、平行移動、回転、拡大縮小のボタンが用意されています。現在それぞれに対応するショートカットは、'T', 'R', 'S'となっています。

アイテムが選択されているときには、ガイドの矢印が表示されます。Shift+左ボタンでそれらをドラッグすることで、X軸、Y軸、Z軸にそっての移動ができます。平行移動の際は何もないところでドラッグをすると、視線と直行した面内での操作になります。また、「X」「Y」「Z」のショートカットキーで、X軸、Y軸、Z軸にそった移動のモードにすることができます。



マウス操作は、設定ダイヤログを使って変更することができます。

マウス以外で、キーボード入力でもアイテムの移動などの操作ができます。例えば「TX0.5+Enter」の入力で、選択アイテムをx方向に0.5動かすといった操作ができます。

視点

左上のプルダウンメニューで、視点の選択ができます。"Free"が上の操作法で自由に視点を操作できるモードです。 "Cam0"はカメラパスに従うモードで、時間を進めた時などに、自動的にカメラパスに従って視点が動きます。
その他の視点は、座標軸に沿った表示になります。

これらの視点は、ショートカットキーの0(Free) 及びに、1,3,7 と ctrl-1, ctrl-3, ctrl-7 に割り当てられています。
正投影と透視画法の切り替えはショートカットキーの5です。

アンカーを追跡モードでは、ピボットがカメラアンカーを追跡するようになります。シミュレーション中で注視点が動くカメラワークを編集するときなどに使います。

メモパネル



視点の選択でMEMOを選択すると、特殊な表示として文字を入力するウィンドウが表示されます。使用しているデータのメモや、パラメータのメモなど自由に使えます。
メモの内容もプロジェクトファイルに保存されます。

2. データ読み込み

メニューから、もしくはAlt-Ctrl-Oでデータ読み込みダイヤログを開きます。

基本はバイナリーかテキスト(アスキー)で書かれたデータファイルを読み込みます。
データの並び方や順番、ヘッダーファイルとして先頭の何行を読み取るかなど、自分で編集することで、ある程度までの柔軟性を持ってファイルの読み込みが行えます。

特殊なファイルとして、ある規則に従った HDF5 ファイルMaya, Blender のパーティクルシステムのキャッシュファイルを読み込むことができます。


3. メインメニュー

ファイル

プロジェクトファイルの読み込み/保存をおこないます。プロジェクトファイルの拡張子は、.zjp もしくは .zjp.gzとなります。

データ読み込みダイヤログを開きます。

画面上に表示されている画像を保存します。複数のパネルが表示されているときには、左上の画像が保存されます。連番画像保存では。連番画像保存設定ダイヤログを開きます。

スナップショットの保存は、パネルに表示されている画面をキャプチャして保存をするので、画像のサイズは自動的に設定されます。 任意のサイズの画像(4096x4096まで)を保存するときは、連番画像保存設定ダイヤログを使ってください。

また、スナップショットはファイルに保存するのではなくクリップボードにコピーすることができます。

粒子データなどをエクスポートすることができます。現時点では粒子データのみをエクスポートします。この機能によって、アスキーデータから(読み込みなどの速い)バイナリーデータへの変換などをすることができます

粒子データのエクスポート時のフォーマット編集は、粒子データ出力ダイヤログで行います。

シーンを閉じます。

Zindaiji3を終了します。

エディット

アンドゥ、リドゥを行います。

コピー、貼り付けの操作は、タイムライン上のキーフレームと、フィルターに対して行うことができます。

この操作はタイムライン上のキーフレームに対して行うことができます。

現在の時間フレームをダイアログを使って数値で入力します。

現在の時間フレームは、タイムラインエディタにある入力窓からも変更できます。

タイムリマップモードのオン/オフをします。タイムリマップモードでは、時間を一つのパラメータとして扱うので、初期状態を表示してから時間を進める、といった操作ができます。

メモリ上に展開されたデータの開放をします。

フィルター

フィルターを設定して、幾つかのデータの操作を行うことができます。複数のフィルタの設定も行えます。フィルターの詳細は、フィルターパネル上で行います。

Pov-Ray

PovRayを用いてシーンのレンダリングをすることができます。時間はかかりますが、レイトレーシングによって綺麗な出力を得ることができます。ただし、全てのデータを表示できるわけではなく、球や棒といった表面のある物体のみを表示することができ、SPHガス粒子のような表現はできません。

レンダリング設定のダイヤログを表示します。

シーンファイルのエクスポート、及びにPov-Rayを使ったレンダリングを行います。

表示

プレビューパネルを最大4つまで表示します。

プレビュー画面を一つだけもったウィンドウを表示させます。
このウィンドウは、"Alt+Enter" で最大化することができるので、充分軽いシーンなどでは、全画面再生(SPACE)をすることができます。
そのさいは、メインのウィンドウのデータ表示を切っておくと、パフォーマンスが上がります。


ダイアログ

ビューとカメラの設定を表示します。

光源設定を表示します。

グラフエディターを表示します。

カラーカーブエディタを表示します。

テクスチャ設定を表示します。

ステレオグラム設定を表示します。

周期境界を設定するダイヤログを表示します。この設定はデータ読み込みコピーボックスフィルター周期境界フィルターで用います。

シーンの長さなどを設定するシーン設定ダイヤログを開きます。

マウス操作などの設定をする設定ダイヤログを開きます。

ログ情報を表示するダイヤログを開きます。スクリプトのエラーメッセージなどが表示されます。

Lua スクリプト

エクスプレッションで用いる Lua スクリプト内から参照することのできる、数表のファイルを設定します。

4. 可視化のパラメータ

アトリビュート

このパネルは、それぞれの粒子の描画パラメーターを設定します。Attrib0-3は、粒子のType0-3にそれぞれ対応します。Zindaijiは4種類までの粒子を設定することができます。

Zindaijiは粒子を次のような手法で描画します。

板というのは、半透明のポリゴンの板をカメラの方向をむいて表示させるもので、ポリゴンにはガスの雲のようなテクスチャーが張ってあります。 多数の粒子を半透明な板として表示することで、擬似的に連続的なガスの表現もすることができるので、SPHシミュレーションなどの可視化に向いています。

品質のパラメータを変更すると、球を表示する際のポリゴン数が変わります。また、板表示の際に品質を上げると、カメラを厳密に向くようになります。(表示は若干遅くなります)品質中以上の設定は魚眼レンダリングなどに使います。

板と球(オブジェクト)の同時表示は、球の周囲に簡単なガスやグレアの効果を付加する時に使います。

アルファブレンドは、半透明な粒子を表示するときに、背後の色を(透明度に応じて)隠す描画法です。ガス雲が背後の星の光を隠すような表現に向いています。

加算モードは、粒子を描画するたびにその色をキャンバス上に加算するというもので、単純に密度を加算して表示するような場合や、星のような光り輝く粒子を表現するのに向いています。

また、右側のコンボボックスでは、レンダリング時に使用するシェーダーを変更できます。
「オリジナル」は、デフォルトのOpenGLのレンダリングを利用します。ハイライトの位置が近似的に計算されるので、魚眼レンダリングのときなどには破綻が生じます。

「グーロー」シェーディングは、オリジナルのレンダリングに似ていますが、多少違いがあります。ポリゴンの各頂点ごとに色を計算するので、ポリゴンの境界で星のような模様が見えることがあります。
「フォン」シェーディングでは、各ピクセルごとに色を計算するために、そうしたポリゴンの境界は目立たなくなります。


「トゥーン」シェーダーは、輪郭線付のイラスト的なレンダリングを行います。
視線に対して垂直に近い面を黒く塗る方法と、実際に輪郭を描画する方法をパラメータにより選ぶことができます。

後者の方法は、3角形ポリゴンのみで形成されたオブジェクトに対してのみ正しく描画が行われます。

「Scatter」シェーダーは、板表示用のシェーダーです。光源との位置関係に応じて、明るく、もしくは暗くなります。
光源を透かしてみると明るい前方散乱優先(-1)から光源側から見たほうが明るい後方散乱優先(+1)まで色ボタンの隣にある数値で設定します。

「Alpha Clip」シェーダーは、板表示用のシェーダーです。 擬似球や擬似オブジェクトの表示に効果的です。
不透明度が閾値以下の部分を切り取ります。Zソートを省略して表示を高速にすることが可能です。Clip処理を行わないと、図の様に先に描画された手前の粒子が背後の粒子を(透明部分であっても)隠してしまう現象が起こります。
この現象を防ぐために、Clipを行わない場合はZソートが必要でした。
境界がはっきりしているテクスチャーの場合のみ有効です。半透明を含むテクスチャを正しく表示するには、Zソートが必要になります。

Clipの閾値は、テクスチャ設定で設定できます。

「ノーマルマップ」は、カメラに対するポリゴンの法線方向を色で表現したものです。

この色情報を利用して、擬似球や擬似オブジェクト表示時に光源の向きを反映させることができます。

粒子の持つ半径データを用いて球または板の表示をするか、それとは無関係にある大きさ(1)で表示をするかを設定します。この値に対して、さらに半径の調整で設定した値が掛け合わされた大きさで表示を行います。

アルファ値は、粒子の不透明度を決めます(0が完全に透明)。 固定値に設定すると、全ての粒子が"アルファの調整"で決めた値に設定されます。

もし"半径依存(逆2乗)"にすると、半径に依存したアルファ値になります。
これはSPHシミュレーションの可視化に向いています。なぜなら、SPH粒子の密度は R-3に比例し、一方光線が粒子を通過する際の距離は R に比例するために、光の吸収量や発光の量は、一次的には R-2 に比例するためです。 この場合は、不透明度は Max[Amax, (R/Rbase)2], として描画しています。ここで、Rbase と Amax の値は、基準/最大値の行で設定する値になります。

より複雑な不透明度依存性を設定するには、エクスプレッション機能を使用してください。

粒子の色 (板と点)を設定します。 ボタン左にあるグラフのアイコンをクリックすると、固定カラーとカラーカーブモードを変更します。 ボタンを押すと、固定カラーの選択ダイヤログかカラーカーブエディターが表示され、そこでカラーカーブの編集をすることができます。

粒子の色 (球)を設定します。 3つの色はそれぞれ環境(ambient)、散乱(diffuse)、反射(specular)に対応します。 光源の反対側で本来光の当たらない部分でも環境光の色で表示されることになります。(光が周辺で散乱して回り込んでいるという扱いになります。) 光源側では、さらに角度に応じて散乱色と反射色が環境色に足しあわされて表示されることになります。

これらの色もカラーカーブエディターで編集をすることができます。

テクスチャ設定

テクスチャ設定やシェーダーの詳細な設定、PovRay使用時の表面の設定などはテクスチャ設定使用します。

テクスチャ設定を開いた状態で、パネルのタブを選択することで、その種類の粒子の設定を行えます。

表示オプション

このパネルでは表示の品質と速度のバランスに関係するパラメータを設定します。

粒子を間引いて表示します。間引いた分は、残りの粒子の半径や不透明度が大きくなるように表示し、見た目の印象が大きくは変わらないようにしてあります。

半透明の粒子を表示するときには、奥の物体の色に応じて手前の物体の見え方が変わるために、奥から手前に向かって順番に表示をしなければなりません。そのための計算を行うかどうかを設定します。

半透明を使わないとき、完全に加算のみを使って表示をする場合にはZソートをする必要がないので、高速化ができます。
また、ランダムを設定すると、表示の順番をランダムに設定します。

数種類の粒子が混在している場合、OpenGLの描画のステータスを粒子ごとに更新するのにかなりの時間がかかります。
粒子の分類を、"粒子種0として表示", に設定すると全ての粒子を粒子種0として表示して、描画ステータスの更新のかなりの部分を省略して、描画を高速化することができます。特に粒子の種類分けがない場合には、"粒子種0として表示"を選択するようにしてください。

また、粒子種の情報の無いデータなどで、1000番以降は粒子種1で表示をするといった設定は、エクスプレッションで実現することができます。

シャドウボリューム法を使って、影を計算することができます。球を表示している場合のみ有効です。
影を有効にすることによって、現実感を大きく向上させることができますが、レンダリングスピードはかなり遅くなります。

レンダリングスピードは、影領域を計算するのに使うポリゴンの数とその面積に大きく依存します。

長さパラメータを小さくすることでレンダリング速度を上げられますが、見たい構造のスケールよりも短くすると影が正しく表示されなくなります。
「影ポリゴンを表示」モードにすることで、影の計算用のポリゴンを明示的に表示することができるので、パラメータの調整を見ながら行うことができます。

個別の光源に関して影のオン/オフを設定するには、光源設定ダイヤログを使用します。

これらのパラメータで、影の計算用のポリゴンの品質と長さを設定できます。
レンダリング時間の観点から、長さのパラメータは表示が破綻しない限り小さい数にするべきです。

オーバーレイ表示

時間や、カラーカーブの情報をプレビュー画面上に表示することができます。表示の位置は、コンボボックスから選べます。 時間については、表示する際に頭につける文字や、文字のフォント、サイズなどを選べます。(日本語フォントはシステムで用意されたリストからは適切なフォントを選択してくれないようです。カスタムを選んで自分でフォントを選択することができます。)
その右の4つのチェックボックスは、4種類のアトリビュートに対応しています。

カラーカーブの透明度は、市松模様の背景を使って表現されます。また、透明度情報のない単純なカラーカーブも選択できます。("アルファ値を表示しない" を選択します)

また、カラーカーブ上の目盛表示も On/Off ができます。

*既知の問題* 目盛上の数字がはみ出して見えなくなる場合があるので、表示部分の修正の必要があります。

露光

Zindaiji3 は、16bit FBO を利用して描画をしているので、メモリー内ではモニター上に表示されている8bit画像よりも多くの情報を持っています。レベル補正とガンマ補正のパラメータによって、元の16bit画像をどのように8bit画像にマッピングするかを調整できます。
現時点では、画像保存時は8bit画像の保存のみが実装されています。

また、色相と彩度もこのパネル内で調整が行なえます。


5. フィルターパネル

フィルターのパラメータ設定は、フィルターパネルで行います。複数のフィルターの設定ができ、順番に表示されます。各フィルタの最上部のボタンで、パネルを畳んだり展開したりすることができます。
将来複数のフィルタが実装され、ブーリアンやオブジェクトといったカテゴリーごとに分類される予定です。

T, R, S の3つの数値は、位置(Translate)、回転(Rotate), 大きさ(Scale)に対応しています。


フィルタリング

ブーリアンフィルターは、領域外の粒子を隠したり、領域内部の粒子のみを表示したりする機能があり、断面図の表示などに使用します。

フィルタリングフィルターは、粒子の番号に応じて一部の粒子だけを表示したり隠したりする時に使用します。

周期境界フィルターは、周期境界の外にある粒子を折り返して表示します。

画面外の省略処理は、画面外の粒子の表示をスキップして高速化する処理をします。

情報フィルターは、粒子番号(またはID)を画面上に表示します。

オブジェクト

オブジェクトフィルターは、球や四角といった基本的な形状をシーンに配置します。

テキストフィルターは、球や四角といった基本的な形状をシーンに配置します。

棒フィルターは、分子動力学などの計算で、原子間にボンドを表示するような際に使います。

グリッドフィルターは、座標を表すためのグリッドを表示します。

軌跡フィルターは、粒子データの軌跡を表示します。



ワールド

データボックスフィルターは、データの原点の移動や回転、スケーリングといった処理を行います。意図は、カメラを旋回させる代わりにデータを回転させるといった操作を行えるようにすることにあります。

コピ−ボックスフィルターは、データを任意の方向に沿ってコピーして表示します。周期境界条件のシミュレーション、特に結晶の分子データなどに使います。

フォグフィルター を使うと、距離に応じて粒子の色が背景に溶け込むように変化します。
現時点では、シェーダーの利用中は効果がなく、オリジナルのOpenGLレンダリング中でののみ有効です。

背景フィルター は、背景として大きな球の上に画像テクスチャや星空、カラーカーブなどを表示します。

解析フィルター は、任意の解析用のスクリプトを実行して、結果を表示するフィルターです。


6. カメラパス設定

ビューとカメラの設定

ビューの設定の中のTranslateとRotateは、プレビュー画面で今見ているビューの位置と、方向のオイラー角を示しています。
一方、カメラパス設定の中のTranslateとRotateは、カメラワーク中の現在のカメラの位置と角度を示しています。

カメラワークのカメラは、タイムラインエディタ上で設定をすることができます。また、プレビューの設定をCam0にすると、ビューの位置が自動的にカメラワークの設定を追随するようになります。

「Look Anchor」 のチェックをすると、カメラは自動的にアンカーの方向を向くようになります。アンカーは初期には原点に配置されています。 このモードは、シミュレーション中の移動する現象を追いかけたいというような時に効果を発揮します。
ただし、アンカーの移動は手で調整しなければなりません。あらかじめ解析して得た位置をテキストファイルとして読み込む機能をつけるのはよい考えなので、いずれ実装します。


カメラワークの編集

左下の3つの「キー配置」ボタンが、カメラワークの編集に重要な役目をもっています。

「POS」 のボタンを押すと、現在のプレビュー画面のビューの位置にキーフレームを設定します。
「POS+ROT」のボタンでは、カメラの回転成分にもキーフレームが打たれます。

多くの場合、画面上でよい構図を探しながら、これらのボタンを使って適当な間隔キーフレームを配置することで、カメラワークの設定をすることができます。
「Look Anchor」モードなどでは、回転成分を変化させない方が良い場合もあるので、必要に応じて2つのボタンを使い分けてください。

「ANC」 ボタンではアンカーに対して、現在の"pivot"の位置でキーフレームを打ちます。

7. タイムラインエディタ

スライダー

タイムライン上の赤い線が現在の時間フレームを表します。スライダーを使って時間フレームとワーキングエリアの範囲を設定できます。
メインのスライダーの左側のテキスト入力窓で、数字入力で変更することもできます。

緑色の箱は、既にメモリ上にデータが読み込まれているフレームを表します。

キーフレーム

デフォルトでは、パラメータは時間依存が「OFF」になっており、すべてのフレームで一定の値になります
時間依存を「ON」にするにはボタンをクリックしてください。
時間依存するパラメータは、タイムライエディタで編集します。 キーフレームをタイムライン上に打つことで、その間の値は自動的に補間されます。

キーの挿入と除去は、右クリックメニュー、または画面左のチェックボックスによって行うことができます。

位置など多次元のパラメータは、x,y,zの3成分に対してバラバラにキーフレームを打って編集することができます。
バラバラに編集をするときには "リンク" ボタン を押してリンクモードを解除してください。

また、キー上でのダブルクリック、または右クリックメニューから呼び出すことのできるダイヤログによって、数値的にキーフレームの値を編集することができます。

補間のタイプについては、現在次のモードが実装されています。

STEP, LINEAR, HERMITE(AUTO), and HERMITE(SEMIAUTO).

HERMITE(AUTO) モードでは、キーフレーム間は3次関数で補間されます。キーフレームでの速度は、前後のキーフレームから自動的に計算されます。
HERMITE(SEMIAUTO) モードでは、「Ease」パラメータを設定できます、この値はそのキーフレームでの速度に掛け合わされます。
0に設定された時には、徐々に速度を落としながらその値に近づいてゆき、キーフレーム上でちょうど速度0になあります。
この機能によって、「イーズイン」「イーズアウト」といわれる動きの演出を行うことができます。



キーを挿入したときのデフォルトの補間タイプは画面下部の選択肢で設定しておくことができます。オート時は、すでに打った近くのキーと同じタイプになります。

ボタン類

左上のボタン類は次のような機能があります。

スナップショット

表示画面の一時保存と、その表示をすることができます。

表示パラメータを変える前との比較や、初期状態との比較などが、少ない操作数で行えます。また、再レンダリングを行わないので重い表示のときなどにも便利です。

時間依存ボタン

時間依存するアイテムのみを表示して、固定値のパラメーターを隠します。

シャイボタン

パラメータの数が増えすぎた場合などに、タイムライン上から一時的に隠すことができます。それぞれのパラメータのシャイボタンと、全体的なシャイボタン(左上のボタンです)をチェックすることで、そのパラメータは表示されなくなります。
もし必要なパラメータを隠してしまった場合には、左上のシャイボタンをオフにすることで、すべてのパラメータが表示されます。

アイコンに使われている鼻の大きいキャラクターは、キルロイといって昔流行った落書きだそうです。アフターエフェクトなどでこのマークが使われているので、マネして使わせてもらいました。

タイムリマップ



エディットメニュー(&E)でタイムリマップモードがONにすると、時間をパラメータの一つとしてコントロールできるようになります。
注)現時点で、タイムリマップ使用時にはデータの事前読み込みとメモリの解放の優先順位の判断にバグが残っています。

例)
100のファイルからなる連番データがあるとします。
もし最初と最後に50フレームずつ初期状態と終状態を見せたいというような場合には、シーンの長さを200に設定し、タイムリマップのキーフレームを 0(0frame)、0(50frame), 99(149frame), 99(199frame)に配置することで実現ができます。

マーカー

タイムライン上の時間表記部分には、右クリックメニューでマーカーを配置することができます。
このマーカーは、マウスで位置を動かしたり、A〜Dまでの文字を表示することができます。


親子関係

タイムライン上での右クリックメニューから、オブジェクトの親子関係を設定できます。



子のオブジェクトは親のオブジェクトに従って移動します。現在回転への追随は実装されていません。

グラフエディタ

グラフエディタでは、グラフの増減をグラフで確認したり、キーフレームを操作することができます。
グラフ表示の範囲は、マウスホイールか、パン操作(Shift + Ctrl + マウス左ボタン)で動かすことができます。


8. エクスプレッション

タイムライン上のパラメータ及びその他一部の機能に関しては、数式を入力して挙動を制御する(エクスプレッション)ことができます。



タイムライン上のパラメータについては、イコールボタンがエクスプレッションを有効にするボタンになっており、その隣のメモ帳とペンのアイコンが編集ダイヤログの呼び出しボタンになっています。

エクスプレッションを有効にすると、機能ごとに定められた入力値に対する戻り値をパラメータとして使うようになります。
例えばカメラ位置(x,y,z)に対して、return x+t,y,z というエクスプレッションを設定すると、等速で移動するカメラを設定することができます。

別の例として粒子の分類に対してエクスプレッションを右の様に設定することで、512番以降の粒子が粒子種1に、それ以外が粒子種0に設定されます。

エクスプレッションにはLuaライブラリを利用しているので、文法などはLua のドキュメント等を参考にしてください。

エクスプレッションによるデータ作成

Zindaijiの本来の用途は予め用意されたデータの可視化ですが、エクスプレッションを用いて0からデータを作成することができます。
例えば「回転する粒子円盤といった単純なモデルを表示する」といった用途に使えると思います。



読み込んだデータを加工して利用するには、データ読み込みダイヤログで設定を行います。 データ読み込み後にどのような加工をするか、ポスト処理の項目から編集を行います。

データを読み込まずに0からデータを作成するときは、形式上はダミーのデータを読んでそれに対して加工を行うことになります。その場合にはデータの読み込みではなく「スクリプトのみ実行」で読み込み(とスクリプト処理)を開始します。

データ加工時の文法

エクスプレッション内から外部テーブルの呼び出し

スクリプトで表現しづらい表現をしたい場合など、外部テーブルから数値を参照することができます。

外部テーブルを読み込むには、Lua からの呼び出し用テーブルを利用してください。

9. アニメーション


画面下のボタンによって時間をコントロールできます。
再生ボタンなどは見ただけでおおよその機能は想像できると思います。

間隔の数値は、再生時にスキップするフレーム数を設定します。
たとえば間隔2の場合は 0, 2, 4, 6, .... のフレームを表示します。
これらは、重いデータの編集時などに効果を発揮するはずです。

また、補間数は再生時にフレーム間を何コマで補間するかを設定します。たとえば補間数5で全10タイムステップのデータから連番画像を作ると、全部で50枚の画像が出力されることになります。
タイムステップ間の補間は、データ読み込み時にデータ読み込みダイヤログで設定したルールに従って行われます。

プリフェッチの数値で、事前読み込みの範囲を設定します。 例えばこの値を3にすると、現在のフレームから3ステップ分だけ事前にデータの読み込みを行います。
この事前読み込みは、描画とは別のスレッドを使って行うために、僅かしかパフォーマンスを落としません。そのため、適切に設定したプリフェッチ機能によって、編集時やレンダリング時の待ち時間を大幅に減らすことができます。

10. PovRayによるレンダリング

PovRayを用いてシーンのレンダリングをすることができます。時間はかかりますが、レイトレーシングによって綺麗な出力を得ることができます。ただし、全てのデータを表示できるわけではなく、球や棒といった表面のある物体のみを表示することができ、SPHガス粒子のような表現はできません。



レンダリング設定のダイヤログから詳細設定を行います


11. 大規模データの時には



大規模な粒子を扱う際にレンダリングに時間がかかりすぎ、操作が難しい場合に自動でレンダリングを中断する機能です。ONになっているときには、1秒で自動的にレンダリングが中断されます。
最終的にアニメーションを作成するような場合にはOFFにするようにしてください。

また、×ボタン上でマウスクリックにより、レンダリングを強制終了します。(正確には×ボタン上で左マウスボタンが押されていると。レンダリング中はOSによるクリック判定が行われないため)

Windows タイムアウト時間

Windowにおいては、ある程度以上処理に時間がかかり、OSに処理を返さないアプリケーションでは強制的に表示を「応答なし」とする処理を行います。(デフォルト時間5秒)そのため、5秒以上レンダリングに時間がかかると描画処理が中断されて画面に表示されなくなってしまいます。(正確には描画処理は進んでいるのですが、結果がウィンドウに表示されなくなります)
そのため描画に5秒以上かかる非常に大規模なデータを処理する際には、タイムアウト時間の変更が必要です。検索で設定する方法の情報は見つけることができます。

(この処理はレジストリの変更を伴う処理なので、慎重に行ってください。詳細は、Windows タイムアウト時間 HungAppTimeout 等で検索してください)。

12. 既知の問題とFAQ

Intel HD Graphics 等を搭載したノートPC等(グラフィック重視でないPC)では、デフォルトで表示が真っ暗になることがあります。 ビューとカメラの設定のRender設定を Direct Draw に変更することで、機能限定で表示できるようになることがあります。

一部のグラフィックボード及び組み込みのグラフィックシステムにおいて、画面の更新が滞ることがあります。(裏では動作しているのに、ウィンドウを隠して再表示するといったイベントが起きないと画面が更新されないという症状がでます)
この症状は、設定ダイヤログの「画面更新」の設定を変更することで解決する場合があります。

Ubuntuは、初期設定ではひとつのプロセスが多くのファイルを開けることができないようになっています。アイコン画像の読み込みが増えたため、「ファイルの開きすぎです」というエラーで中断される可能性があります。このエラーが発生する場合には、関連した設定の変更が必要になる可能性があります。検索で設定する方法の情報は見つけることができます。

Linux上のradeon系列のグラフィックボードを利用している際に、シェーダーを利用したレンダリングを行うとエラーが発生します。Ubuntu14.04上で問題の発生する箇所を確認しましたが解決策が判明していません。回避策としてパフォーマンス設定からシェーダの利用をOFFにしてください。



本アプリケーションは、OpenEXR ライブラリを利用しています。

本アプリケーションで追加された機能の一部(HDF5対応、クァッドバッファ利用、等)は、自然科学研究機構・核融合科学研究所における「自然科学研究における国際的学術拠点の形成」事業によって支援されています。
本アプリケーションで追加された機能の一部(確率論的透過処理Stochastic transparency、等)は、京都大学国際高等教育院情報メディア教育系小山田研究室に協力いただいて実装されました。

inserted by FC2 system