粒子系の文法


文法設定タブは、プロパティパネルの文法アイコンをクリックで表示されます。



粒子データのファイルは2つのパート、ヘッダとボディからなるものと仮定しています。 ヘッダは、ファイル全体に関するパラメータ、粒子数やそのスナップショットの時間などを収容する部分です。 ボディ部分が、それぞれの粒子データを収容する部分です。

Format.Main

このパネルには、ファイルフォーマット自体に関する設定があります。

タイプ

ファイルタイプは、アスキーとバイナリーが選択できます。

補間

スナップショット間の補間方法です。 線形補間がもっともよく使われるもので、スナップショット間を線形で補間を行います。ステップでは、補間は行いません。そのため、スナップショットごとに飛び飛びに粒子が移動するような動きになります。
もっともスムースな補間を行うのはエルミート補間で、スナップショットでの位置と速度の情報を使って補間を行います。
ベジエ補間は、2つのスナップショットではなく4つのスナップショットの位置から補間を行います。ベジエ補間(スムース)は、急速に向きを変える粒子の補間をより滑らかにするための調整を加えたものです。

エルミート補間(赤)とベジエ補間(青)で、円運動を描く粒子を補間したものです。スナップショットの間隔がまばらな場合の例です。

少ないスナップショットではエルミート補間がもっとも良い結果になりますが、必要なデータ量も速度が必要なために多くなります。

配列の向き

ボディには、粒子の情報がインデックス順にループで配置されることになりますが、ループの順番には2つの可能性が考えられます。このパラメーターではループの順番を設定します。

ここでは x0 が 粒子0の x 情報をあらわすとします。
データの収容順として、x0, y0, z0, x1, y1, z1, x2, y2, z2, ....繰り返し.
という順番がありえます。これを水平としています。 時に別の順番で収容されるデータがありえます。
たとえば, x0, x1, x2, ....., y0, y1, y2, ..... z0, z1, z2, .... 繰り返し
というような場合です。これを垂直としています。

粒子の消え方

次のスナップショットにIDの同じ粒子が存在しない場合に、その粒子をどのように消すかの方法を選択します。3つの方法が実装されていて、次のスナップショットになるまでは表示を続ける、すぐに消す(サイズを0にする)、サイズを0まで線形補間をする、のどれかを選べます。
また、位置の補間も行えないため、粒子をその場で静止させるか、もしくは前のステップの位置と含めて外挿する2通りの方法を選べます。

ヘッダとボディの編集

コンボボックスを使ってそれぞれのアイテムを選択します。 [+] ボタンは、アイテムの挿入 [x] ボタンでアイテムの削除を行います。
それぞれのアイテムは、[▲]ボタンと[▼]ボタンで上下の移動ができます。

文法のアイテム



文法用のアイテムのリストは上の図で示すようなものになります。
Value0-2 は、任意の変数を収容するスロットになっていて、着色などに使う変数になります。典型的には、温度などの物理量を収納します。3つのスロットが用意されています。

Dummy は、データの読み込みをスキップするためのアイテムです。シミュレーションデータなどには、可視化には使わないデータが含まれていることも多いですが、そうしたデータの読みこみをスキップします。

IDと粒子数の増減

各ステップでの粒子数が増減している場合、つまりステップ間に粒子が生まれたり消滅したりする場合には、ステップ0の粒子0がステップ1の粒子0と同一の粒子であるとは保証されません。 そのような場合には補間にはID情報が必須になります。IDが同じ粒子を探すことで、どの粒子がどの粒子と同一か探し出します。

Zindaij4 では整数型の上限(約21億)を上回る粒子を扱えません。しかし、大きいシミュレーションの場合には、総粒子数がそれ以下でも、IDがその上限よりも大きくなることがありえます。
そのような場合のために、ID (long long) というスロットが特別に用意されています。

文法のサンプル

バイナリー



これは、バイナリーデータの文法の例です。配列の方向は水平と仮定します。
バイナリーのデータは、隙間なくデータが詰まっていることを仮定するので、次のような並びで並んでいるデータを読むことになります。
Particle number (integer), Time (float), x0 (float), y0 (float), z0(float), type0(int), size0(float), x1 (float), y1 (float), y1(float), type1(float), size1(float) ... 粒子数だけ繰り返し

もし粒子数が省略された場合は、ファイルサイズから粒子数を推定します。
時間が省略された場合には、連番ファイルの番号を時間と仮定します。

アスキー



アスキーファイルでは、データ間はスペースで分割され、各粒子のデータごとに改行されるものとします。
上の図のようなサンプルであれば、
number
time
x0 y0 z0 type0 size0
x1 y1 z1 type1 size1
... 粒子数だけ繰り返し
粒子数が省略された場合は、ファイルの行数から粒子数を推定します。

垂直の場合

配列の方向を垂直に設定している場合には、上記の例ではファイルの文法は次のようになります。
number
time
x0 y0 z0
x1 y1 z1
... 粒子数だけ繰り返し
type0
type1
... 粒子数だけ繰り返し
size0
size1
... 粒子数だけ繰り返し

戻る
inserted by FC2 system