2022/04/17

超簡単パーティクル

SLでいろいろ楽しいパーティクルの視覚効果ですがスクリプトで書こうとするとなんだかとても大変そうな感じです。
設定する項目や数字がいろいろあってしかもそれぞれ意味がよくわかりません。

そこでこれ以上簡単にはできない?という究極の超簡単なパーティクルというのを考えてみました。
イベントのとき会場上空を回る看板つき飛行船に仕込んだ ぽこぽこ白いのが飛び出してふわ〜っと漂うパーティクルです。

スクリプトはこちら:

default {
  state_entry() {
    // 最初はパーティクルを出さない
    llParticleSystem([]);
    // ここで超簡単なパーティクルの設定
    Particle = [
      PSYS_PART_FLAGS, PSYS_PART_WIND_MASK // 風に漂う
      | PSYS_PART_EMISSIVE_MASK, // 自分で光る(周りの光の影響を受けない)
      PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_ANGLE_CONE, // 発生方向の角度を設定
      PSYS_SRC_ANGLE_BEGIN, 0.3*PI // 角度: 0.3x180=54°
    ];
  }
  link_message(integer n,integer i,string msg,key id) {
    // リンクメッセージで開始または終了
    if ((float)msg) llSetTimerEvent(1);
    else llResetScript();
  }
  timer() { // ランダムな時間間隔でパーティクルを出したり止めたり
    llSetTimerEvent(MinTime+llFrand(MaxTime-MinTime));
    Emit = !Emit;
    if (Emit) llParticleSystem(Particle);
    else llParticleSystem([]);
  }
}

ほんの数行の簡単設定でもとりあえずパーティクルが出るのはデフォルト設定があるからですね。

超簡単では物足りない人向けには LSLポータルのページに詳しい説明がどっさり書いてあります。ただしデフォルトについては書いてないみたいです。(llParticleSystem)

ビューワーの Firestorm のメニューに Build > Object > Edit Particles というのがあって オブジェクト編集中ならそこから発生するパーティクルを編集できる画面が開きます。(つい最近友達に教えてもらいました。知らなかった〜)
この画面に最初から出ている項目や数値がデフォルトなのでしょう。
編集画面の [Copy] ボタンを押せば設定された項目とか数値がクリップボードにコピーされます。
[Inject] ボタンはその編集中のオブジェクトの中に New Particle Script というスクリプトが注入されます。

あと SLインワールドに The Particle Laboratory という場所があって そこではいろいろな展示物やサンプルスクリプトなどでパーティクルのことを詳しく教えてもらえます。
SLurl: https://maps.secondlife.com/secondlife/Teal/196/47/302