データ読み込みダイヤログ

データを読みこむために、Data Loader ダイアログでこれから読むデータがどのような形式のものかを設定しておきます。


データのタイプを設定します。バイナリーかテキスト(アスキー)を設定します。
拡張子に.gzが付いている場合は、gzip圧縮されたファイルとして、解凍して読み込みを行います。
解凍速度とのトレードオフの関係がありますが、アスキーデータなどは圧縮して保持するメリットがあるかもしれません。

特殊な場合としてHDF5ファイルPDCファイル(Maya のパーティクルシステムのキャッシュファイル)を読み込むことができます。
また、適切な設定をすることにより .bphys (Blender のパーティクルシステムのキャッシュファイル。2.76現在) を読み込むことができます。

補間のタイプを設定します。

特殊な場合として、粒子の位置が動かないで物理量だけが変化するような場合に、位置情報を別ファイルとして読み込みます。
毎ステップの位置情報を省略して、必要なデータ量を削減するための機能になります。
ボリュームデータのシミュレーションなどを点群として表示するような場合を想定しています。 外部ファイルの文法について

シーン中のデータ数が固定かどうかを設定します。もしも粒子数の増減がある、もしくはシミュレーション上の理由で粒子の順番が入れ替わったりしていなければ、こちらを選択します。 このモードでは、すべての時間ステップでのn番目の粒子は同一の粒子とみなすので、補間の計算の時に余計な計算の必要がなく少し速くなります。

粒子数の増減があったり、順番が入れ替わったりする場合には、タイムステップmとm+1のn番目の粒子が同一の粒子である保証がないために、各粒子のIDを用いて連続性のチェックを行います。同一IDの粒子を探すという操作が必要なために、補間の計算が遅くなる可能性があります。

Zindaiji3の連番ファイル名の読み込みは、

somename0000.dat
somename0001.dat
somename0002.dat
...

という、拡張子の直前に番号が来る連番ファイルを読み込むようになっています。拡張子の名前は何でも構いません。

Asciiタイプの場合は、最初の2行がヘッダーになっていて、そのタイムステップの時間と粒子数を与えます。
ヘッダーの後には本体のデータが続きます。1粒子ごとに1行になっていて、データの順番はデフォルト状態では下のようになっています。

TIME
PARTICLENUMBER
X Y Z VX VY VZ RADIUS ID TYPE VALUE1
X Y Z VX VY VZ RADIUS ID TYPE VALUE1
X Y Z VX VY VZ RADIUS ID TYPE VALUE1
以下繰り返し..

バイナリータイプの場合、float型またはint型のデータを順番に詰め込んでゆきます。最初の8バイトは、時間(float)と数(int)を示すデータになっていて、その後本体のデータが続きます。

バイナリータイプのデフォルトフォーマットは

TIME PARTICLENUMBER X Y Z VX VY VZ RADIUS ID TYPE VALUE1 X Y Z VX VY VZ RADIUS ID TYPE VALUE1 X Y Z VX VY VZ RADIUS ID TYPE VALUE1 ... and so on ...

X Y Z VX VY VZ RADIUS VALUE1 はfloat型(4byte)のデータで、ID と TYPE はint型(4byte)のデータになります。

Zindaija は4種類までの粒子種を設定することができ、TYPEはどの種類として描画するかを示しています。 もし星とガスからなるデータであれば、星を 0 に、ガスを 1 に設定して、それぞれの可視化のパラメータを設定することで、2種類の粒子の表示をすることができます。

VALUE1 には、温度などの任意の物理量が入ります。 カラーカーブエディタで設定した色を反映させることができます。



x,y,z をばらばらに設定することで、順番が連続していないフォーマットのデータや、2次元のデータも読み込むことができます。zを読み込まない場合には z には 0 が代入されます。

データの並び順を変更することができます。上のデフォルトのフォーマットは、Horizontal(横向き)として定義した場合になります。

Vertical(縦向き) の場合には

HEADER XYZ XYZ XYZ ...... RADIUS RADIUS RADIUS ...... TYPE TYPE TYPE .....

のように、各要素ごとに粒子数だけ繰り返してデータを配置しているもととします。

X X X ... Y Y Y ... Z Z Z ...

のように3次元の要素もばらばらにしたいときには、xyz ではなくて、x, y, z をそれぞれに設定するようにしてください。

文法の「X Y Z」や「PARTICLENUMBER」などは、フォーマットエディタを使って順番を変更することができます。

文法のアイテムは、ドラッグ&ドロップかで順番を変更できます。また、右クリックメニュー上からアイテムの削除や挿入を行えます。
ダミーは、使わないデータをスキップするためのアイテムです。
また、左下のDefaultボタンでデフォルト状態に戻すことができます。

時間や粒子数が無い場合は、時間にはフレーム番号が設定され、粒子数は改行の数やファイルサイズから推定されることになります。

フォーマット情報をファイルとして保存、読み込みが行えます。 バイナリデータとして、float型ではなくdouble型、もしくは half float 型を使っているデータを読み込むことができます。
ただし、double型やhalf float型のデータを読み込んでいてもZindaiji3内部ではfloat型で処理を行います。

通常は可視化用途では float型 で充分な精度があるはずです。もしdouble型でなければ精度が不十分であるという場合は、予めデータの平行移動を行うなどの処理をすることをお勧めします。
(100000000000000000.01 と 100000000000000000.00 の比較をしたいというような場合など特殊な場合になります)

また、half float 型の読み込みは、データのダイナミックレンジが小さい場合などに、データのファイルサイズ削減などの用途に使えます。

シミュレーションで使う数値の典型的なスケールや位置は、そのコードに依存します。
もし、典型的な数値が大きすぎたり小さすぎたりする場合や(106や10-6など)、中心が原点からずれているような場合には、操作が行いづらくなります。
このパラメーターによって、データ読み込み時にスケールを変更したり、平行移動させておくことができます。スケーリングの4パラメータは、各位置、速度のXYZ成分と、半径のパラメーターに影響をします。

大きなポリゴンを猛烈に描画すると、グラフィックボードへの負荷が非常に大きくなります。
不注意なパラメータ設定によって、たとえば画面いっぱいのポリゴンを107回繰り返して描くようなこともあり得ます。
Zindaiji3ではそういった場合のチェックは行えないので、そうした危険なシーンのパラメータにしないように注意をしてください。
リミッターや表示の自動中断機能を使って回避することもできます。

「Value1を調整」のパラメータを使って、VALUE1 のスケーリングや、logを取ることができます。
データ読み込み時にlogの計算をするために、毎ステップlogの計算をする必要がなく表示は遅くなりませんが、カラーカーブの表示などでは若干不便ではあります。
もし元々のVALUE1が負の値であれば、0を返します。

平行移動といった簡単な加工以上のことを行うにはポスト処理を行ってください。

読み込み時に粒子の位置にランダム成分を付加します。規則正しい配置のデータを表示する際に発生するモアレなどを軽減する用途に使います。



位置の移動量は、粒子半径を単位(読み込み時に未定義であれば1を単位)として付加されます



連番データのうち1フレームだけ読み込む、読み込む粒子数に上限を付けるなどの制限をすることができます。 同ID粒子のサーチの制限をかけると、IDがバラバラの巨大なデータの際に、粒子の連続性を調べるのに時間がかかる場合に中断を行います。


Zindaiji3では連番ファイルを選択する際に、sanp0000.dat というような名前であれば、自動的に連番を判定します。但し、もしもフィルが snap0000param01.dat というような場合、末尾の数値を連番とみなしてしまい望む結果にないません。
そういう際に、snap%04dparam01.dat というように直接フォーマットを入力することができます。そうした際に、連番の初期値はこの欄で設定します。ファイル名を直接選択したときには、その番号が優先されます。

連番の間隔の設定は、細かすぎる連番ファイルを10個おきに読むといった際に使います。

不規則な連番

連番が不規則に飛んでいるといった場合のための機能です。Lua スクリプトで、与えられた index に対して任意の戻り値を返すように設定します。
Luaからの呼び出し用テーブルなどと組み合わせて、外部ファイルの数表を利用するといったことができます。

ポスト処理



読み込んだデータに対してエクスプレッションを用いた加工を行えます。

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

データ加工時の文法

ポスト処理と同様にスクリプト処理を行います。ポスト処理は、スナップショットデータをメモリーに保持する際に実行されますが、このスクリプトは、補間されたデータがスナップショットデータから作成されるときに実行されます。

粒子の色情報などはこのタイミングで作成されるので、例えばスクリプトによって色を書き換える、もしくは色にしたがって半径などを変更するといった処理が行えます。 読み込んだデータは、float型でも可視化用途には充分以上の精度があることが多いです。指定した下位ビットを削減して情報量を減らすことができます。(数値は4bit単位で指定できます)

単独で使用するだけでは単に精度が落ちるだけで意味はありませんが、下位ビットを削減したデータをエクスポートしたファイルは、圧縮をかけると圧縮の効率が上がります。(JHPCN-DF)。
可視化用に別途ファイルサイズの小さいデータセットを作成したい場合などに使用してください。

周期境界条件


周期境界条件の箱の中のシミュレーションでは、1ステップの間に端から端まで粒子が移動することができます。
そのような粒子を素直に補間をすると、一瞬で端まで飛んでゆく高速な粒子として表示されてしまいます。
周期境界条件を設定すると、一ステップの間に大きく移動する粒子は、境界を跨いだとみなして、境界の反対側のミラー粒子の位置への補間を行います。(又はその成分の速度を0にします)

Zindaiji3では、ボックス型の境界のみに対応して、任意形状の境界などには対応していません。(ただし、3軸不等のひし形は設定できます)
また、この機能が働くには、箱の大きさの情報が必要になります。

戻る
inserted by FC2 system