LlParticleSystem/ja

From Second Life Wiki
Jump to navigation Jump to search

要約

関数: llParticleSystem( list <span title="パーティクルシステムルール一覧のフォーマット
[ rule1, data1, rule2, data2 . . . ルール、データ ]" style="border-bottom:1px dotted; cursor:help;">rules
);

ルールの一覧が組まれているプリムを含んでいるパーティクルシステムを定義します。

• list rules パーティクルシステムルール一覧のフォーマット
[ rule1, data1, rule2, data2 . . . ルール、データ ]

仕様

プリム内にあるスクリプトに含まれているパーティクルエミッターの状態を設定するパーティクルシステムを定義します。この関数を同じプリムにあるいずれか他のスクリプトが呼んでいる場合、同一のパーティクルエミッターの状態として修正するでしょう。 各プリムは幾何学中心を中心とした、ひとつのパーティクルエミッターのみ所有でき、 プリムの有効なZ方向に指向する、ローカルZ軸に沿って並びます。

この関数は、プリムのパーティクルエミッターの状態を更新するだけのものです。エミッターを異なる状態に変更したいなら(たとえば、異なるパーティクルシステム全体を分散させる、あるいはエミッターを完全にオフにする)、 代わりに描写したい新しいパーティクルシステムのパラメータでこの関数を呼ぶだけです。空のリストを指定するとエミッターはオフに切り替わります。

パーティクルは基本的に2Dのスプライトで、常にビューアのカメラ表面に描写されます。

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

ルール / 定型値 説明
システムの動作
PSYS_PART_FLAGS integer}} hexadecimal|16進法}}、あるいは同時に一つ以上の、以下のフラグ定型(|演算子を用る)で指定されるかもしれません。 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 llWind/ja|風}}に影響されます。 パーティクル上で、補助的な効力として作用されます。 0x008
PSYS_PART_BEAM_MASK (未実装) 隠されていますが、リストにあります。 0x200
PSYS_PART_DEAD_MASK パーティクルを除去し、多くのほかのPSYS_PART_*_MASKとは両立しません。 0x80000000
PSYS_PART_RANDOM_ACCEL_MASK (未実装) パーティクルにランダムな加速率を適用するために用いられると推測されます。 -
PSYS_PART_RANDOM_VEL_MASK (未実装') パーティクルの分散上でランダムな重点を指定することに用いられると推測されます。 -
PSYS_PART_TRAIL_MASK (未実装) 一気に多くのパーティクルを分散させる源に痕跡を付与するために用いられると推測されます。 -
システムの表現
PSYS_SRC_PATTERN integer}} 基本的な分散パターンを指定します。 9
PSYS_SRC_PATTERN_ANGLE SYS_SRC_ANGLE_BEGINとPSYS_SRC_ANGLE_ENDによって定義される2次元循環部に存在するパーティクルです。 パーティクル面の方向は、エミッターのリージョンの回転と相対的にX=0です。 0x04
PSYS_SRC_PATTERN_ANGLE_CONE PSYS_SRC_ANGLE_BEGINとPSYS_SRC_ANGLE_ENDによって定義される3次元球状部に存在するパーティクルです。 0x08
PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY (非公式な追記:非関数として振舞います) PSYS_SRC_ANGLE_BEGIN PSYS_SRC_ANGLE_ENDによって定義される3次元球状部に存在するパーティクルですが、ANGLE_CON パターンと対義です。(すなわち、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 放出動作規則に一致している全方向に放散して存在するパーティクルです。 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}} 分散されないだろうパーティクルの、円状もしくは球状もしくは円錐状の(エミッター面から始まる)部分のラジアンの半分のアングルを指定します。エフェクトは一致しているのを反転されるのにも関わらず、有効な値は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つの値の小さいほうを取得するように内部で再実行されることに注意しましょう。 22
PSYS_SRC_ANGLE_END float}} Specifies a half angle, in radians, of a circular or spherical "dimple" or conic section (starting from the emitter facing) within which particles will NOT be emitted. Valid values are 0.0, which will result in particles being emitted in a straight line in the direction of the emitter facing, to PI, which will result in particles being emitted in a full circular or spherical arc around the emitter, not including the "dimple" or conic section defined by PSYS_SRC_ANGLE_BEGIN. If the pattern is PSYS_SRC_PATTERN_ANGLE, the presentation is a 2D flat circular section. If PSYS_SRC_PATTERN_ANGLE_CONE or PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY is used, the presentation is a 3D spherical section. Note that the value of this parameter and PSYS_SRC_ANGLE_BEGIN are internally re-ordered such that this parameter gets the larger of the two values. 23
PSYS_SRC_INNERANGLE float}} DEPRECATED: Use PSYS_SRC_ANGLE_BEGIN instead. Works similar to its replacement rule, except the edge of the section is aligned with the emitter facing, rather than its center. 10
PSYS_SRC_OUTERANGLE float}} DEPRECATED: Use PSYS_SRC_ANGLE_END instead. Works similar to its replacement rule, except the edge of the section is aligned with the emitter facing, rather than the section's center. 11
PSYS_SRC_TARGET_KEY key}} Specifies the key of a target object, prim, or agent towards which the particles will change course and move. They will attempt to end up at the geometric center of the target at the end of their lifetime. Requires the PSYS_PART_TARGET_POS_MASK flag be set. caveat 4 20
Particle Appearance
PSYS_PART_START_COLOR vector}} unit vector}} specifying the {{LSLG|color}} of the particles upon emission. 1
PSYS_PART_END_COLOR vector}} unit vector}} specifying the {{LSLG|color}} the particles transition to during their lifetime. Only used if the PSYS_PART_INTERP_COLOR_MASK flag is set. 3
PSYS_PART_START_ALPHA float}} alpha}} of the particles upon emission. Valid values are in the range 0.0 to 1.0. Higher values are more opaque; lower ones are more transparent. 2
PSYS_PART_END_ALPHA float}} alpha}} the particles transition to during their lifetime. Only used if the PSYS_PART_INTERP_COLOR_MASK flag is set. Valid values are the same as PSYS_PART_START_ALPHA. (caveat 1) 4
PSYS_PART_START_SCALE vector}} scale}} or size of the particles upon emission. Valid values for each direction are 0.04 (0.03125) to 4.0, in meters. Since particles are essentially 2D sprites, the Z component of the vector is ignored and can be set to 0.0. 5
PSYS_PART_END_SCALE vector}} scale}} or size the particles transition to during their lifetime. Only used if the PSYS_PART_INTERP_SCALE_MASK flag is set. Valid values are the same as PSYS_PART_START_SCALE. 6
PSYS_SRC_TEXTURE string}} Specifies the name of a texture in the prim's inventory to use for each particle. Alternatively, you may specify an asset key UUID for a texture. 12
Particle Flow
PSYS_SRC_MAX_AGE float}} Specifies the length of time, in seconds, that the emitter will operate upon coming into view range (if the particle system is already set) or upon execution of this function (if already in view range). Upon expiration, no more particles will be emitted, except as specified above. Zero will give the particle system an infinite duration. (caveat 2) 19
PSYS_PART_MAX_AGE float}} Specifies the lifetime of each particle emitted, in seconds. Maximum is 30.0 seconds. During this time, the particle will appear, change appearance and move according to the parameters specified in the other sections, and then disappear. 7
PSYS_SRC_BURST_RATE float}} Specifies the time interval, in seconds, between "bursts" of particles being emitted. Specifying a value of 0.0 will cause the emission of particles as fast as the viewer can do so. 13
PSYS_SRC_BURST_PART_COUNT integer}} Specifies the number of particles emitted in each "burst". 15
Particle Motion
PSYS_SRC_ACCEL vector}} Specifies a directional acceleration vector applied to each particle as it is emitted, in meters per second. Valid values are 0.0 to 100.0 for each direction, as region coordinates. 8
PSYS_SRC_OMEGA vector}} llTargetOmega}}) has no effect on emitter spin. (caveat 3) 21
PSYS_SRC_BURST_SPEED_MIN float}} Specifies the minimum value of a random range of values which is selected for each particle in a burst as its initial speed upon emission, in meters per second. Note that the value of this parameter and PSYS_SRC_BURST_SPEED_MAX are internally re-ordered such that this parameter gets the smaller of the two values. 17
PSYS_SRC_BURST_SPEED_MAX float}} Specifies the maximum value of a random range of values which is selected for each particle in a burst as its initial speed upon emission, in meters per second. Note that the value of this parameter and PSYS_SRC_BURST_SPEED_MIN are internally re-ordered such that this parameter gets the larger of the two values. 18

警告

  1. パーティクルシステム実行によるバグ(VWR-2146参照)のようで、、PSYS_PART_END_ALPHAとPSYS_PART_INTERP_COLOR_MASKフラグは、常に補正された結果としてPSYS_PART_END_ALPHAの値を加えるでしょう。そして1から初めて0.5進めるなら、パーティクルの効果時間の半分のとき0.75のアルファを期待します。1.25になろうとするとバグが発生します。結果的に、いつも加えられた後にこれの必要とする数値より高めに設定にするなどすれば、パーティクルが消滅しなくなります。
    • これは WindLight First Look test Viewerにて修正されています。
  2. 0ではないエミッター効果時間(PSYS_SRC_MAX_AGE) の設定にてパーティクルシステムを使っているとき、パーティクルシステムで組まれたトリガがオフになることなく再起動するかもしれない、と伝えるほうがいいかもしれません。これはエミッターが幾つかのプリムの設定が更新もしくは他のビューアに送信するときにリセットするのが原因でバグが発生しているようです。結果的に、timerを使うか、著しい遅延と一度発生時間を消滅させてパーティクルシステムを消すべきかもしれません。
  3. PSYS_SRC_OMEGAで定義される回転は、リージョン座標システムに相対的で、プリムのローカル座標システムとは相対的ではありません。
  4. パーティクルは、PSYS_SRC_TARGET_KEYルールとPSYS_PART_TARGET_POS_MASKフラグで設定されている、指定された人型アバタに向かって動いていて、終点はアバターの矩形の幾何学中心、あいにくにも、アバタの股間部に直撃しているように表示されるでしょう。対象のアバタのほかの箇所を終点にしたい場合は、代わりに終点にしたい場所にした対象プリムを設置すべきで、PSYS_SRC_TARGET_KEYルールの値にそのプリムのキーを使用します。
  5. Second Life viewerは余りにも小さくみえる距離にあるオブジェクトは淘汰するように最適化されています。もしエミッターがとても小さいなら、距離のことがもとで最適化され、パーティクルシステムとそのエミッター間で表示されないでしょう。
All Issues ~ Search JIRA for related Bugs

サンプル

Example Particle Script/ja


この例は光っている赤い球の効果を作成します。 <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_PART_TARGET_POS_MASKフラグかthe PSYS_PART_FOLLOW_SRC_MASKフラグの、PSYS_SRC_ACCELによってのみ影響され得ます。そのようになるので、旋回渦エフェクト(オブジェクトが発している方向にビューアを一度向けた、消滅しはじめ、またはアバターがsim/gridから去ったときのようなもの)を作る良い方法はありません。

関連項目

記事

•  LSL での色
•  透明度

特記事項

Search JIRA for related Issues

Signature

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