YOPPYの物作りにおける覚書を書いてます。参考になれば幸いです^^
ソラマメブログ › <Making memo of yoppy>YOPPY的、物作りメモ › パーティクル講座?

  

Posted by at

2008年09月11日

パーティクル講座?<第3回>


長らくお待たせしました。
いよいよ第3回目を迎えましたパーティクル講座?
今回は放射パターンを前回同様、絵で確認していきます。

2. System Presentation 放射パターン(全方向、特定方向など)
PSYS_SRC_PATTERNの設定値として次の1~4を指定します。
重複することはできません。

1.PSYS_SRC_PATTERN_EXPLODE
これは中心から爆発するよう全体にパーティクルが発生します。
装着型パーティクルによく見られます。


                     
2.PSYS_SRC_PATTERN_DROP
水滴のようにパーティクルが固まって出現し、拡散しません。
これを設定するときはPSYS_SRC_ACCELなどで方向付けするが必要があります。



                     
次の3~4を設定する場合はPART_ANGLEで出現範囲をラジアンの角度で指定する必要があります。
3.PSYS_SRC_PATTERN_ANGLE
扇形(もしくはV字系)にパーティクルを噴射します。(正面と横から見た形状)


 

                     
4.PSYS_SRC_PATTERN_ANGLE_CONE
コーン状にパーティクルを噴射します。(どの方向からでも同じ形状です)
※PSYS_SRC_PATTERN_ANGLE_CONE_EMPTYという逆コーン状のパラメーターは現在は使われていないようです。




発生位置、放出角度、ターゲット設定(2-5〜2-7)
ここまでは発生の形状指定でしたがここからはその形状に対して角度や方向等の指定をします。

2-5パーティクルの発生距離(位置)半径を指定しPSYS_PART_FOLLOW_SRC_MASKをセット「しない」時にのみ稼動
PSYS_SRC_BURST_RADIUS, 0

ようは発生オブジェクトの中心から指定した距離よりパーティクルが発生するのです。
通常は中心から発生します。



2-6出現角度の始まりと終わりをラジアンで指定
PSYS_SRC_ANGLE_BEGIN, PI
PSYS_SRC_ANGLE_END, PI

※通常PI(180°)を割ったり掛けたりで角度を指定しますがDEG_TO_RADを使うことでそのまま角度指定できます。
  DEG_TO_RADは角度をラジアンに変換する関数です。(例:180*0*DEG_TO_RADのように使用します)

下の写真では (BEGIN)0°~(END)45°を指定しています。



2-7ターゲットを指定
PSYS_SRC_TARGET_KEY, NULL_KEY

NULL_KEY にはターゲットになるもののUUIDを指定します。
 
第3回(2. System Presentation 放射パターン)は以上で終了です。
次回、第4回は3. Particle Appearance 見た目(色、透明度、大きさなど)をお送りします。
気長にお待ちくださいww
    


Posted by yoppy runo at 17:17Comments(0)パーティクル講座?

2008年03月04日

パーティクル講座?<第2回>

お待たせいたしました。
パーティクル講座?の第二回目
今回はSystem Behavior(振る舞い/基本設定部分)のON/OFFを画像を交えて見てみましょう。


1-1 PSYS_PART_EMISSIVE_MASK
輝きを放つ(夜に光る)。   

これをONにすると夜パーティクルが光るようになります。
通常ここはONにしておくとよいでしょう。
暗くする意味があるかどうかは私にはわかりませんwww







1-2 PSYS_PART_WIND_MASK
風の影響を受ける。   

これをONにすると風に反応します。
下の画像でON側が右に曲がっているのがお分かりでしょうか。
このように風に反応しふにゃふにゃするのがこの設定です。







1-3 PSYS_PART_INTERP_COLOR_MASK
パーティクル発生後と消失前で色あるいは透明度を変え、その間の色あるいは透明度を補間したい場合に有効にする。   

これをONし色と透明度に変化を与えます。

まずはPSYS_PART_START_COLORとPSYS_PART_END_COLORの値を変えることによって色が変化しています。
ON側が白から赤に変化しているのがお分かりでしょうか。
PSYS_PART_START_COLORを白<1,1,1>でPSYS_PART_END_COLORを赤に<1,0,0>設定しています。
この値は<R,G,B>で1が最大値です。






次はPSYS_PART_START_ALPHAとPSYS_PART_END_ALPHAの値を変えることで透明度に変化を与えます。
ご覧のとおりON側が上に近づくほど透明化しています。
この値は1が不透明、0が透明となります。







1-4 PSYS_PART_INTERP_SCALE_MASK
パーティクル発生後と消失前で大きさを変え、その間を補間したい場合に有効にする。

これをONするとパーティクルの大きさに変化を与えることが出来ます。
ON側の大きさの変化がお分かりでしょう。
PSYS_PART_START_SCALEとPSYS_PART_END_SCALEの値を設定することで大きさが変化します。
この値は<X,Y,Z>です。







1-5 PSYS_PART_BOUNCE_MASK
オブジェクトのZ軸が0の位置でパーティクルがバウンドし、上方へ飛ぶ。

これをONにすると発生源のプリムのZ軸0の位置より下方へはパーティクルは移動せずバウンドします。







1-6 PSYS_PART_FOLLOW_SRC_MASK
オブジェクトへパーティクルがついてくるようになる。

これをONにすると発生したパーティクルはプリムを移動させてもついてきます。
下の画像でON/OFFの違いがお分かりでしょう。
左側が左にプリムを移動させた場合で右側が右に移動させた場合です。
これをONにするとPSYS_SRC_BURST_RADIUSは無効になります。


 




1-7 PSYS_PART_FOLLOW_VELOCITY_MASK
パーティクルは通常、上下方向を維持したまま拡散するが、これをONにすると移動方向が粒子の上方となる。

文章ではわかりにくいのですが下の画像でパーティクルを矢印に置き換えてみました。
矢印の先が各パーティクルの上方となります。
ONにした場合広がる方向が上方となっているのがお分かりでしょう。
一般的にテキスチャを使用したパーティクルで使用します。







次の二つのパラメータは指定した物体(プリム等)に向かってパーティクルが飛んでいきます。

1-8 PSYS_PART_TARGET_LINEAR_MASK
ターゲットに向かって直線的にパーティクルが飛びます。
ただしPSYS_SRC_ACCELやPSYS_SRC_BURST_RADIUSなどのルールは無視されます。








1-9 PSYS_PART_TARGET_POS_MASK
ターゲットに向かってパーティクルが飛ぶが、その軌跡に変化を加えることが可能となる。
PSYS_SRC_ACCELやPSYS_SRC_BURST_RADIUSなどの値を変えることで変化します。








以上が基本設定となります。
これを変えるだけでも面白いものが出来そうですね^^

次回はSystem Presentation/放射パターンを今回のように画像で確認したいと思います。
お楽しみに^^
  


Posted by yoppy runo at 00:18Comments(2)パーティクル講座?

2008年02月29日

パーティクル講座?<第1回>

パーティクル講座というよりも私のメモ書きですw
間違った記述などありましたらご教授お願いします。
とりあえず、順次検証していきますのでお付き合い下さい^^

では第1回目ということでパラーメーター全般の説明からはじめます。
(パーティクルとは何ぞや?って方はいないですよね?)

一般的なパラメーターの記述です。
これをそのまま使ってもエラーで動きませんので各パラメーターの補足事項を確認して記述します。
必要ない部分は「//」を使ってコメントアウトしてください。


//Particle Set by yoppy//

default
{
state_entry(){
llParticleSystem( [


//1. System Behavior//振る舞い(基本設定部分)//
PSYS_PART_FLAGS, (0
//1-1輝きを放つ(=夜に光る)//
               |PSYS_PART_EMISSIVE_MASK
//1-2風の影響を受ける//
               | PSYS_PART_WIND_MASK
//1-3パーティクル発生後と消失前で色あるいは透明度を変え、その間の色あるいは透明度を補間したい場合に有効にする。→PSYS_PART_END_COLORとPSYS_PART_END_ALPHAを有効にし、値を指定する//
               | PSYS_PART_INTERP_COLOR_MASK
//1-4パーティクル発生後と消失前で大きさを変え、その間を補間したい場合に有効にする。→PSYS_PART_END_SCALEを有効にし、値を指定する//
               | PSYS_PART_INTERP_SCALE_MASK 
//1-5オブジェクトのZ軸が0の位置でパーティクルがバウンドし、上方へ飛ぶ//
               | PSYS_PART_BOUNCE_MASK
//1-6オブジェクトへパーティクルがついてくるようになる※PSYS_SRC_BURST_RADIUSは無効になる//
               | PSYS_PART_FOLLOW_SRC_MASK
//1-7パーティクルは通常、上下方向を維持したまま拡散するが、これをONにすると移動方向が粒子の上方となる//
               | PSYS_PART_FOLLOW_VELOCITY_MASK
// System PesentationのPSYS_SRC_TARGET_KEYで指定されたターゲットに向かって飛ぶ(1-8,1-9のいずれかを設定)//
//1-8ターゲットに向かって直線的にパーティクルが飛ぶ(PSYS_SRC_ACCELやPSYS_SRC_BURST_RADIUSなどのパーティクルの向きや発生位置を指定するルールは無視される)//
               | PSYS_PART_TARGET_LINEAR_MASK
//1-9ターゲットに向かってパーティクルが飛ぶが、その軌跡に変化を加えることが可能となる//
               | PSYS_PART_TARGET_POS_MASK
               )


//2. System Presentation //放射パターン(全方向、特定方向など)//
//パーティクルの発射形状を指定する(2-1〜2-5のいずれかを設定)//
,PSYS_SRC_PATTERN
//2-1中心から爆発するよう全体にパーティクルが発生する。//
                     ,PSYS_SRC_PATTERN_EXPLODE
//2-2水滴のようにパーティクルが固まって出現し、拡散しない※PSYS_SRC_ACCEなどで方向付けが必要//
                     ,PSYS_SRC_PATTERN_DROP
//PART_ANGLE_BEGINとPART_ANGLE_ENDで出現範囲をラジアンの角度で指定(2-3〜2-5)//
//2-3扇形(もしくはV字系)にパーティクルを噴射//
                     ,PSYS_SRC_PATTERN_ANGLE
//2-4コーン状にパーティクルを噴射//
                     ,PSYS_SRC_PATTERN_ANGLE_CONE
//2-5逆コーンにパーティクルを噴射//
                     ,PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY


//発生位置、放出角度、ターゲット設定(2-6〜2-8)//
//2-6パーティクルの発生距離(位置)半径を指定しPSYS_PART_FOLLOW_SRC_MASKをセット「しない」時にのみ稼動//
,PSYS_SRC_BURST_RADIUS, 0
//2-7出現角度の始まりと終わりをラジアンで指定(180°= PI)//
,PSYS_SRC_ANGLE_BEGIN, PI
,PSYS_SRC_ANGLE_END, PI
//2-8ターゲットを指定//
,PSYS_SRC_TARGET_KEY, NULL_KEY


//3. Particle Appearance//見た目(色、透明度、大きさなど)//
//3-1PSYS_PART_INTERP_COLOR_MASKを設定した場合の発生時と消失時の色を設定//
,PSYS_PART_START_COLOR, <0.0,0.0,0.0>
,PSYS_PART_END_COLOR, <0.0,0.0,0.0>
//3-2PSYS_PART_INTERP_COLOR_MASKを設定した場合の発生時と消失時の透明度(0.0〜1.0)を設定//
,PSYS_PART_START_ALPHA, 1.0
,PSYS_PART_END_ALPHA, 0.0
//3-3PSYS_PART_INTERP_SCALE_MASK設定した場合の発生時と消失時の大きさ(0.04〜4)を設定//
,PSYS_PART_START_SCALE, <0.1,0.1,0.1>
,PSYS_PART_END_SCALE, <0.5,0.5,0.5>
,PSYS_SRC_TEXTURE, ""


//4. Particle Flow//フロー(寿命など)//
//4-1パーティクルの噴出時間(0.0は永久で秒単位で設定、ただし噴出が見えなくなるだけで停止はしません)//
,PSYS_SRC_MAX_AGE, 0.0
//4-2ひとつのパーティクルの持続時間(0.0〜30.0)//
,PSYS_PART_MAX_AGE, 5.0
//4-3噴出間隔(0.0は連続で秒単位で設定)//
,PSYS_SRC_BURST_RATE, 0.0
//4-4一度に噴出する量//
,PSYS_SRC_BURST_PART_COUNT, 5


//5. Particle Motion//動き(向き、スピードなど)//
//5-1加速度をXYZで指定(0.0〜100)//
,PSYS_SRC_ACCEL, <0.0,0.0,0.2>
//5-2噴射方向をXYZ指定で回転させる。ANGLE, ANGLE_CONE, ANGLE_CONE_EMPTY時に有効//
,PSYS_SRC_OMEGA, <0.0,0.0,0.0>
//5-3噴射時の最小速度と最大速度の設定//
,PSYS_SRC_BURST_SPEED_MIN, 0.1
,PSYS_SRC_BURST_SPEED_MAX, 1.0


]);
  }
}


こんな感じだと思います。
次回から順次画像を取り入れながら説明したいと思います。

次回をお楽しみに^^  


Posted by yoppy runo at 13:02Comments(2)パーティクル講座?