2007年11月20日
パーティクル-その2
前回に引き続きパーティクルのパラメータについて解説します。初めての方は、是非前回のブログをご参照ください。
PSYS_PART_BOUNCE_MASK を指定すると、位置座標Zの値が0の位置で跳ね返ります。(発生源を地面に置けば地面でバウンドする感じが出ます。) わたしの感覚としてはちょうどパチンコ玉を床にぶちまけた感じ^^ これも扇型でためしているので2次元に広がっています。
緑から赤に色を変化させています。色と透明度の変化をさせるためには必ずフラグのPSYS_PART_INTERP_COLOR_MASK を指定する必要があります。
次は、噴射するものが動くとどのように変化するのかを見るため、2つのボールをリンクさせて、中心となるボールが回転し、もうひとつのボールでパーティクルを発生するように用意しました。方向も見るためにテクスチャもアゲハ蝶に変えました。写真は蝶のサイズを小から大に変化するようにして、コーン型に上方から発生するようセットしています。(なお、球体で発生させる場合、建造で出したままだとY軸が90度回転しています。0にすれば上から出るようになります。)
で、このまま回転させると、このように機関車のけむりがたなびくように、うしろに残っていきます。
PSYS_PART_FOLLOW_SRC_MASK を指定するとこのようにたなびかないで回転していきます。
次は、わたしが最後までわからなかった PSYS_PART_FOLLOW_VELOCITY_MASK について説明します。
写真は、普通に上から発生させてます。先のものより数を少なくしています。
で、これが PSYS_PART_FOLLOW_VELOCITY_MASK を指定したものです。噴射する方向に向かって蝶が向きを変えているのがわかるでしょうか。
これは、さらに PSYS_SRC_OMEGA を指定して発射する方向を回転させて、更に発生源自体を動かしています。vector 型で値を入れます。これはどの値をいじればどうなるかというのは全くわかりませんでした。一応値はラジアンで指定するみたいです。
こうやって PSYS_PART_FOLLOW_VELOCITY_MASK と 組み合わせると、まきちらす感じが出ると思います。
次はホーミングを組み合わせます。PSYS_SRC_TARGET_KEY, でオブジェクトのオーナー(自分自身)を指定し、PSYS_PART_TARGET_POS_MASK でターゲットに向かうようにしています。ターゲットキーを指定しないと発生源に向かっていくようです。
この矢印は、持ち物の中に Library>Textures>Waterfalls>Particle System>Particle Arrow として入っています。下のプログラムで試す場合、パーティクルを仕込むオブジェクトのコンテンツ内にこの矢印のテクスチャを入れてください。最初この矢印はなんだろうとずっと思っていました。パーティクルの性質を確かめるためのものとして入っているのだとやっとわかりました。(違うかもしれませんが。)わたしも最初のうちは、デフォルトの光の粒でいじっていたので VELOCITY の性質が最後までわかりませんでした^^
default{
state_entry(){
llParticleSystem([]);
}
touch_start(integer detected){
state start;
}
}
state start{
state_entry(){
llParticleSystem([
PSYS_SRC_TEXTURE,"Particle Arrow",
PSYS_SRC_PATTERN,PSYS_SRC_PATTERN_DROP
,PSYS_PART_FLAGS,(0
| PSYS_PART_EMISSIVE_MASK
| PSYS_PART_FOLLOW_VELOCITY_MASK
| PSYS_PART_INTERP_SCALE_MASK
| PSYS_PART_TARGET_POS_MASK
)
,PSYS_PART_START_SCALE,<0.3,0.3,0>
,PSYS_PART_END_SCALE,<0.3,0.3,0>
,PSYS_PART_MAX_AGE,3.0
,PSYS_SRC_ACCEL,<0,0,5.0>
,PSYS_SRC_BURST_PART_COUNT,5
,PSYS_SRC_BURST_RATE,1.0
,PSYS_SRC_TARGET_KEY,llGetOwner()
]);
}
touch_start(integer detected){
state default;
}
}
蝶々で試しました。ホーミングはスピードを変化させると同時にパーティクルの寿命もいじってやらないと望みどうりの動きをしないようです。上方でだけ確認したのですが、5000メートルぐらいまでパーティクルは届くみたいです。SIM越えは確認していません。
PSYS_PART_BOUNCE_MASK を指定すると、位置座標Zの値が0の位置で跳ね返ります。(発生源を地面に置けば地面でバウンドする感じが出ます。) わたしの感覚としてはちょうどパチンコ玉を床にぶちまけた感じ^^ これも扇型でためしているので2次元に広がっています。
緑から赤に色を変化させています。色と透明度の変化をさせるためには必ずフラグのPSYS_PART_INTERP_COLOR_MASK を指定する必要があります。
次は、噴射するものが動くとどのように変化するのかを見るため、2つのボールをリンクさせて、中心となるボールが回転し、もうひとつのボールでパーティクルを発生するように用意しました。方向も見るためにテクスチャもアゲハ蝶に変えました。写真は蝶のサイズを小から大に変化するようにして、コーン型に上方から発生するようセットしています。(なお、球体で発生させる場合、建造で出したままだとY軸が90度回転しています。0にすれば上から出るようになります。)
で、このまま回転させると、このように機関車のけむりがたなびくように、うしろに残っていきます。
PSYS_PART_FOLLOW_SRC_MASK を指定するとこのようにたなびかないで回転していきます。
次は、わたしが最後までわからなかった PSYS_PART_FOLLOW_VELOCITY_MASK について説明します。
写真は、普通に上から発生させてます。先のものより数を少なくしています。
で、これが PSYS_PART_FOLLOW_VELOCITY_MASK を指定したものです。噴射する方向に向かって蝶が向きを変えているのがわかるでしょうか。
これは、さらに PSYS_SRC_OMEGA を指定して発射する方向を回転させて、更に発生源自体を動かしています。vector 型で値を入れます。これはどの値をいじればどうなるかというのは全くわかりませんでした。一応値はラジアンで指定するみたいです。
こうやって PSYS_PART_FOLLOW_VELOCITY_MASK と 組み合わせると、まきちらす感じが出ると思います。
次はホーミングを組み合わせます。PSYS_SRC_TARGET_KEY, でオブジェクトのオーナー(自分自身)を指定し、PSYS_PART_TARGET_POS_MASK でターゲットに向かうようにしています。ターゲットキーを指定しないと発生源に向かっていくようです。
この矢印は、持ち物の中に Library>Textures>Waterfalls>Particle System>Particle Arrow として入っています。下のプログラムで試す場合、パーティクルを仕込むオブジェクトのコンテンツ内にこの矢印のテクスチャを入れてください。最初この矢印はなんだろうとずっと思っていました。パーティクルの性質を確かめるためのものとして入っているのだとやっとわかりました。(違うかもしれませんが。)わたしも最初のうちは、デフォルトの光の粒でいじっていたので VELOCITY の性質が最後までわかりませんでした^^
default{
state_entry(){
llParticleSystem([]);
}
touch_start(integer detected){
state start;
}
}
state start{
state_entry(){
llParticleSystem([
PSYS_SRC_TEXTURE,"Particle Arrow",
PSYS_SRC_PATTERN,PSYS_SRC_PATTERN_DROP
,PSYS_PART_FLAGS,(0
| PSYS_PART_EMISSIVE_MASK
| PSYS_PART_FOLLOW_VELOCITY_MASK
| PSYS_PART_INTERP_SCALE_MASK
| PSYS_PART_TARGET_POS_MASK
)
,PSYS_PART_START_SCALE,<0.3,0.3,0>
,PSYS_PART_END_SCALE,<0.3,0.3,0>
,PSYS_PART_MAX_AGE,3.0
,PSYS_SRC_ACCEL,<0,0,5.0>
,PSYS_SRC_BURST_PART_COUNT,5
,PSYS_SRC_BURST_RATE,1.0
,PSYS_SRC_TARGET_KEY,llGetOwner()
]);
}
touch_start(integer detected){
state default;
}
}
蝶々で試しました。ホーミングはスピードを変化させると同時にパーティクルの寿命もいじってやらないと望みどうりの動きをしないようです。上方でだけ確認したのですが、5000メートルぐらいまでパーティクルは届くみたいです。SIM越えは確認していません。
Posted by ねこねこ at 19:07│Comments(0)
│スクリプト