粒子のマテリアル


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



粒子のマテリアルセッティングでは、サイズや色、テクスチャやシェーダーの設定を行います。

粒子データは、マテリアルの設定を複数もつことができます。粒子がTypeデータを持っている場合, Typeが0の粒子は material.0 の設定で、Typeが1の粒子は material.1 の粒子で、というように表示されます。

Point Material

粒子系をレンダリングする方法を設定します。現時点で「点」として表示するモードと「球」として表示するモードの2つがあります。
現在、マテリアルはこのどちらかのモードである必要があり、混在している状態は実装していません)



「点」描画モードでは、点群として粒子の表示を行います。
描画速度は最も速く、シェーダーやテクスチャを利用することで「点」に見えないように表現することも可能です。
とはいえ、描画の方法が「点」なので、カメラが近寄りすぎたり魚眼などの特殊なレンダリング時には破綻が生じることがあります。

シェーダー

古典的なOpenGL表示の点は、単なる1ドットかすうピクセルの四角に過ぎませんが、GLSLシェーダーを利用することで、いくつかの効果を与えることができます。シェーダーのモードによって、表示する点の形状が変更できます。


点シェーダー

古典的な四角での表示です。

円シェーダー

各点を四角ではなく円として表示をします。特徴のない粒子の表示に使うのがよいでしょう。

擬似球シェーダ

円を表示する際に、球が表示されているかのように陰影をつけます。この陰影は通常のポリゴンの陰影のように計算されているのではなく、シェーダー内で陰影を計算してその色を使って円を表示していることになります。
この球は実際の球ではなく、ビルボードでテクスチャ(ただし自動的に陰影が計算される)を表示しているようなものになります。

表示しない

不必要な粒子を隠すときに使用します。

Sphere Material

球表示モードでは、粒子は実際に3Dのオブジェクトとして球が表示されます。



レンダリング速度はそう速くないですが、通常のポリゴンとして表現しているために、影を落としたり、魚眼などの特殊なレンダリング時にも破綻しません。

共通の設定

このパネルでは各パネルで共通の設定を行います。

Dissolve

全体をディザ処理を選択すると、半透明オブジェクトの表示を1ピクセルごとに確率的に描画を行うようになります。 この機能とアンサンブル平均を一緒に使用することで、確率的透過処理を行うことができます。


全体ではないディザ処理の選択肢は、非常に薄い部分のみをディザ処理行うものです。これは、非常に薄い物体を大量に表示するときにマッハバンドをある程度抑える効果を得るために実装されています。

1pass-2pass

Z-ソートは粒子を奥から表示するために並び替えを行う処理で、それなりの計算時間がかかります。
粒子がすべて完全に不透明であれば、Z-ソートは必要がありません。また、すべて加算を用いて表示して、深度バッファを利用しないばあにもZ-ソートを省略できます。しかし、通常は半透明な粒子がいる場合にはZ-ソートが必要になります。

ただし、そのほかにもZソートが省略できる特殊な組み合わせが考えられます。
2passモード時には、まずアルファブレンド表示の粒子を表示し、次に加算表示の粒子を深度バッファを利用せずに表示します。もしアルファブレンド表示の粒子がすべて不透明であれば、この順番で表示することで、Zソートを省略できます。
たとえば、固体粒子が(加算で表現してもよいほど)薄いガスの中に浮かんでいるような状態が考えられます。

テクスチャ

粒子表示用のテクスチャを設定します。"+"ボタンを押すことで新たなテクスチャを追加できます。粒子群ごとに3つまでのテクスチャを設定できます。
共通設定部分でテクスチャを設定しても、そのまま表示に利用するわけでは無い点に注意してください。個別のマテリアルで、何番のテクスチャを利用するか設定する必要があります。

点表示サイズ

点表示シェーダーでは、粒子のサイズはピクセルを単位として設定します。固定サイズ設定の際は、カメラからの距離によらずに表示され、「距離に依存」モードでは、カメラからの距離に応じて小さく表示するようになります。その際はカメラからの指定した距離の粒子が、設定したサイズになるように計算されます。

分割の深さ

「球」として表示する際のポリゴン表示の精度です。基本オブジェクトの球表示の場合と同様の意味のパラメータになります。

Material Settings

Name

ユーザーが粒子の意味を間違えないように名前がつけられます。名前は表示上の意味はありません。星やダークマター、ガスといった種類のあるデータの際にそのような名前をつけておけば良いでしょう。

単色 / カラーカーブ

各マテリアルは、固定された色かカラーカーブの持つことができます。点群データ全体で複数のカラーカーブを設定して、その番号を指定することで各マテリアルでカラーカーブを使用します。

カラーカーブの依存性

カラーカーブを利用するときに、入力として使うデータを指定します。
粒子のインデックス、ID、Value1-3、位置(x,y,z)、ソート時のインデックスが利用できます。

位置(z)に依存したカラーカーブ表示の例になります。

ブレンドモード

アルファ値は、粒子の不透明度を決めます(0が完全に透明1が不透明)。アルファブレンドモードは、半透明を処理する場合の通常の方法です。この方法では、半透明の物体を描画すると、

(1-alpha) * 背景色 + alpha * オブジェクトの色

にキャンバスの色が変化します。加算合成の時には、背景の色に単純にオブジェクトの色が足されてゆきます。これは、星など光る点を表現するのに向いています。

サイズの係数

粒子はそれぞれにサイズの情報を持つことができます。「データを使う」に設定すると、その値をサイズ表示に使います。代わりに「固定値(1)」を使うことでデータを無視して1として扱うことができます。
この値に、さらに、ここで設定した係数と、共通設定で指定した係数が掛け合わされて表示時のサイズが決定されます。

Emission

粒子の基本色になります。(Ambient色と似ていますが、光源に影響されない色なので発光(Emission)の用語が使われます)

Diffuse/Specular

「球」または「擬似球」で表示するときに使うDiffuse/Specular 色を設定します。

アルファ

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

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

ここで半径を評価するときは、いくつかのサイズ調整用のファクターがかかった後の値を使うことに注意してください。共通設定で表示サイズを変更すると、アルファ値もそれに応じて変化します。

テクスチャ

テクスチャの番号を指定して、テクスチャを貼り付けます。
たとえば輝く光源のようなテクスチャを利用することで、光る星のような表現をすることが可能です。



注意点としては、「擬似球」表示のときにもテクスチャは単に点表示の上に適用されるだけなので、下(左)のような表示になります。球の上にテクスチャを張りたいときには「球」として表示をしてください。


return
inserted by FC2 system