Difference between revisions of "LlParticleSystem/ja"

From Second Life Wiki
Jump to navigation Jump to search
m (Undo revision 310613 by Shinnosuke Darkstone (Talk))
(Update translation)
Line 2: Line 2:
|func_id=229|func_sleep=0.0|func_energy=10.0
|func_id=229|func_sleep=0.0|func_energy=10.0
|func=llParticleSystem
|func=llParticleSystem
|p1_type=list
|p1_type=list|p1_name=rules|p1_desc=パーティクル構成ルールの一覧を [ rule1, data1, rule2, data2 . . . rulen, datan ] という形式にしたもの。
|p1_name=rules
|func_desc='''rules''' のリスト内容に従って、スクリプトが入っているプリムのパーティクル構成を定義します。
|p1_desc=パーティクルシステムルール一覧のフォーマット<br>[ rule1, data1, rule2, data2 . . . ルール、データ ]
|func_desc='''ルール'''の一覧が組まれているプリムを含んでいるパーティクルシステムを定義します。
|return_text
|return_text
|spec=
|spec=
{{LSLG|primitive/ja|プリム}}内にある{{LSLG|script/ja|スクリプト}}に含まれている{{LSLG|particle emitter|パーティクルエミッター}}の状態を設定するパーティクルシステムを定義します。この関数を同じプリムにあるいずれか他のスクリプトが呼んでいる場合、同一のパーティクルエミッターの状態として修正するでしょう。
[[スクリプト]]が入っている[[プリム]]の[[particle emitter|パーティクル放出器]] (particle emitter) の状態を設定する、パーティクル構成 (particle system) を定義します。同じプリムにある他のスクリプトも、この同じパーティクル放出器の状態を変更できます。従って、この関数で定義されるパーティクル構成は[[primitive property|プリムの属性]]であり、その点で (プリムの) サイズ、形状、色などと同様です。
各プリムは{{LSLG|geometric center|幾何学中心}}を中心とした、ひとつのパーティクルエミッターのみ所有でき、 プリムの有効なZ方向に指向する、[[Viewer coordinate frames#Local|ローカル]]Z軸に沿って並びます。
各プリムは、ただ '''1個''' のパーティクル放出器を持ちます。その位置はプリムの [[geometric center|幾何学中心]] です。その方向はプリムの[[Viewer coordinate frames/ja#Local|ローカル]]な Z 軸に沿っており、正の Z 軸方向を向いています。


この関数は、プリムのパーティクルエミッターの状態を更新するだけのものです。エミッターを異なる状態に変更したいなら(たとえば、異なるパーティクルシステム全体を分散させる、あるいはエミッターを完全にオフにする)、 代わりに描写したい新しいパーティクルシステムのパラメータでこの関数を呼ぶだけです。空のリストを指定するとエミッターはオフに切り替わります。
この関数だけが、プリムのパーティクル放出器の状態を変更できます。従って、放出器を別な状態に変えたい (例えば、全く別のパーティクル構成で放出したい、あるいは放出を完全に停止したい) 場合、新しく設定したいパーティクル構成のパラメタで、この関数を再度呼び出してください。<code>llParticleSystem([]);</code> という具合に空のリストを指定すると、放出器を停止します。


パーティクルは基本的に2Dの''スプライト''で、常にビューアのカメラ表面に描写されます。
パーティクルは本質的に平面の "{{HoverText|スプライト|背景に重ねて画面表示する平面図形}}" であり、常にビューアのカメラに正対して描画されます。


ルール/データは以下に定義されます。
ルール/データの値は以下のように定義されます。
|caveats=
|caveats=
# パーティクルシステム実行によるバグ({{Jira|VWR-2146}}参照)のようで、、PSYS_PART_END_ALPHAとPSYS_PART_INTERP_COLOR_MASKフラグは、'''常に'''補正された結果としてPSYS_PART_END_ALPHAの値を加えるでしょう。そして1から初めて0.5進めるなら、パーティクルの効果時間の半分のとき0.75のアルファを期待します。1.25になろうとするとバグが発生します。結果的に、いつも加えられた後にこれの必要とする数値より高めに設定にするなどすれば、パーティクルが消滅しなくなります。
# PSYS_SRC_MAX_AGE で放出期間をゼロ以外に指定したパーティクル構成を使う際、スクリプト側で何もしていないのに (もう停止している) パーティクルが再開してしまう場合があります。これはプリムの何らかの属性が更新された、あるいはビューアに何かが作用したかが原因で、放出器が "リセット" されるバグの為です。結果的に、{{LSLG/ja|timer}} 関数か強制的な [[llSleep/ja|sleep]] を使い、指定時間が過ぎたらパーティクル構成をクリアする必要があるかもしれません。Debbie Trilling がこの対処法について述べています: http://forums.secondlife.com/showpost.php?p=1996465&postcount=6
#* これは [[WindLight/ja|WindLight]] First Look test Viewerにて修正されています。
# PSYS_SRC_OMEGA で定義される回転の相対基準となるのは[[Viewer coordinate frames/ja#Region|リージョン]]座標系であり、プリムの[[Viewer coordinate frames/ja#Local|ローカル]]座標系ではありません。
# 0ではないエミッター効果時間(PSYS_SRC_MAX_AGE) の設定にてパーティクルシステムを使っているとき、パーティクルシステムで組まれたトリガがオフになることなく再起動するかもしれない、と伝えるほうがいいかもしれません。これはエミッターが幾つかのプリムの設定が更新もしくは他のビューアに送信するときに''リセット''するのが原因でバグが発生しているようです。結果的に、{{LSLG|timer/ja|timer}}を使うか、著しい{{LSLG|llSleep/ja|遅延}}と一度発生時間を消滅させてパーティクルシステムを消すべきかもしれません。
# PSYS_SRC_TARGET_KEY ルールと PSYS_PART_TARGET_POS_MASK フラグによってアバターに向け放出されるパーティクルは、そのアバターを取り囲む直方体の幾何学中心まで行って消滅します。不幸なことに、これは股間を直撃するように見えてしまいます。アバターの別の部位を目標にしたい場合は、そこに目標となるプリムを置いてください。そしてそのプリムの UUID を PSYS_SRC_TARGET_KEY ルールの値に指定してください。
# PSYS_SRC_OMEGAで定義される回転は、[[Viewer coordinate frames#Region|リージョン]]座標システムに相対的で、プリムの[[Viewer coordinate frames#Local|ローカル]]座標システムとは相対的ではありません。
# Second Life ビューアは、小さすぎて殆ど見えない遠くのオブジェクトを間引いて描画するという最適化をしています。放出器が非常に小さくまた遠いため間引かれてしまう場合、それに設定されたパーティクルもまた描画されないでしょう。
# パーティクルは、PSYS_SRC_TARGET_KEYルールとPSYS_PART_TARGET_POS_MASKフラグで設定されている、指定された人型アバタに向かって動いていて、終点はアバターの矩形の幾何学中心、あいにくにも、アバタの股間部に直撃しているように表示されるでしょう。対象のアバタのほかの箇所を終点にしたい場合は、代わりに終点にしたい場所にした対象プリムを設置すべきで、PSYS_SRC_TARGET_KEYルールの値にそのプリムのキーを使用します。
|examples=
# Second Life viewerは余りにも小さくみえる距離にあるオブジェクトは淘汰するように最適化されています。もしエミッターがとても小さいなら、距離のことがもとで最適化され、パーティクルシステムとそのエミッター間で表示されないでしょう。
*[[Example Particle Script]]
|examples=[[Example Particle Script/ja]]
*[[Neurocam Particle Engine]]




この例は光っている赤い球の効果を作成します。
次第に大きくなる赤玉を次々に放出します。
<lsl>
<lsl>llParticleSystem( [
        llParticleSystem(  
        PSYS_PART_FLAGS,      PSYS_PART_WIND_MASK | PSYS_PART_EMISSIVE_MASK,
          [PSYS_PART_FLAGS,      PSYS_PART_WIND_MASK | PSYS_PART_EMISSIVE_MASK,
        PSYS_SRC_PATTERN,      PSYS_SRC_PATTERN_EXPLODE,  
          PSYS_SRC_PATTERN,      PSYS_SRC_PATTERN_EXPLODE,  
        PSYS_PART_START_COLOR, <1.0, 0.0, 0.0>
          PSYS_PART_START_COLOR, <1.0, 0.0, 0.0>
    ] );</lsl>
          ] );
</lsl>


|helpers=
|helpers=
'''integerに(から)色とアルファの値を蓄積(回収)のための使い勝手のいい関数です。'''<br />
'''色と透明度を integer 値として管理するのに便利な関数:'''<br />
<lsl>
<lsl>integer ColorAlphatoRGBA(vector color, float alpha) {
integer ColorAlphatoRGBA(vector color, float alpha) {
    return (((integer)(alpha   * 255.0) & 0xFF) << 24) |
return (((integer)(alpha * 255.0) & 0xFF) << 24) |
          (((integer)(color.x * 255.0) & 0xFF) << 16) |
(((integer)(color.x * 255.0) & 0xFF) << 16) |
          (((integer)(color.y * 255.0) & 0xFF) << 8) |
(((integer)(color.y * 255.0) & 0xFF) << 8) |
            ((integer)(color.z * 255.0) & 0xFF);
((integer)(color.z * 255.0) & 0xFF);
}
}


vector RGBAtoColor(integer rgba) {
vector RGBAtoColor(integer rgba) {
return < ((rgba >> 16) & 0xFF) / 255.0, ((rgba >> 8) & 0xFF) / 255.0, (rgba & 0xFF) / 255.0 >;
    return < ((rgba >> 16) & 0xFF) / 255.0, ((rgba >> 8) & 0xFF) / 255.0, (rgba & 0xFF) / 255.0 >;
}
}


float RGBAtoAlpha(integer rgba) {
float RGBAtoAlpha(integer rgba) {
return ((rgba >> 24) & 0xFF) / 255.0;
    return ((rgba >> 24) & 0xFF) / 255.0;
}
}</lsl>
</lsl>
|also_articles
|also_articles
|also_events
|also_events
Line 58: Line 52:
|sort=ParticleSystem
|sort=ParticleSystem
|notes=
|notes=
* クライアントの標準のパーティクル総数は、4096が基本設定です。クライアントが視界範囲で全ての有効なパーティクルシステムを表現するであろう最大パーティクル総数です。優れたパーティクルシステムのデザインは、そのパーティクルが周囲の人に''邪魔になること''と他の人達のパーティクルシステムを''枯らしていく''こと、を避けるのがキーポイントです。そのようなものとして、そんな多くのパーティクルの分散で、あなたのパーティクルエミッターがトラブルに遭う経験をしているならば、パーティクルの枯れをさけることはできないかもしれません。クライアント/ビューアのラグ(小さいフレームレート)はこれらが原因でもまた発生する可能性があるので、パーティクルは表現するために少ない最適地を選びます。これの最善な解決策は、あなた自身がデザインとテストを行なうとき、他のパーティクルシステムが相対的に制限しない、少ないラグの環境で動かすことです。
* ビューアが表示するパーティクル個数の標準は、通常 4096 に設定されています。これは視野にある全ての稼動中パーティクル構成に関して、ビューアが描画できる最大パーティクル数です。人々に "スパム" を行なわない、他人のパーティクル (が使うべきリソース) を圧迫しないためにも、良いパーティクル構成の設計が必要です。例えば、もしあなたのパーティクル放出器が期待するほどには多くの放出をしていないという場合、このリソース不足の犠牲者にされているかもしれません。パーティクルはどちらかというと描画の優先度が低いので、クライアント/ビューアのラグ (低フレームレート) も同様の問題を起こします。解決策として、自分のパーティクル構成を設計しテストする際には、比較的他から影響を受けない、ラグの少ない場所で行なうことです。
* 一度パーティクルが分散されると、直接的な動きはPSYS_PART_TARGET_POS_MASKフラグかthe PSYS_PART_FOLLOW_SRC_MASKフラグの、PSYS_SRC_ACCELによってのみ影響され得ます。そのようになるので、旋回渦エフェクト(オブジェクトが発している方向にビューアを一度向けた、消滅しはじめ、またはアバターがsim/gridから去ったときのようなもの)を作る良い方法はありません。
* パーティクルが放出された後の進行方向は PSYS_SRC_ACCEL、PSYS_PART_TARGET_POS_MASK フラグ、PSYS_PART_FOLLOW_SRC_MASK フラグによってのみ制御されます。例えば "渦を巻く竜巻" の効果 (オブジェクトが喋る時、撤去される時、アバターが SIM/グリッドを立ち去る時にビューアで使われるような効果) を作成する良い方法というものはありません。その効果は、パーティクルの発生源を動かすことで実現可能です。(例えば旋回スクリプトで。)
|constants={{{!}} {{prettytable}}
 
{{!}}{{Hl2}}{{!}}  
|constants={{{!}} {{prettytable|style=margin-top:0; margin-right:0;}}
{{!}}{{Hl2}}{{!}} ルール / 定型値
{{!}}-{{Hl2}}
{{!}}{{Hl2}}{{!}} 型
{{!!}}  
{{!}}{{Hl2}}{{!}} 説明
{{!!}} ルール/設定値の定数
{{!}}{{Hl2}}{{!}} 値
{{!!}} 型
{{!!}} 説明
{{!!}} 値
{{!}}- style="background-color:#ccffcc;"
{{!}}- style="background-color:#ccffcc;"
{{!}} colspan="5" align="left"{{!}}'''システムの動作'''
{{!}} colspan="5" align="left"{{!}}'''パーティクル構成のふるまい'''
{{!}}-
{{!}}-
{{!}}colspan="2"{{!}}PSYS_PART_FLAGS{{!}}{{!}}{{LSLG|integer/ja|integer}}{{!}}{{!}}様々なフラグがパーティクルシステムの動作を操作します。値は小数点の数値あるいは{{LSLG|hexadecimal|16進法}}、あるいは同時に一つ以上の、以下のフラグ定型(<nowiki>|</nowiki>演算子を用る)で指定されるかもしれません。{{!}}{{!}}align="center"{{!}}0
{{!}}colspan="2"{{!}}PSYS_PART_FLAGS
{{!!}}{{LSLG/ja|integer}}
{{!!}}パーティクルの振る舞いを制御する様々なフラグ。設定値は 10 進数形式か [[hexadecimal/ja|16 進数]]形式の整数で指定するか、以下の 1 個以上のフラグ定数の ビット単位 OR を ("<nowiki>|</nowiki>" 演算子を用いて) 指定します:
{{!}}align="center"{{!}}0
{{!}}- style="background-color:#e0e0e0;"
{{!}}- style="background-color:#e0e0e0;"
{{!}}rowspan="14" style="background-color:#c0c0c0;" align="center" valign="center"{{!}}'''値'''{{!}}{{!}}colspan="2"{{!}}PSYS_PART_BOUNCE_MASK{{!}}{{!}}設定時、指定のパーティクルがエミッターのZの高さでの[[Viewer coordinate frames#Region|リージョン]]面で跳ね返るでしょう。"跳ね返る"上で、各パーティクルは重心とアングルが逆向きになります。これは面より下に落下するパーティクルに限定の動きです。 {{!}}{{!}}align="center"{{!}}{{LSL_Hex|0x004|4}}
{{!}}rowspan="15" style="background-color:#c0c0c0;" align="center" valign="center"{{!}}'''設<br />定<br />値'''
{{!}}colspan="2"{{!}}PSYS_PART_BOUNCE_MASK
{{!!}}設定すると、放出器の[[Viewer coordinate frames/ja#Region|リージョン]] Z 座標平面で跳ね返されるようになります。跳ね返る際、各パーティクルの速度と角度が反転します。これはその平面の上から落下してくるパーティクルにのみ作用します。
{{!}}align="center"{{!}}{{LSL_Hex|0x004|4}}
{{!}}- style="background-color:#e0e0e0;"
{{!}}- style="background-color:#e0e0e0;"
{{!}} colspan="2"{{!}}PSYS_PART_EMISSIVE_MASK{{!}}{{!}}設定時、パーティクルは完全に明るい状態で、グローバルライティング(太陽光)に左右されません。 そのほかの場合では、パーティクルは標準のグローバルライティングを加えている状態で発光されるでしょう。部分的な光は、パーティクルを非放射状に照らします。{{!}}{{!}}align="center"{{!}}{{LSL_Hex|0x100|256}}
{{!}} colspan="2"{{!}}PSYS_PART_EMISSIVE_MASK
{{!!}}設定すると、パーティクルが{{HoverText|明るさ全開|訳注: プリム編集ダイアログの "テクスチャ" タブの "明るさ全開" が設定する状態。full-bright}}になり、環境光 (太陽光) の影響を受けなくなります。設定しない場合、パーティクルはその時の環境光の状態に応じて照らされます。この設定は非放出タイプのパーティクルにも効果があります。
{{!}}align="center"{{!}}{{LSL_Hex|0x100|256}}
{{!}}- style="background-color:#e0e0e0;"
{{!}}- style="background-color:#e0e0e0;"
{{!}} colspan="2"{{!}}PSYS_PART_FOLLOW_SRC_MASK{{!}}{{!}}設定時、パーティクルはエミッターの位置と相対的に動きます。そのほかの場合では、パーティクルの位置と動きはエミッターの位置/動きには左右されません。このフラグはPSYS_SRC_BURST_RADIUS ルールでは無効です。{{!}}{{!}}align="center"{{!}}{{LSL_Hex|0x010|16}}
{{!}} colspan="2"{{!}}PSYS_PART_FOLLOW_SRC_MASK
{{!!}}設定すると、パーティクルは放出器との位置関係を保ちながら移動します。(訳注: 放出器が移動すると、パーティクルもそれに同調して移動する。) 設定しない場合、パーティクルの位置と動きは、放出器の位置と動きに影響されません。このフラグは PSYS_SRC_BURST_RADIUS ルールを無効化します。
{{!}}align="center"{{!}}{{LSL_Hex|0x010|16}}
{{!}}- style="background-color:#e0e0e0;"
{{!}}- style="background-color:#e0e0e0;"
{{!}} colspan="2"{{!}}PSYS_PART_FOLLOW_VELOCITY_MASK{{!}}{{!}}設定時、パーティクルは動きあるいは拡散の方向に上向きで適応して回転します。そのほかの場合では、標準のエミッターの回転を基準として常に放散されます。{{!}}{{!}}align="center"{{!}}{{LSL_Hex|0x020|32}}
{{!}} colspan="2"{{!}}PSYS_PART_FOLLOW_VELOCITY_MASK
{{!!}}設定すると、パーティクルはその上端を進行方向/放出方向へ向けます。設定しない場合、パーティクルはその時点の放出器の傾きをもとにして放出されます。
{{!}}align="center"{{!}}{{LSL_Hex|0x020|32}}
{{!}}- style="background-color:#e0e0e0;"
{{!}}- style="background-color:#e0e0e0;"
{{!}} colspan="2"{{!}}PSYS_PART_INTERP_COLOR_MASK{{!}}{{!}}設定時、パーティクルの色とアルファが、パーティクルの効果時間中、開始設定から終了設定へと変換します。変換はスムーズに補完されます。{{!}}{{!}}align="center"{{!}}{{LSL_Hex|0x001|1}}
{{!}} colspan="2"{{!}}PSYS_PART_INTERP_COLOR_MASK
{{!!}}設定すると、パーティクルの色と透明度の設定が、表示開始から消滅までの間で変化します。変化では滑らかな補間が行なわれます。
{{!}}align="center"{{!}}{{LSL_Hex|0x001|1}}
{{!}}- style="background-color:#e0e0e0;"
{{!}}- style="background-color:#e0e0e0;"
{{!}} colspan="2"{{!}}PSYS_PART_INTERP_SCALE_MASK{{!}}{{!}}設定時、パーティクルの大きさと形状が、パーティクルの効果時間中、開始設定から終了設定へと変換します。{{!}}{{!}}align="center"{{!}}{{LSL_Hex|0x002|2}}
{{!}} colspan="2"{{!}}PSYS_PART_INTERP_SCALE_MASK
{{!!}}設定すると、パーティクルのサイズ/倍率の設定が、表示開始から消滅までの間で変化します。
{{!}}align="center"{{!}}{{LSL_Hex|0x002|2}}
{{!}}- style="background-color:#e0e0e0;"
{{!}}- style="background-color:#e0e0e0;"
{{!}} colspan="2"{{!}}PSYS_PART_TARGET_LINEAR_MASK{{!}}{{!}}(''非公式な追記'') 設定時、放散したパーティクルがPSYS_SRC_TARGET_KEYで指定された対象に向かって一直線に移動します。このモードで、PSYS_SRC_ACCEL、PSYS_SRC_BURST_RADIUS、そして場合によってはほかのルールが排除されます。{{!}}{{!}}align="center"{{!}}{{LSL_Hex|0x080|128}}
{{!}} colspan="2"{{!}}PSYS_PART_TARGET_LINEAR_MASK
{{!!}}設定すると、放出されたパーティクルは PSYS_SRC_TARGET_KEY ルールで指定された目標へ直線的に移動します。このモードでは PSYS_SRC_ACCEL、PSYS_SRC_BURST_RADIUS、および場合によっては他のルールが無視されます。
{{!}}align="center"{{!}}{{LSL_Hex|0x080|128}}
{{!}}- style="background-color:#e0e0e0;"
{{!}}- style="background-color:#e0e0e0;"
{{!}} colspan="2"{{!}}PSYS_PART_TARGET_POS_MASK{{!}}{{!}}設定時、放散したパーティクルが有効時間中にPSYS_SRC_TARGET_KEYルールで指定された対象に向かって、移動を調整してコースが変わります。対象が指定されていない場合、範囲外に移動した場合、あるいは有効ではない対象が指定された場合、パーティクルは発散しているプリム自身を対象にします。{{!}}{{!}}align="center"{{!}}{{LSL_Hex|0x040|64}}
{{!}} colspan="2"{{!}}PSYS_PART_TARGET_POS_MASK
{{!!}}設定すると、放出されたパーティクルは消滅するまでの間、PSYS_SRC_TARGET_KEY ルールで指定された目標へ向かって移動するように、表示中に進行方向を変えます。目標が指定されなかった場合、あるいは目標が範囲から外れた場合、あるいは不正な目標が指定された場合、パーティクルは自身のプリムを目標とします。
{{!}}align="center"{{!}}{{LSL_Hex|0x040|64}}
{{!}}- style="background-color:#e0e0e0;"
{{!}}- style="background-color:#e0e0e0;"
{{!}} colspan="2"{{!}}PSYS_PART_WIND_MASK{{!}}{{!}}設定時、パーティクルの動きは{{LSLG|llWind/ja|風}}に影響されます。 パーティクル上で、補助的な効力として作用されます。{{!}}{{!}}align="center"{{!}}{{LSL_Hex|0x008|8}}
{{!}} colspan="2"{{!}}PSYS_PART_WIND_MASK
{{!!}}指定された場合、パーティクルの移動は[[llWind/ja|風]]によって影響を受けます。風はパーティクルに作用する二番目の力として適用されます。
{{!}}align="center"{{!}}{{LSL_Hex|0x008|8}}
{{!}}-


{{!}}- style="background-color:#e0e0e0;"
{{!}}- style="background-color:#e0e0e0;"
{{!}} colspan="2"{{!}}<s>PSYS_PART_BEAM_MASK</s>{{!}}{{!}}(''未実装'') 隠されていますが、リストにあります。{{!}}{{!}}align="center"{{!}}{{LSL_Hex|0x200|}}
{{!}} colspan="2"{{!}}<s>PSYS_PART_BEAM_MASK</s>
{{!!}}(''未実装'') enum 値として存在しているだけです。
{{!}}align="center"{{!}}{{LSL_Hex|0x200|}}
{{!}}-


{{!}}- style="background-color:#e0e0e0;"
{{!}}- style="background-color:#e0e0e0;"
{{!}} colspan="2"{{!}}<s>PSYS_PART_DEAD_MASK</s>{{!}}{{!}}パーティクルを除去し、多くのほかのPSYS_PART_*_MASKとは両立しません。{{!}}{{!}}align="center"{{!}}{{LSL_Hex|0x80000000|}}
{{!}} colspan="2"{{!}}<s>LL_PART_HUD</s>
{{!!}}HUD および rez されたオブジェクトのパーティクル発生源を区別するためビューアによって使われます。
{{!}}align="center"{{!}}{{LSL_Hex|0x40000000|}}
{{!}}-
{{!}}- style="background-color:#e0e0e0;"
{{!}} colspan="2"{{!}}<s>LL_PART_DEAD_MASK</s>
{{!!}}パーティクルを削除します。どの PSYS_PART_*_MASK とも互換性がありません。
{{!}}align="center"{{!}}{{LSL_Hex|0x80000000|}}
{{!}}-


{{!}}- style="background-color:#e0e0e0;"
{{!}}- style="background-color:#e0e0e0;"
{{!}} colspan="2"{{!}}<s>PSYS_PART_RANDOM_ACCEL_MASK</s>{{!}}{{!}}(''未実装'') パーティクルにランダムな加速率を適用するために用いられると推測されます。{{!}}{{!}}align="center"{{!}} -
{{!}} colspan="2"{{!}}<s style="color:darkred;">LL_PART_RANDOM_ACCEL_MASK</s>
{{!!}}(''未実装 & コメントアウト'') パーティクルにランダムな強弱を適用するために使われるようです。
{{!}}align="center"{{!}} -
{{!}}-
 
{{!}}- style="background-color:#e0e0e0;"
{{!}}- style="background-color:#e0e0e0;"
{{!}} colspan="2"{{!}}<s>PSYS_PART_RANDOM_VEL_MASK</s>{{!}}{{!}}(''未実装') パーティクルの分散上でランダムな重点を指定することに用いられると推測されます。{{!}}{{!}}align="center"{{!}} -
{{!}} colspan="2"{{!}}<s style="color:darkred;">LL_PART_RANDOM_VEL_MASK</s>
{{!!}}(''未実装 & コメントアウト'') パーティクル放出時にランダムな速度を指定するために使われるようです。
{{!}}align="center"{{!}} -
{{!}}-
 
{{!}}- style="background-color:#e0e0e0;"
{{!}}- style="background-color:#e0e0e0;"
{{!}} colspan="2"{{!}}<s>PSYS_PART_TRAIL_MASK</s>{{!}}{{!}}(''未実装'') 一気に多くのパーティクルを分散させる源に''痕跡''を付与するために用いられると推測されます。{{!}}{{!}}align="center"{{!}} -
{{!}} colspan="2"{{!}}<s style="color:darkred;">LL_PART_TRAIL_MASK</s>
{{!!}}(''未実装 & コメントアウト'') 短いパーティクルを追加放出して "軌跡" を実現するために使われるようです。
{{!}}align="center"{{!}} -
{{!}}-
 
{{!}}- style="background-color:#ccffcc;"
{{!}}- style="background-color:#ccffcc;"
{{!}} colspan="5" align="left"{{!}}'''システムの表現'''
{{!}} colspan="5" align="left"{{!}}'''パーティクル構成のみばえ'''
{{!}}-
{{!}}-
{{!}} colspan="2"{{!}}PSYS_SRC_PATTERN{{!}}{{!}}{{LSLG|integer/ja|integer}}{{!}}{{!}}基本的な分散パターンを指定します。{{!}}{{!}}align="center"{{!}}9
{{!}} colspan="2"{{!}}PSYS_SRC_PATTERN
{{!!}}{{LSLG/ja|integer}}
{{!!}}全体的な放出パターンを指定します。
{{!}}align="center"{{!}}9
{{!}}- style="background-color:#e0e0e0;"
{{!}}- style="background-color:#e0e0e0;"
{{!}}rowspan="5" style="background-color:#c0c0c0;" align="center" valign="center"{{!}}'''値'''{{!}}{{!}} colspan="2"{{!}}PSYS_SRC_PATTERN_ANGLE{{!}}{{!}}SYS_SRC_ANGLE_BEGINとPSYS_SRC_ANGLE_ENDによって定義される2次元循環部に存在するパーティクルです。 パーティクル面の方向は、エミッターの[[Viewer coordinate frames#Region|リージョン]]の回転と相対的にX=0です。{{!}}{{!}}align="center"{{!}}{{LSL_Hex|0x04|4}}
{{!}}rowspan="5" style="background-color:#c0c0c0;" align="center" valign="center"{{!}}'''設<br />定<br />値'''
{{!}} colspan="2"{{!}}PSYS_SRC_PATTERN_ANGLE
{{!!}}パーティクルを平面的な円の範囲に表示します。表示範囲は PSYS_SRC_ANGLE_BEGIN と PSYS_SRC_ANGLE_END で定義されます。表示範囲となる平面の向きは、放出器の[[Viewer coordinate frames/ja#Region|リージョン]]座標の傾きにおいて X=0 となる向きです。
{{!}}align="center"{{!}}{{LSL_Hex|0x04|4}}
{{!}}- style="background-color:#e0e0e0;"
{{!}}- style="background-color:#e0e0e0;"
{{!}}colspan="2"{{!}}PSYS_SRC_PATTERN_ANGLE_CONE{{!}}{{!}}PSYS_SRC_ANGLE_BEGINとPSYS_SRC_ANGLE_ENDによって定義される3次元球状部に存在するパーティクルです。{{!}}{{!}}align="center"{{!}}{{LSL_Hex|0x08|8}}
{{!}}colspan="2"{{!}}PSYS_SRC_PATTERN_ANGLE_CONE
{{!!}}パーティクルを球状の範囲に表示します。表示範囲は PSYS_SRC_ANGLE_BEGIN と PSYS_SRC_ANGLE_END で定義されます。
{{!}}align="center"{{!}}{{LSL_Hex|0x08|8}}
{{!}}- style="background-color:#e0e0e0;"
{{!}}- style="background-color:#e0e0e0;"
{{!}}colspan="2"{{!}}PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY{{!}}{{!}}(''非公式な追記:非関数として振舞います''PSYS_SRC_ANGLE_BEGIN PSYS_SRC_ANGLE_ENDによって定義される3次元球状部に存在するパーティクルですが、ANGLE_CON パターンと対義です。(すなわち、ANGLE_CONEが無効な場所だとANGLE_CONE_EMPTYのパーティクルがあり、逆の場合もしかり){{!}}{{!}}align="center"{{!}}{{LSL_Hex|0x10|16}}
{{!}}colspan="2"{{!}}PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY
{{!!}}(''未実装'') パーティクルを球状の範囲に表示します。表示範囲は PSYS_SRC_ANGLE_BEGIN と PSYS_SRC_ANGLE_END で定義されますが、ANGLE_CONE のパターンとは逆に解釈されます。(すなわち ANGLE_CONE でパーティクルが表示されない範囲ができたら、同じ設定値の場合 ANGLE_CONE_EMPTY ならば逆にそこにパーティクルが表示される。逆も同様。)
{{!}}align="center"{{!}}{{LSL_Hex|0x10|16}}
{{!}}- style="background-color:#e0e0e0;"
{{!}}- style="background-color:#e0e0e0;"
{{!}}colspan="2"{{!}}PSYS_SRC_PATTERN_DROP{{!}}{{!}}存在するパーティクルがエミッターのポジションに無重力で落下していきます。PSYS_SRC_BURST_RADIUS、PSYS_SRC_BURST_SPEED_MINとPSYS_SRC_BURST_SPEED_MAXルールは無効です。{{!}}{{!}}align="center"{{!}}{{LSL_Hex|0x01|1}}
{{!}}colspan="2"{{!}}PSYS_SRC_PATTERN_DROP
{{!!}}パーティクルが放出器の位置から力を加えず落下するように表示します。PSYS_SRC_BURST_RADIUS、PSYS_SRC_BURST_SPEED_MIN、PSYS_SRC_BURST_SPEED_MAX ルールを無視します。
{{!}}align="center"{{!}}{{LSL_Hex|0x01|1}}
{{!}}- style="background-color:#e0e0e0;"
{{!}}- style="background-color:#e0e0e0;"
{{!}}colspan="2"{{!}}PSYS_SRC_PATTERN_EXPLODE{{!}}{{!}}放出動作規則に一致している全方向に放散して存在するパーティクルです。{{!}}{{!}}align="center"{{!}}{{LSL_Hex|0x02|2}}
{{!}}colspan="2"{{!}}PSYS_SRC_PATTERN_EXPLODE
{{!!}}パーティクルを全方向へ打ち出すように表示します。burst 動作のルールに従います。
{{!}}align="center"{{!}}{{LSL_Hex|0x02|2}}
{{!}}-
{{!}}-
{{!}}colspan="2"{{!}}PSYS_SRC_BURST_RADIUS{{!}}{{!}}{{LSLG|float/ja|float}}{{!}}{{!}}パーティクルが作られるであろうエミッターからの距離を指定します。このルールはPSYS_PART_FOLLOW_SRC_MASKフラグの設定時は無効です。 http://forums.secondlife.com/showthread.php?t=226722 のテストでは、最大値は50.00を指し示します。{{!}}{{!}}align="center"{{!}}16
{{!}}colspan="2"{{!}}PSYS_SRC_BURST_RADIUS
{{!!}}{{LSLG/ja|float}}
{{!!}}パーティクルの発生範囲を放出器からの距離で指定します。このルールは PSYS_PART_FOLLOW_SRC_MASK フラグが指定されると無視されます。http://forums.secondlife.com/showthread.php?t=226722 でのテストによると最大値は 50.00 です。
{{!}}align="center"{{!}}16
{{!}}-
{{!}}-
{{!}}colspan="2"{{!}}PSYS_SRC_ANGLE_BEGIN{{!}}{{!}}{{LSLG|float/ja|float}}{{!}}{{!}}分散されないだろうパーティクルの、円状もしくは球状もしくは円錐状の(エミッター面から始まる)部分のラジアンの半分のアングルを指定します。エフェクトは一致しているのを反転されるのにも関わらず、有効な値はPSYS_SRC_ANGLE_ENDと同じものです。パターンがPSYS_SRC_PATTERN_ANGLEの場合、パーティクルの表現は2次元の平らな環状部上です。PSYS_SRC_PATTERN_ANGLE_CONEかPSYS_SRC_PATTERN_ANGLE_CONE_EMPTYが使われている場合、パーティクルの表現は3次元の球状部上です。このパラメータとPSYS_SRC_ANGLE_ENDの値は パラメータが2つの値の小さいほうを取得するように内部で再実行されることに注意しましょう。{{!}}{{!}}align="center"{{!}}22
{{!}}colspan="2"{{!}}PSYS_SRC_ANGLE_BEGIN
{{!!}}{{LSLG/ja|float}}
{{!!}}パーティクルが放出されない範囲を指定します。範囲となる円/円錐のくぼみ/突出部分 (放出器の表面が起点) の角度を 1/2 したものをラジアンで指定します。有効な値は PSYS_SRC_ANGLE_END のそれと同じですが、意味は逆です。放出パターンが PSYS_SRC_PATTERN_ANGLE の場合、平面の円の範囲を表現します。PSYS_SRC_PATTERN_ANGLE_CONE あるいは PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY の場合、立体の球の範囲を表現します。このパラメタおよび PSYS_SRC_ANGLE_END の値は内部的に並び替えられ、このパラメタには小さいほうが割り当てられます。
{{!}}align="center"{{!}}22
{{!}}-
{{!}}-
{{!}}colspan="2"{{!}}PSYS_SRC_ANGLE_END{{!}}{{!}}{{LSLG|float/ja|float}}{{!}}{{!}}
{{!}}colspan="2"{{!}}PSYS_SRC_ANGLE_END
分散されないであろうパーティクルの、円状もしくは球体の"くぼみ"、もしくは円錐状の(エミッター面から始まる)部分のラジアンの半分のアングルを指定します。有効な値が0でエミッター面からPIの方向へ一直線に放散されたパーティクルを生じ、PSYS_SRC_ANGLE_BEGINによって定義された、完全な円状もしくは"くぼみ"を含まないエミッター周りの球体の弧もしくは円錐状の部分で発散され始めるパーティクルを生じるでしょう。パターンがPSYS_SRC_PATTERN_ANGLEの場合、表現は二次元の平らな環状部上です。PSYS_SRC_PATTERN_ANGLE_CONEかPSYS_SRC_PATTERN_ANGLE_CONE_EMPTYが使われている場合、表現は3次元球状部上です。このパラメータの値とPSYS_SRC_ANGLE_BEGINは2つの値の大きいほうを取得するように内部で再実行されます。{{!}}{{!}}align="center"{{!}}23
{{!!}}{{LSLG/ja|float}}
{{!!}}パーティクルが放出されない範囲を指定します。範囲となる円/円錐のくぼみ/突出部分 (放出器の表面が起点) の角度を 1/2 したものをラジアンで指定します。有効な値は 0.0~{{LSLG/ja|PI}} です。0.0 の場合、放出器が向いている方向へ一直線にパーティクルを放出します。PI の場合、PSYS_SRC_ANGLE_BEGIN で定義されるくぼみ/突出部分を除いた全方向へ、放出器からパーティクルを放出します。放出パターンが PSYS_SRC_PATTERN_ANGLE の場合、平面の円の範囲を表現します。PSYS_SRC_PATTERN_ANGLE_CONE あるいは PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY の場合、立体の球の範囲を表現します。このパラメタおよび PSYS_SRC_ANGLE_BEGIN の値は内部的に並び替えられ、このパラメタには大きいほうが割り当てられます。
{{!}}align="center"{{!}}23
{{!}}-
{{!}}-
{{!}}colspan="2"{{!}}<del>PSYS_SRC_INNERANGLE</del>{{!}}{{!}}{{LSLG|float/ja|float}}{{!}}{{!}}'''廃止: 代わりにPSYS_SRC_ANGLE_BEGINを使用します。''' 代替するルールとよくにた動きは、中心よりもかなりエミッター面寄り部分の端にはいきません。{{!}}{{!}}align="center"{{!}}10
{{!}}colspan="2"{{!}}<del>PSYS_SRC_INNERANGLE</del>
{{!!}}{{LSLG/ja|float}}
{{!!}}'''非推奨: 代わりに PSYS_SRC_ANGLE_BEGIN を使ってください''' 後継のルール (PSYS_SRC_ANGLE_BEGIN) と同様に動作しますが、放出器の中心でなく表面が範囲の基準になる点が異なります。
{{!}}align="center"{{!}}10
{{!}}-
{{!}}-
{{!}}colspan="2"{{!}}<del>PSYS_SRC_OUTERANGLE</del>{{!}}{{!}}{{LSLG|float/ja|float}}{{!}}{{!}}'''廃止: 代わりにPSYS_SRC_ANGLE_ENDを使用します。''' 代替するルールとよくにた動きは、中心部よりもかなりエミッター面寄りな部分にはいきません。{{!}}{{!}}align="center"{{!}}11
{{!}}colspan="2"{{!}}<del>PSYS_SRC_OUTERANGLE</del>
{{!!}}{{LSLG/ja|float}}
{{!!}}'''非推奨: 代わりに PSYS_SRC_ANGLE_END を使ってください''' 後継のルール (PSYS_SRC_ANGLE_END) と同様に動作しますが、放出器の中心でなく表面が範囲の基準になる点が異なります。
{{!}}align="center"{{!}}11
{{!}}-
{{!}}-
{{!}}colspan="2"{{!}}PSYS_SRC_TARGET_KEY{{!}}{{!}}{{LSLG|key/ja|key}}{{!}}{{!}}パーティクルがコースと動きを変えるであろう方向の対象のオブジェクト、プリム、もしくはエージェントのキーを指定します。有効時間の終了時は、対象の幾何学的中心へと最終的に試みます。PSYS_PART_TARGET_POS_MASKの設定が必要です。[[#Caveats|caveat 4]]{{!}}{{!}}align="center"{{!}}20
{{!}}colspan="2"{{!}}PSYS_SRC_TARGET_KEY
{{!!}}{{LSLG/ja|key}}
{{!!}}移動目標となるオブジェクト、プリム、アバターの UUID を指定します。それに向かってパーティクルは進路を変え、移動してゆきます。表示持続時間が尽きる時にちょうど目標の幾何学中心に到達するよう調整されます。PSYS_PART_TARGET_POS_MASK フラグが設定されていなければなりません。[[#警告|警告 3]]
{{!}}align="center"{{!}}20
{{!}}- style="background-color:#ccffcc;"
{{!}}- style="background-color:#ccffcc;"
{{!}}colspan="5" align="left"{{!}}'''パーティクルの見栄え'''
{{!}}colspan="5" align="left"{{!}}'''パーティクルの外観'''
{{!}}-
{{!}}-
{{!}}colspan="2"{{!}}PSYS_PART_START_COLOR{{!}}{{!}}{{LSLG|vector/ja|vector}}{{!}}{{!}}パーティクル発散開始時の{{LSLGC|Color/ja|色}}を指定する{{LSLG|unit vector|一個のvector}}です。{{!}}{{!}}align="center"{{!}}1
{{!}}colspan="2"{{!}}PSYS_PART_START_COLOR
{{!!}}{{LSLG/ja|vector}}
{{!!}}パーティクル出現時の[[Color/ja|色]]を表現した vector 値。
{{!}}align="center"{{!}}1
{{!}}-
{{!}}-
{{!}}colspan="2"{{!}}PSYS_PART_END_COLOR{{!}}{{!}}{{LSLG|vector/ja|vector}}{{!}}{{!}}パーティクルが有効時間の間に変換する{{LSLGC|Color/ja|色}}を指定する{{LSLG|unit vector|一個のvector}}です。PSYS_PART_INTERP_COLOR_MASKマスクを設定している場合のみつかえます。{{!}}{{!}}align="center"{{!}}3
{{!}}colspan="2"{{!}}PSYS_PART_END_COLOR
{{!!}}{{LSLG/ja|vector}}
{{!!}}パーティクルが表示持続時間を経過して消滅する時の[[Color/ja|色]]を表現した vector 値。PSYS_PART_INTERP_COLOR_MASK フラグが設定された時だけ使われます。
{{!}}align="center"{{!}}3
{{!}}-
{{!}}-
{{!}}colspan="2"{{!}}PSYS_PART_START_ALPHA{{!}}{{!}}{{LSLG|float/ja|float}}{{!}}{{!}}パーティクル発散開始時の{{LSLGC|Alpha/ja|アルファ}}を指定します。有効な値は0.0~1.0の範囲です。高い数値ほどさらに不透明になり、小さい数値ほどさらに透明になります。{{!}}{{!}}align="center"{{!}}2
{{!}}colspan="2"{{!}}PSYS_PART_START_ALPHA
{{!!}}{{LSLG/ja|float}}
{{!!}}パーティクル出現時の[[Alpha/ja|透明度]]を指定します。有効な値の範囲は 0.0 ~ 1.0 です。値が小さいほど透明に、大きいほど不透明になります。
{{!}}align="center"{{!}}2
{{!}}-
{{!}}-
{{!}}colspan="2"{{!}}PSYS_PART_END_ALPHA{{!}}{{!}}{{LSLG|float/ja|float}}{{!}}{{!}}パーティクルが有効時間の間に変換する{{LSLGC|Alpha/ja|アルファ}}を指定します。PSYS_PART_INTERP_COLOR_MASKフラグを設定している場合のみ使えます。有効な値はPSYS_PART_START_ALPHAと同じです。([[#Caveats|caveat 1]]){{!}}{{!}}align="center"{{!}}4
{{!}}colspan="2"{{!}}PSYS_PART_END_ALPHA
{{!!}}{{LSLG/ja|float}}
{{!!}}パーティクルが表示持続時間を経過して消滅する時の[[Alpha/ja|透明度]]を指定します。PSYS_PART_INTERP_COLOR_MASK フラグが設定された時だけ使われます。有効な値は PSYS_PART_START_ALPHA と同じです。
{{!}}align="center"{{!}}4
{{!}}-
{{!}}-
{{!}}colspan="2"{{!}}PSYS_PART_START_SCALE{{!}}{{!}}{{LSLG|vector/ja|vector}}{{!}}{{!}}パーティクル発散開始時の形状やサイズを指定します。各方向で有効な値は0.04 (0.03125)~4.0mです。パーティクルは基本的に2Dスプライトなので、vectorのZ構成は無効であり、0.0で設定すべきです。{{!}}{{!}}align="center"{{!}}5
{{!}}colspan="2"{{!}}PSYS_PART_START_SCALE
{{!!}}{{LSLG/ja|vector}}
{{!!}}パーティクルが出現する時のサイズを指定します。(単位: メートル。) 有効な値は各軸とも 0.04 (0.03125) ~ 4.0 です。パーティクルは本質的に平面のスプライトなので、vector 値の Z 軸要素は無視され 0.0 になります。
{{!}}align="center"{{!}}5
{{!}}-
{{!}}-
{{!}}colspan="2"{{!}}PSYS_PART_END_SCALE{{!}}{{!}}{{LSLG|vector/ja|vector}}{{!}}{{!}}パーティクルが有効時間の間に変換する形状とサイズを指定します。PSYS_PART_INTERP_SCALE_MASKフラグを設定している場合のみ使えます。有効な値はPSYS_PART_START_SCALEと同じです。{{!}}{{!}}align="center"{{!}}6
{{!}}colspan="2"{{!}}PSYS_PART_END_SCALE
{{!!}}{{LSLG/ja|vector}}
{{!!}}パーティクルが表示持続時間を経過して消滅する時のサイズを指定します。PSYS_PART_INTERP_SCALE_MASK フラグが設定された時だけ使われます。有効な値は PSYS_PART_START_SCALE と同じです。
{{!}}align="center"{{!}}6
{{!}}-
{{!}}-
{{!}}colspan="2"{{!}}PSYS_SRC_TEXTURE{{!}}{{!}}{{LSLG|string/ja|string}}{{!}}{{!}}各パーティクルに用いる、プリム内のテクスチャ名を指定します。代わりに付与するキーとしてテクスチャのUUIDを指定することも出来るでしょう。{{!}}{{!}}align="center"{{!}}12
{{!}}colspan="2"{{!}}PSYS_SRC_TEXTURE
{{!!}}{{LSLG/ja|string}}
{{!!}}各パーティクルで使用するテクスチャを指定します。プリムのインベントリ内にあるならばテクスチャ名を、インベントリ内に無いならばテクスチャの UUID で指定もできます。
{{!}}align="center"{{!}}12
{{!}}- style="background-color:#ccffcc;"
{{!}}- style="background-color:#ccffcc;"
{{!}}colspan="5" align="left"{{!}}'''パーティクルの落下'''
{{!}}colspan="5" align="left"{{!}}'''パーティクルの放出'''
{{!}}-
{{!}}-
{{!}}colspan="2"{{!}}PSYS_SRC_MAX_AGE{{!}}{{!}}{{LSLG|float/ja|float}}{{!}}{{!}}(パーティクルシステムがすでに設定されている場合)エミッターが視界に入り始めるように指示、あるいは(すでに視界にある場合)この関数が実行開始する秒単位の間隔を指定します。終了直後、それ以降パーティクルが分散されないと、上記の指定は除去されます。0はパーティクルシステムを無期限で継続します。([[#Caveats|caveat 2]]){{!}}{{!}}align="center"{{!}}19
{{!}}colspan="2"{{!}}PSYS_SRC_MAX_AGE
{{!!}}{{LSLG/ja|float}}
{{!!}}放出器の放出持続時間を指定します。(単位: 秒。) (既にパーティクル構成が設定済みならば) 視界に入った時点からの、あるいは (既に視界に入っているならば) この関数が実行された時点からの時間となります。指定時間が過ぎると、上記の条件に合致しない限り、パーティクルは放出されなくなります。ゼロを指定するとパーティクルは無期限に放出されます。([[#警告|警告 1]])
{{!}}align="center"{{!}}19
{{!}}-
{{!}}-
{{!}}colspan="2"{{!}}PSYS_PART_MAX_AGE{{!}}{{!}}{{LSLG|float/ja|float}}{{!}}{{!}}秒単位で各パーティクル発散有効時間を指定します。最大30.0秒です。この時間の間、パーティクルは他の部分で指定されたパラメータにあわせて表示され、見かけを変えて、動いて、そして非表示になるでしょう。{{!}}{{!}}align="center"{{!}}7
{{!}}colspan="2"{{!}}PSYS_PART_MAX_AGE
{{!!}}{{LSLG/ja|float}}
{{!!}}各パーティクルの表示持続時間を指定します。(単位: 秒。) 最大値は 30.0 です。パーティクルは出現した後、この時間をかけて、他のルールで指定されたパラメタに応じて外観を変えつつ移動し、消滅します。
{{!}}align="center"{{!}}7
{{!}}-
{{!}}-
{{!}}colspan="2"{{!}}PSYS_SRC_BURST_RATE{{!}}{{!}}{{LSLG|float/ja|float}}{{!}}{{!}}放出されているパーティクルが発散する時間間隔を秒単位で指定します。0.0の値はビューアが可能な限りの速さでパーティクルが放散を起こすように指定します。{{!}}{{!}}align="center"{{!}}13
{{!}}colspan="2"{{!}}PSYS_SRC_BURST_RATE
{{!!}}{{LSLG/ja|float}}
{{!!}}放出されるパーティクルの "炸裂" (burst) 間隔を指定します。(単位: 秒。) 0.0 を指定すると、ビューアが可能な限り高速にパーティクルを放出します。
{{!}}align="center"{{!}}13
{{!}}-
{{!}}-
{{!}}colspan="2"{{!}}PSYS_SRC_BURST_PART_COUNT{{!}}{{!}}{{LSLG|integer/ja|integer}}{{!}}{{!}}"発散"で放出されるパーティクルの数を指定します。{{!}}{{!}}align="center"{{!}}15
{{!}}colspan="2"{{!}}PSYS_SRC_BURST_PART_COUNT
{{!!}}{{LSLG/ja|integer}}
{{!!}}一度の "炸裂" で放出されるパーティクルの数を指定します。
{{!}}align="center"{{!}}15
{{!}}- style="background-color:#ccffcc;"
{{!}}- style="background-color:#ccffcc;"
{{!}}colspan="5" align="left"{{!}}'''パーティクルの動き'''
{{!}}colspan="5" align="left"{{!}}'''パーティクルの動作'''
{{!}}-
{{!}}colspan="2"{{!}}PSYS_SRC_ACCEL
{{!!}}{{LSLG/ja|vector}}
{{!!}}各パーティクルが放出される際、それに適用される方向加速度ベクトルを指定します。(単位: メートル/秒。) [[Viewer coordinate frames/ja#Region|リージョン]]座標の各軸について 0.0 ~ 100.0 を有効な値として指定できます。
{{!}}align="center"{{!}}8
{{!}}-
{{!}}-
{{!}}colspan="2"{{!}}PSYS_SRC_ACCEL{{!}}{{!}}{{LSLG|vector/ja|vector}}{{!}}{{!}}放散された各パーティクルに当てはめられる方向加速度のvectorを、メートル毎秒で指定します。有効な値は、[[Viewer coordinate frames#Region|リージョン]]構成上の各方角で0.0~100.0です。{{!}}{{!}}align="center"{{!}}8
{{!}}colspan="2"{{!}}PSYS_SRC_OMEGA
{{!!}}{{LSLG/ja|vector}}
{{!!}}放出器の各軸に関する回転速度を指定します。(単位: ラジアン/秒。) この値を設定するとプリムの Z 軸の正方向に向いていた放出器は "解放" され、めざましい回転を表現します。({{LSLG/ja|llTargetOmega}} 関数による) プリムの回転は、放出器の回転に影響しません。([[#警告|警告 2]])
{{!}}align="center"{{!}}21
{{!}}-
{{!}}-
{{!}}colspan="2"{{!}}PSYS_SRC_OMEGA{{!}}{{!}}{{LSLG|vector/ja|vector}}{{!}}{{!}}各軸に沿って秒毎ラジアンでのエミッターの回転を指定します。これはプリムの有効なZ軸からエミッターの面を引き離し、表現する方向で目立たせます。プリムの回転({{LSLG|llTargetOmega/ja|llTargetOmega}}参照)はエミッター回転上では働きません。([[#Caveats|caveat 3]]){{!}}{{!}}align="center"{{!}}21
{{!}}colspan="2"{{!}}PSYS_SRC_BURST_SPEED_MIN
{{!!}}{{LSLG/ja|float}}
{{!!}}各パーティクルの初速の最小値を設定します。(単位: メートル/秒。) パーティクルが出現する際の初速は、これで指定される範囲からランダムに選ばれます。このパラメタおよび PSYS_SRC_BURST_SPEED_MAX の値は内部的に並び替えられ、このパラメタには小さいほうが割り当てられます。
{{!}}align="center"{{!}}17
{{!}}-
{{!}}-
{{!}}colspan="2"{{!}}PSYS_SRC_BURST_SPEED_MIN{{!}}{{!}}{{LSLG|float/ja|float}}{{!}}{{!}}メートル毎秒で各パーティクル発散時に選択される発散速度の、ランダムな範囲の最小値を指定します。 このパラメータの値とPSYS_SRC_BURST_SPEED_MAXは、この2つの値で小さいほうを取得するように内部で再実行されることに注意しましょう。{{!}}{{!}}align="center"{{!}}17
{{!}}colspan="2"{{!}}PSYS_SRC_BURST_SPEED_MAX
{{!!}}{{LSLG/ja|float}}
{{!!}}各パーティクルの初速の最大値を設定します。(単位: メートル/秒。) パーティクルが出現する際の初速は、これで指定される範囲からランダムに選ばれます。このパラメタおよび PSYS_SRC_BURST_SPEED_MIN の値は内部的に並び替えられ、このパラメタには大きいほうが割り当てられます。
{{!}}align="center"{{!}}18
{{!}}-
{{!}}-
{{!}}colspan="2"{{!}}PSYS_SRC_BURST_SPEED_MAX{{!}}{{!}}{{LSLG|float/ja|float}}{{!}}{{!}}メートル毎秒で各パーティクル発散時に選択される発射速度の、ランダムな範囲の最大値を指定します。このバラメータの値とPSYS_SRC_BURST_SPEED_MINは、この2つの値で大きいほうを取得するように内部で再実行されることに注意しましょう。{{!}}{{!}}align="center"{{!}}18
{{!}} style="font-size:80%" colspan="5" {{!}} LL_PART_* 定数は {{SourceLink|indra/llmessage/llpartdata.h|rev=1681|line=99}} にだけ現れ、それらのうち<span style="color:darkred;">赤</span>で示したフラグはコメントアウトされています。
{{!}}}
{{!}}}
|deepnotes=
===欠けている 14===
14 という値を持つはずだった欠番の定数があり、基本的な列挙型 {{SourceLink|indra/llmessage/llpartdata.h|rev=1681|line=51|text=LLPSScriptFlags}} がそれを {{SourceLink|indra/llmessage/llpartdata.h|rev=1681|line=70|text=LLPS_SRC_BURST_DURATION}} という識別子で持っていますが、クライアントのソースで全く使われていません。炸裂持続時間が PSYS_SRC_BURST_PART_COUNT と PSYS_SRC_BURST_RATE で決まることを考えれば、これは当然です。
|cat1=Effects
|cat1=Effects
|cat2=Light
|cat2=Light
|cat3=Particles
|cat3=Particles
|cat4=Prim
|cat4=Prim
|cat5=Stop
|cat6
|location=
}}
}}

Revision as of 06:10, 7 June 2009

要約

関数: llParticleSystem( list rules );

rules のリスト内容に従って、スクリプトが入っているプリムのパーティクル構成を定義します。

• list rules パーティクル構成ルールの一覧を [ rule1, data1, rule2, data2 . . . rulen, datan ] という形式にしたもの。

仕様

スクリプトが入っているプリムパーティクル放出器 (particle emitter) の状態を設定する、パーティクル構成 (particle system) を定義します。同じプリムにある他のスクリプトも、この同じパーティクル放出器の状態を変更できます。従って、この関数で定義されるパーティクル構成はプリムの属性であり、その点で (プリムの) サイズ、形状、色などと同様です。 各プリムは、ただ 1個 のパーティクル放出器を持ちます。その位置はプリムの 幾何学中心 です。その方向はプリムのローカルな Z 軸に沿っており、正の Z 軸方向を向いています。

この関数だけが、プリムのパーティクル放出器の状態を変更できます。従って、放出器を別な状態に変えたい (例えば、全く別のパーティクル構成で放出したい、あるいは放出を完全に停止したい) 場合、新しく設定したいパーティクル構成のパラメタで、この関数を再度呼び出してください。llParticleSystem([]); という具合に空のリストを指定すると、放出器を停止します。

パーティクルは本質的に平面の "スプライト" であり、常にビューアのカメラに正対して描画されます。

ルール/データの値は以下のように定義されます。

ルール/設定値の定数 説明
パーティクル構成のふるまい
PSYS_PART_FLAGS integer パーティクルの振る舞いを制御する様々なフラグ。設定値は 10 進数形式か 16 進数形式の整数で指定するか、以下の 1 個以上のフラグ定数の ビット単位 OR を ("|" 演算子を用いて) 指定します: 0


PSYS_PART_BOUNCE_MASK 設定すると、放出器のリージョン Z 座標平面で跳ね返されるようになります。跳ね返る際、各パーティクルの速度と角度が反転します。これはその平面の上から落下してくるパーティクルにのみ作用します。 0x004
PSYS_PART_EMISSIVE_MASK 設定すると、パーティクルが明るさ全開になり、環境光 (太陽光) の影響を受けなくなります。設定しない場合、パーティクルはその時の環境光の状態に応じて照らされます。この設定は非放出タイプのパーティクルにも効果があります。 0x100
PSYS_PART_FOLLOW_SRC_MASK 設定すると、パーティクルは放出器との位置関係を保ちながら移動します。(訳注: 放出器が移動すると、パーティクルもそれに同調して移動する。) 設定しない場合、パーティクルの位置と動きは、放出器の位置と動きに影響されません。このフラグは PSYS_SRC_BURST_RADIUS ルールを無効化します。 0x010
PSYS_PART_FOLLOW_VELOCITY_MASK 設定すると、パーティクルはその上端を進行方向/放出方向へ向けます。設定しない場合、パーティクルはその時点の放出器の傾きをもとにして放出されます。 0x020
PSYS_PART_INTERP_COLOR_MASK 設定すると、パーティクルの色と透明度の設定が、表示開始から消滅までの間で変化します。変化では滑らかな補間が行なわれます。 0x001
PSYS_PART_INTERP_SCALE_MASK 設定すると、パーティクルのサイズ/倍率の設定が、表示開始から消滅までの間で変化します。 0x002
PSYS_PART_TARGET_LINEAR_MASK 設定すると、放出されたパーティクルは PSYS_SRC_TARGET_KEY ルールで指定された目標へ直線的に移動します。このモードでは PSYS_SRC_ACCEL、PSYS_SRC_BURST_RADIUS、および場合によっては他のルールが無視されます。 0x080
PSYS_PART_TARGET_POS_MASK 設定すると、放出されたパーティクルは消滅するまでの間、PSYS_SRC_TARGET_KEY ルールで指定された目標へ向かって移動するように、表示中に進行方向を変えます。目標が指定されなかった場合、あるいは目標が範囲から外れた場合、あるいは不正な目標が指定された場合、パーティクルは自身のプリムを目標とします。 0x040
PSYS_PART_WIND_MASK 指定された場合、パーティクルの移動はによって影響を受けます。風はパーティクルに作用する二番目の力として適用されます。 0x008
PSYS_PART_BEAM_MASK (未実装) enum 値として存在しているだけです。 0x200
LL_PART_HUD HUD および rez されたオブジェクトのパーティクル発生源を区別するためビューアによって使われます。 0x40000000
LL_PART_DEAD_MASK パーティクルを削除します。どの PSYS_PART_*_MASK とも互換性がありません。 0x80000000
LL_PART_RANDOM_ACCEL_MASK (未実装 & コメントアウト) パーティクルにランダムな強弱を適用するために使われるようです。 -
LL_PART_RANDOM_VEL_MASK (未実装 & コメントアウト) パーティクル放出時にランダムな速度を指定するために使われるようです。 -
LL_PART_TRAIL_MASK (未実装 & コメントアウト) 短いパーティクルを追加放出して "軌跡" を実現するために使われるようです。 -
パーティクル構成のみばえ
PSYS_SRC_PATTERN integer 全体的な放出パターンを指定します。 9


PSYS_SRC_PATTERN_ANGLE パーティクルを平面的な円の範囲に表示します。表示範囲は PSYS_SRC_ANGLE_BEGIN と PSYS_SRC_ANGLE_END で定義されます。表示範囲となる平面の向きは、放出器のリージョン座標の傾きにおいて X=0 となる向きです。 0x04
PSYS_SRC_PATTERN_ANGLE_CONE パーティクルを球状の範囲に表示します。表示範囲は PSYS_SRC_ANGLE_BEGIN と PSYS_SRC_ANGLE_END で定義されます。 0x08
PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY (未実装) パーティクルを球状の範囲に表示します。表示範囲は PSYS_SRC_ANGLE_BEGIN と PSYS_SRC_ANGLE_END で定義されますが、ANGLE_CONE のパターンとは逆に解釈されます。(すなわち ANGLE_CONE でパーティクルが表示されない範囲ができたら、同じ設定値の場合 ANGLE_CONE_EMPTY ならば逆にそこにパーティクルが表示される。逆も同様。) 0x10
PSYS_SRC_PATTERN_DROP パーティクルが放出器の位置から力を加えず落下するように表示します。PSYS_SRC_BURST_RADIUS、PSYS_SRC_BURST_SPEED_MIN、PSYS_SRC_BURST_SPEED_MAX ルールを無視します。 0x01
PSYS_SRC_PATTERN_EXPLODE パーティクルを全方向へ打ち出すように表示します。burst 動作のルールに従います。 0x02
PSYS_SRC_BURST_RADIUS float パーティクルの発生範囲を放出器からの距離で指定します。このルールは PSYS_PART_FOLLOW_SRC_MASK フラグが指定されると無視されます。http://forums.secondlife.com/showthread.php?t=226722 でのテストによると最大値は 50.00 です。 16
PSYS_SRC_ANGLE_BEGIN float パーティクルが放出されない範囲を指定します。範囲となる円/円錐のくぼみ/突出部分 (放出器の表面が起点) の角度を 1/2 したものをラジアンで指定します。有効な値は PSYS_SRC_ANGLE_END のそれと同じですが、意味は逆です。放出パターンが PSYS_SRC_PATTERN_ANGLE の場合、平面の円の範囲を表現します。PSYS_SRC_PATTERN_ANGLE_CONE あるいは PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY の場合、立体の球の範囲を表現します。このパラメタおよび PSYS_SRC_ANGLE_END の値は内部的に並び替えられ、このパラメタには小さいほうが割り当てられます。 22
PSYS_SRC_ANGLE_END float パーティクルが放出されない範囲を指定します。範囲となる円/円錐のくぼみ/突出部分 (放出器の表面が起点) の角度を 1/2 したものをラジアンで指定します。有効な値は 0.0~PI です。0.0 の場合、放出器が向いている方向へ一直線にパーティクルを放出します。PI の場合、PSYS_SRC_ANGLE_BEGIN で定義されるくぼみ/突出部分を除いた全方向へ、放出器からパーティクルを放出します。放出パターンが PSYS_SRC_PATTERN_ANGLE の場合、平面の円の範囲を表現します。PSYS_SRC_PATTERN_ANGLE_CONE あるいは PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY の場合、立体の球の範囲を表現します。このパラメタおよび PSYS_SRC_ANGLE_BEGIN の値は内部的に並び替えられ、このパラメタには大きいほうが割り当てられます。 23
PSYS_SRC_INNERANGLE float 非推奨: 代わりに PSYS_SRC_ANGLE_BEGIN を使ってください 後継のルール (PSYS_SRC_ANGLE_BEGIN) と同様に動作しますが、放出器の中心でなく表面が範囲の基準になる点が異なります。 10
PSYS_SRC_OUTERANGLE float 非推奨: 代わりに PSYS_SRC_ANGLE_END を使ってください 後継のルール (PSYS_SRC_ANGLE_END) と同様に動作しますが、放出器の中心でなく表面が範囲の基準になる点が異なります。 11
PSYS_SRC_TARGET_KEY key 移動目標となるオブジェクト、プリム、アバターの UUID を指定します。それに向かってパーティクルは進路を変え、移動してゆきます。表示持続時間が尽きる時にちょうど目標の幾何学中心に到達するよう調整されます。PSYS_PART_TARGET_POS_MASK フラグが設定されていなければなりません。警告 3 20
パーティクルの外観
PSYS_PART_START_COLOR vector パーティクル出現時のを表現した vector 値。 1
PSYS_PART_END_COLOR vector パーティクルが表示持続時間を経過して消滅する時のを表現した vector 値。PSYS_PART_INTERP_COLOR_MASK フラグが設定された時だけ使われます。 3
PSYS_PART_START_ALPHA float パーティクル出現時の透明度を指定します。有効な値の範囲は 0.0 ~ 1.0 です。値が小さいほど透明に、大きいほど不透明になります。 2
PSYS_PART_END_ALPHA float パーティクルが表示持続時間を経過して消滅する時の透明度を指定します。PSYS_PART_INTERP_COLOR_MASK フラグが設定された時だけ使われます。有効な値は PSYS_PART_START_ALPHA と同じです。 4
PSYS_PART_START_SCALE vector パーティクルが出現する時のサイズを指定します。(単位: メートル。) 有効な値は各軸とも 0.04 (0.03125) ~ 4.0 です。パーティクルは本質的に平面のスプライトなので、vector 値の Z 軸要素は無視され 0.0 になります。 5
PSYS_PART_END_SCALE vector パーティクルが表示持続時間を経過して消滅する時のサイズを指定します。PSYS_PART_INTERP_SCALE_MASK フラグが設定された時だけ使われます。有効な値は PSYS_PART_START_SCALE と同じです。 6
PSYS_SRC_TEXTURE string 各パーティクルで使用するテクスチャを指定します。プリムのインベントリ内にあるならばテクスチャ名を、インベントリ内に無いならばテクスチャの UUID で指定もできます。 12
パーティクルの放出
PSYS_SRC_MAX_AGE float 放出器の放出持続時間を指定します。(単位: 秒。) (既にパーティクル構成が設定済みならば) 視界に入った時点からの、あるいは (既に視界に入っているならば) この関数が実行された時点からの時間となります。指定時間が過ぎると、上記の条件に合致しない限り、パーティクルは放出されなくなります。ゼロを指定するとパーティクルは無期限に放出されます。(警告 1) 19
PSYS_PART_MAX_AGE float 各パーティクルの表示持続時間を指定します。(単位: 秒。) 最大値は 30.0 です。パーティクルは出現した後、この時間をかけて、他のルールで指定されたパラメタに応じて外観を変えつつ移動し、消滅します。 7
PSYS_SRC_BURST_RATE float 放出されるパーティクルの "炸裂" (burst) 間隔を指定します。(単位: 秒。) 0.0 を指定すると、ビューアが可能な限り高速にパーティクルを放出します。 13
PSYS_SRC_BURST_PART_COUNT integer 一度の "炸裂" で放出されるパーティクルの数を指定します。 15
パーティクルの動作
PSYS_SRC_ACCEL vector 各パーティクルが放出される際、それに適用される方向加速度ベクトルを指定します。(単位: メートル/秒。) リージョン座標の各軸について 0.0 ~ 100.0 を有効な値として指定できます。 8
PSYS_SRC_OMEGA vector 放出器の各軸に関する回転速度を指定します。(単位: ラジアン/秒。) この値を設定するとプリムの Z 軸の正方向に向いていた放出器は "解放" され、めざましい回転を表現します。(llTargetOmega 関数による) プリムの回転は、放出器の回転に影響しません。(警告 2) 21
PSYS_SRC_BURST_SPEED_MIN float 各パーティクルの初速の最小値を設定します。(単位: メートル/秒。) パーティクルが出現する際の初速は、これで指定される範囲からランダムに選ばれます。このパラメタおよび PSYS_SRC_BURST_SPEED_MAX の値は内部的に並び替えられ、このパラメタには小さいほうが割り当てられます。 17
PSYS_SRC_BURST_SPEED_MAX float 各パーティクルの初速の最大値を設定します。(単位: メートル/秒。) パーティクルが出現する際の初速は、これで指定される範囲からランダムに選ばれます。このパラメタおよび PSYS_SRC_BURST_SPEED_MIN の値は内部的に並び替えられ、このパラメタには大きいほうが割り当てられます。 18
LL_PART_* 定数は viewer - indra/llmessage/llpartdata.h にだけ現れ、それらのうちで示したフラグはコメントアウトされています。

警告

  1. PSYS_SRC_MAX_AGE で放出期間をゼロ以外に指定したパーティクル構成を使う際、スクリプト側で何もしていないのに (もう停止している) パーティクルが再開してしまう場合があります。これはプリムの何らかの属性が更新された、あるいはビューアに何かが作用したかが原因で、放出器が "リセット" されるバグの為です。結果的に、timer 関数か強制的な sleep を使い、指定時間が過ぎたらパーティクル構成をクリアする必要があるかもしれません。Debbie Trilling がこの対処法について述べています: http://forums.secondlife.com/showpost.php?p=1996465&postcount=6
  2. PSYS_SRC_OMEGA で定義される回転の相対基準となるのはリージョン座標系であり、プリムのローカル座標系ではありません。
  3. PSYS_SRC_TARGET_KEY ルールと PSYS_PART_TARGET_POS_MASK フラグによってアバターに向け放出されるパーティクルは、そのアバターを取り囲む直方体の幾何学中心まで行って消滅します。不幸なことに、これは股間を直撃するように見えてしまいます。アバターの別の部位を目標にしたい場合は、そこに目標となるプリムを置いてください。そしてそのプリムの UUID を PSYS_SRC_TARGET_KEY ルールの値に指定してください。
  4. Second Life ビューアは、小さすぎて殆ど見えない遠くのオブジェクトを間引いて描画するという最適化をしています。放出器が非常に小さくまた遠いため間引かれてしまう場合、それに設定されたパーティクルもまた描画されないでしょう。
All Issues ~ Search JIRA for related Bugs

サンプル


次第に大きくなる赤玉を次々に放出します。 <lsl>llParticleSystem( [

PSYS_PART_FLAGS, PSYS_PART_WIND_MASK

便利なスニペット

色と透明度を integer 値として管理するのに便利な関数:
<lsl>integer ColorAlphatoRGBA(vector color, float alpha) {

   return (((integer)(alpha   * 255.0) & 0xFF) << 24)

注意点

  • ビューアが表示するパーティクル個数の標準は、通常 4096 に設定されています。これは視野にある全ての稼動中パーティクル構成に関して、ビューアが描画できる最大パーティクル数です。人々に "スパム" を行なわない、他人のパーティクル (が使うべきリソース) を圧迫しないためにも、良いパーティクル構成の設計が必要です。例えば、もしあなたのパーティクル放出器が期待するほどには多くの放出をしていないという場合、このリソース不足の犠牲者にされているかもしれません。パーティクルはどちらかというと描画の優先度が低いので、クライアント/ビューアのラグ (低フレームレート) も同様の問題を起こします。解決策として、自分のパーティクル構成を設計しテストする際には、比較的他から影響を受けない、ラグの少ない場所で行なうことです。
  • パーティクルが放出された後の進行方向は PSYS_SRC_ACCEL、PSYS_PART_TARGET_POS_MASK フラグ、PSYS_PART_FOLLOW_SRC_MASK フラグによってのみ制御されます。例えば "渦を巻く竜巻" の効果 (オブジェクトが喋る時、撤去される時、アバターが SIM/グリッドを立ち去る時にビューアで使われるような効果) を作成する良い方法というものはありません。その効果は、パーティクルの発生源を動かすことで実現可能です。(例えば旋回スクリプトで。)

関連項目

記事

•  LSL での色
•  透明度

特記事項

欠けている 14

14 という値を持つはずだった欠番の定数があり、基本的な列挙型 LLPSScriptFlags がそれを LLPS_SRC_BURST_DURATION という識別子で持っていますが、クライアントのソースで全く使われていません。炸裂持続時間が PSYS_SRC_BURST_PART_COUNT と PSYS_SRC_BURST_RATE で決まることを考えれば、これは当然です。

Search JIRA for related Issues

Signature

function void llParticleSystem( list rules );
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。