データオブジェクト



データオブジェクトは、外部のデータファイルをもとに表示されるオブジェクトで、Zindaiji4のもっとも主要な機能でもあります。
ボリュームデータ、粒子系データ、高さマップ(未実装) のデータを、時系列データ(連番ファイルによるもの)を含めて読んで表示することができます。

データオブジェクト
ボリューム流体やガスのようなxyzのメッシュにきったデータを表示します。現時点では、スカラー量に対応していて、ベクトル場には対応していません。
粒子系
高さマップ

ボリューム

ボリュームデータ表示のサンプル。モディファイアによって球座標への変換をして表示することもできます。

ボリュームボックス

ボリュームデータは、箱の中に表示をするためにボリュームボックスと名前がついています。 以下、主なボリュームボックスに設定です。

内部データについて

現時点で、内部のデータは1バイト(8ビット)で保存、つまり0-255の段階で保存されます。 0-1の値が必要な場合には、255で割って0-1に焼きなおして利用されます。
この内部データは、0-255の数値でしかないために、色は持っていません。表示の際の色は、カラーカーブを参照して色付けされていることに注意してください。

品質

ボリュームデータは、薄くスライスされた板の集合体として奥から順番に表示をすることでレンダリングされます。 品質パラメーターは、その間隔と枚数を制御します。数値が大きいほど品質はよくなりますが、表示時間のコストがかかります。 品質が低すぎる場合には、縞状の模様が発生します。 適切な数値は、通常は256-2048程度になります。

Zstack

1スナップショット分のボリュームデータは、1つのファイルか、もしくは複数の連番画像ファイルとして表現されます。 このチェックがついていると、連番画像でボリュームがあらわされているものとして読み込みを行います。

ファイルパス

現状では、連番の画像化もしくは .df3 ファイルを読むことができます。
df3 ファイルはボリュームをz-y-xの順のループで書き出した簡単なバイナリーファイルです。
ファイル名を指定するフォーマットは、c言語のprintf や scanf で使うフォーマットになっています。たとえば連番の.df3ファイルの場合には data%04d.df3 のような形になります。
data0000.df3
data0001.df3
data0002.df3
...
zスタックされた画像ファイルの場合には、z方向と時間方向の2つの連番で表現されることになります。たとえば、imgT%04dZ%04d.png のような形です。
imgT0000Z0000.png
imgT0000Z0001.png
.....
imgT0001Z0000.png
imgT0001Z0001.png
.....
現状、連番の順番は決まっていて編集できません。T方向、Z方向の順番になります。

offset

連番が0から始まらない場合には、オフセットをここで設定します。

自動スケーリング

最初はボリュームボックスのサイズは1x1x1に設定されています。立方体のデータでなければ、手動で調整をしなければなりません。
このボタンを押すと、データのアスペクト比が1であると仮定して、データの解像度のサイズから自動でボックスの大きさを設定します。
例えば、データのサイズが 256x128x64 の場合には, 箱のサイズは 1 x 0.5 x 0.25 に設定されます。

リロード

データを再読み込みします。表示しているデータがテスト中のデータで何度も上書きで更新される、というような状況で便利に使えるはずです。

VolumeShader

シェーダーは表示する色などを決定する簡単なプログラムです。現在以下のシェーダーを用意しています。
OriginalデフォルトのOpenGL表示パイプラインを使います。ボリュームデータ自体は1バイトで色情報のないデータなので、グレースケール(なおかつ透明度の情報もなし)で表示されます。
Volume Basic色(と透明度)をカラーカーブにしたがって表示をします。
Volume Phongフォンシェーディングと似た方法で光のDiffse(散乱)色を決定します。面の法線の代わりに、データの勾配の向きを使用します。
Volume Scatter色合いが、光の向きとカメラの向きにしたがって調整されます。前方散乱と後方散乱で違う値を持つような物質の簡単な模倣をするためのシェーダーになります。

Volume Basic(左), Volume Phong (中央), Volume scatter (右). 下段は影つきのレンダリングです。

セルフシャドウ

自分で自分に落とす影を計算します。より写実的な表現になりますが、表示時間にかかるコストは比較的大きめです。
別の物体に落とす影などは計算できず、あくまで自分が自分に落とす影の分だけを計算します。

シェーダーの品質

シェーダーの品質です。現在はセルフシャドウの品質にのみ使用しています。

Shader Factor

このパラメーターは現在 volume scatter シェーダーでのみ使用しています。1が前方散乱のみ-1が後方散乱のみの状態に対応します。

マテリアル



ボリュームのマテリアルの設定の多くは
基本形状のマテリアルの設定ににています。ただし、いくつか違いが存在します。

カラーカーブ

ボリュームデータ自体は色のないスカラー値で、対応するカラーカーブを元に色がつけられます。カラーカーブの設定法は、カラーカーブエディタの項目を参照してください。

粒子系

粒子データの表示の例


Particle

粒子系は、1ステップもしくは時間進化するアイテムの集合体です。粒子の表示にはx,y,zの位置とサイズの情報が必要です。サイズが与えられない場合には1と仮定します。以下が粒子系のメインのパラメーターになります。

粒子の分類

タイプの違う粒子は、それぞれのマテリアル設定にしたがって表示を行えます。通常は粒子ごとに与えられるタイプのデータを用いて分類を行います。 このタイプ分けは、LUAスクリプトを使って置き換えることができます。たとえば、粒子インデックス256以下をタイプ0として、残りの粒子をタイプ1として表示するスクリプトは次のようになります。

if (type < 256) then return 0 end
return 1

テキストエディタが画面上に出ている状態で、編集ボタンを押すと、テキストエディタに分類用のスクリプトをリンクして編集することができます。

ソート

ソートを行わない場合は、粒子はそのインデックス順に描画が行われます。半透明などが関係しない場合には、描画の順番は結果に影響しません。
粒子が半透明である場合には、粒子は画面奥から手前に描画されなくてはなりません。なぜなら、手前の粒子による光線の変化を知るのに奥からくる光の情報が先になければならないからです。 このオプションによって、粒子を描画する順番を設定できます。Z-方向やカメラからの距離以外の選択肢は、特殊な描画をする際に使います。

深度情報書き込み

通常のレンダリングのプロセスでは、デプスバッファ上に奥行き情報が書き込まれ、それを用いて次のポリゴンが描画されるべきか、もしくはすでに描画されたポリゴンによって隠されているべきかを判定します。 このチェックボックスが外れると、デプスバッファへの書き込みがスキップされます。特殊な描画をする際に使います。

ファイルパス

ここで設定するファイルは、連番ファイルの最初のファイル、もしくは直接連番ファイルの命名規則を入力します。 命名規則を入力する際は、C言語のprintfやscanf構文と同じ規則を使います。連番フィルの例としては、data%04d.txt のようになります。
data0000.txt
data0001.txt
data0002.txt...

オフセット

上記のように %0xd の形で入力した場合は、連番ファイルの先頭は 0 を仮定します。0以外からスタートするような連番ファイルの場合は、ここでオフセット値を入力します。

リロード

データを再読み込みします。表示しているデータがテスト中の一時ファイルであり頻繁に変更される、といった場合に便利です。

マテリアル



粒子系のマテリアル設定は、他のオブジェクトのマテリアル設定とだいぶ異なります。一番大きな違いは、複数のマテリアルを設定できることです。
粒子がタイプ情報を持っている場合には、タイプ0の粒子は material.0 の、タイプ1の粒子はmaterial.1 の設定で描画がされます。

詳細は
粒子系のマテリアルのページを参照してください。

フォーマット




データを読み込む際のファイルフォーマットはある程度までの設定を行うことができます。編集は プロパティパネル内のフォーマットタブで行います。

高さマップ

戻る
inserted by FC2 system