データを読みこむために、Data Loader ダイアログでこれから読むデータがどのような形式のものかを設定しておきます。
データのタイプを設定します。バイナリーかテキスト(アスキー)を設定します。
拡張子に.gzが付いている場合は、gzip圧縮されたファイルとして、解凍して読み込みを行います。
解凍速度とのトレードオフの関係がありますが、アスキーデータなどは圧縮して保持するメリットがあるかもしれません。
特殊な場合としてHDF5ファイル、PDCファイル(Maya のパーティクルシステムのキャッシュファイル)を読み込むことができます。
また、適切な設定をすることにより .bphys (Blender のパーティクルシステムのキャッシュファイル。2.76現在) を読み込むことができます。
補間のタイプを設定します。
特殊な場合として、粒子の位置が動かないで物理量だけが変化するような場合に、位置情報を別ファイルとして読み込みます。
毎ステップの位置情報を省略して、必要なデータ量を削減するための機能になります。
ボリュームデータのシミュレーションなどを点群として表示するような場合を想定しています。
外部ファイルの文法について
シーン中のデータ数が固定かどうかを設定します。もしも粒子数の増減がある、もしくはシミュレーション上の理由で粒子の順番が入れ替わったりしていなければ、こちらを選択します。
このモードでは、すべての時間ステップでのn番目の粒子は同一の粒子とみなすので、補間の計算の時に余計な計算の必要がなく少し速くなります。
粒子数の増減があったり、順番が入れ替わったりする場合には、タイムステップmとm+1のn番目の粒子が同一の粒子である保証がないために、各粒子のIDを用いて連続性のチェックを行います。同一IDの粒子を探すという操作が必要なために、補間の計算が遅くなる可能性があります。
データの並び順を変更することができます。上のデフォルトのフォーマットは、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ボタンでデフォルト状態に戻すことができます。
時間や粒子数が無い場合は、時間にはフレーム番号が設定され、粒子数は改行の数やファイルサイズから推定されることになります。
シミュレーションで使う数値の典型的なスケールや位置は、そのコードに依存します。
もし、典型的な数値が大きすぎたり小さすぎたりする場合や(106や10-6など)、中心が原点からずれているような場合には、操作が行いづらくなります。
このパラメーターによって、データ読み込み時にスケールを変更したり、平行移動させておくことができます。スケーリングの4パラメータは、各位置、速度のXYZ成分と、半径のパラメーターに影響をします。
大きなポリゴンを猛烈に描画すると、グラフィックボードへの負荷が非常に大きくなります。
不注意なパラメータ設定によって、たとえば画面いっぱいのポリゴンを107回繰り返して描くようなこともあり得ます。
Zindaiji3ではそういった場合のチェックは行えないので、そうした危険なシーンのパラメータにしないように注意をしてください。
リミッターや表示の自動中断機能を使って回避することもできます。
「Value1を調整」のパラメータを使って、VALUE1 のスケーリングや、logを取ることができます。
データ読み込み時にlogの計算をするために、毎ステップlogの計算をする必要がなく表示は遅くなりませんが、カラーカーブの表示などでは若干不便ではあります。
もし元々のVALUE1が負の値であれば、0を返します。
平行移動といった簡単な加工以上のことを行うにはポスト処理を行ってください。
連番データのうち1フレームだけ読み込む、読み込む粒子数に上限を付けるなどの制限をすることができます。
同ID粒子のサーチの制限をかけると、IDがバラバラの巨大なデータの際に、粒子の連続性を調べるのに時間がかかる場合に中断を行います。
Zindaiji3では連番ファイルを選択する際に、sanp0000.dat というような名前であれば、自動的に連番を判定します。但し、もしもフィルが snap0000param01.dat というような場合、末尾の数値を連番とみなしてしまい望む結果にないません。
そういう際に、snap%04dparam01.dat というように直接フォーマットを入力することができます。そうした際に、連番の初期値はこの欄で設定します。ファイル名を直接選択したときには、その番号が優先されます。
連番の間隔の設定は、細かすぎる連番ファイルを10個おきに読むといった際に使います。
読み込んだデータに対してエクスプレッションを用いた加工を行えます。
データを読み込まずに0からデータを作成するときは、形式上はダミーのデータを読んでそれに対して加工を行うことになります。その場合にはデータの読み込みではなく「スクリプトのみ実行」で読み込み(とスクリプト処理)を開始します。
データ加工時の文法
周期境界条件の箱の中のシミュレーションでは、1ステップの間に端から端まで粒子が移動することができます。
そのような粒子を素直に補間をすると、一瞬で端まで飛んでゆく高速な粒子として表示されてしまいます。
周期境界条件を設定すると、一ステップの間に大きく移動する粒子は、境界を跨いだとみなして、境界の反対側のミラー粒子の位置への補間を行います。(又はその成分の速度を0にします)
Zindaiji3では、ボックス型の境界のみに対応して、任意形状の境界などには対応していません。(ただし、3軸不等のひし形は設定できます)
また、この機能が働くには、箱の大きさの情報が必要になります。