今回は、パーティクルシステムについてのお話です。
というか、自分用のメモです。
パーティクルは、llParticleSystem / llLinkParticleSystem で、
パーティクルシステムの設定を行うとできるのですが、
パラメータがたくさんあり、使うのが面倒です。
今回、日本語wikiにはなく、この英語wikiに書いてあるのについてまとめてみます。
なお、英語用のwikiは、「llParticleSystem(翻訳)」です。
・System Behavior(パーティクルのふるまい)
Value
– PSYS_PART_RIBBON_MASK
・Particle Appearance(パーティクルの外観)
PSYS_PART_START_GLOW
PSYS_PART_END_GLOW
・Particle Blending(パーティクルブレンド)
PSYS_PART_BLEND_FUNC_SOURCE
PSYS_PART_BLEND_FUNC_DEST
Values
– PSYS_PART_BF_ONE
– PSYS_PART_BF_ZERO
– PSYS_PART_BF_DEST_COLOR
– PSYS_PART_BF_SOURCE_COLOR
– PSYS_PART_BF_ONE_MINUS_DEST_COLOR
– PSYS_PART_BF_ONE_MINUS_SOURCE_COLOR
– PSYS_PART_BF_SOURCE_ALPHA
– PSYS_PART_BF_ONE_MINUS_SOURCE_ALPHA
上から順番に説明していきましょう。
【PSYS_PART_RIBBON_MASK】
リボンパーティクル と呼ばれるものを作成します。
途切れ途切れになっていたパーティクルの端を結合します。
リボンの「幅」は、 scale_start.x と scale_end.x に依存します。
リボンのセグメントの長さは、粒子間の距離に依存します。もし距離が 0 ならばレンダリングしません。
リボンパーティクルは、通常のパーティクルと違い常にカメラの方向を向くようにレンダリングしません。
PSYS_PART_FOLLOW_VELOCITY_MASK の設定は無視されます。
次の設定を併用することで効果を確認できます。
・PSYS_SRC_TEXTURE (テクスチャは TEXTURE_BLANK)
・PSYS_SRC_PATTERN_DROP
・PSYS_SRC_ACCEL
・PSYS_PART_WIND_MASK
【PSYS_PART_START_GLOW / PSYS_PART_END_GLOW】
パーティクルの発生時と消滅時のグローのかかり具合を調整します。
【Particle Blending】
パーティクルを描写するときの合成方法を設定します。
内部では、OpenGLの「glBlendFunc」を使用して実装しています。
「Visual glBlendFunc + glBlendEquation Tool」を使うと分かりやすいと思われます。
組み合わせはたくさんありますが、一般的な合成方法だけをここに書きます。
◆加算合成◆
PSYS_PART_BLEND_FUNC_SOURCE, PSYS_PART_BF_ONE,
PSYS_PART_BLEND_FUNC_DEST, PSYS_PART_BF_ONE
◆アルファブレンド合成◆
PSYS_PART_BLEND_FUNC_SOURCE, PSYS_PART_BF_SOURCE_ALPHA,
PSYS_PART_BLEND_FUNC_DEST, PSYS_PART_BF_ONE_MINUS_SOURCE_ALPHA
他に組み合わせでスクリーン合成などはできそうですが、
減算合成はできないようです。
コメント