Difference between revisions of "LlParticleSystem/ja"
Jump to navigation
Jump to search
[ rule1, data1, rule2, data2 . . . ルール、データ ]" style="border-bottom:1px dotted; cursor:help;">rules );
Asuka Neely (talk | contribs) (New page: {{multi-lang}}{{LSL Function/color/ja}}{{LSL Function/alpha/ja}}{{LSL_Function/ja |func_id=229|func_sleep=0.0|func_energy=10.0 |func=llParticleSystem |p1_type=list |p1_name=rules |p1_desc=...) |
Asuka Neely (talk | contribs) |
||
Line 58: | Line 58: | ||
|sort=ParticleSystem | |sort=ParticleSystem | ||
|notes= | |notes= | ||
* | * クライアントの標準のパーティクル総数は、4096が基本設定です。クライアントが視界範囲で全ての有効なパーティクルシステムを表現するであろう最大パーティクル総数です。優れたパーティクルシステムのデザインは、そのパーティクルが周囲の人に''邪魔になること''と他の人達のパーティクルシステムを''枯らしていく''こと、を避けるのがキーポイントです。そのようなものとして、そんな多くのパーティクルの分散で、あなたのパーティクルエミッターがトラブルに遭う経験をしているならば、パーティクルの枯れをさけることはできないかもしれません。クライアント/ビューアのラグ(小さいフレームレート)はこれらが原因でもまた発生する可能性があるので、パーティクルは表現するために少ない最適地を選びます。これの最善な解決策は、あなた自身がデザインとテストを行なうとき、他のパーティクルシステムが相対的に制限しない、少ないラグの環境で動かすことです。 | ||
* | * 一度パーティクルが分散されると、直接的な動きはPSYS_PART_TARGET_POS_MASKフラグかthe PSYS_PART_FOLLOW_SRC_MASKフラグの、PSYS_SRC_ACCELによってのみ影響され得ます。そのようになるので、旋回渦エフェクト(オブジェクトが発している方向にビューアを一度向けた、消滅しはじめ、またはアバターがsim/gridから去ったときのようなもの)を作る良い方法はありません。 | ||
|constants={{{!}} {{prettytable}} | |constants={{{!}} {{prettytable}} | ||
{{!}}{{Hl2}}{{!}} | {{!}}{{Hl2}}{{!}} |
Revision as of 19:05, 11 January 2008
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
要約
関数: llParticleSystem( list <span title="パーティクルシステムルール一覧のフォーマット[ rule1, data1, rule2, data2 . . . ルール、データ ]" style="border-bottom:1px dotted; cursor:help;">rules );
仕様
プリム内にあるスクリプトに含まれているパーティクルエミッターの状態を設定するパーティクルシステムを定義します。この関数を同じプリムにあるいずれか他のスクリプトが呼んでいる場合、同一のパーティクルエミッターの状態として修正するでしょう。 各プリムは幾何学中心を中心とした、ひとつのパーティクルエミッターのみ所有でき、 プリムの有効なZ方向に指向する、ローカルZ軸に沿って並びます。
この関数は、プリムのパーティクルエミッターの状態を更新するだけのものです。エミッターを異なる状態に変更したいなら(たとえば、異なるパーティクルシステム全体を分散させる、あるいはエミッターを完全にオフにする)、 代わりに描写したい新しいパーティクルシステムのパラメータでこの関数を呼ぶだけです。空のリストを指定するとエミッターはオフに切り替わります。
パーティクルは基本的に2Dのスプライトで、常にビューアのカメラ表面に描写されます。
ルール/データは以下に定義されます。
Rule / Value Constant | Type | Description | Value | |
System Behavior | ||||
PSYS_PART_FLAGS | integer}} | hexadecimal|hex}} format, or by ORing together (using the | operator) one or more of the following flag constants: | 0 | |
V a l u e s |
PSYS_PART_BOUNCE_MASK | When set, specifies particles will bounce off a plane at the region Z height of the emitter. On "bounce", each particle reverses velocity and angle. This only works for particles above the plane falling down on it. | 0x004 | |
PSYS_PART_EMISSIVE_MASK | When set, particles are full-bright and are unaffected by global lighting (sunlight). Otherwise, particles will be lit depending on the current global lighting conditions. Note that point lights do illuminate non-emissive particles. | 0x100 | ||
PSYS_PART_FOLLOW_SRC_MASK | When set, particles move relative to the position of the emitter. Otherwise, particle position and movement are unaffected by the position/movement of the emitter. This flag disables the PSYS_SRC_BURST_RADIUS rule. | 0x010 | ||
PSYS_PART_FOLLOW_VELOCITY_MASK | When set, particles rotate to orient their "top" towards the direction of movement or emission. Otherwise, particles are always emitted based on the current rotation of the emitter. | 0x020 | ||
PSYS_PART_INTERP_COLOR_MASK | When set, particle color and alpha transition from their START settings to their END settings during the particle's lifetime. The transition is a smooth interpolation. | 0x001 | ||
PSYS_PART_INTERP_SCALE_MASK | When set, particle size/scale transitions from its START setting to its END setting during the particle's lifetime. | 0x002 | ||
PSYS_PART_TARGET_LINEAR_MASK | (not officially documented) When set, emitted particles move in a straight line towards the target specified by the PSYS_SRC_TARGET_KEY rule. In this mode, PSYS_SRC_ACCEL, PSYS_SRC_BURST_RADIUS, and possibly other rules are ignored. | 0x080 | ||
PSYS_PART_TARGET_POS_MASK | When set, emitted particles change course during their lifetime, attempting to move towards the target specified by the PSYS_SRC_TARGET_KEY rule by the time they expire. Note that if no target is specified, the target moves out of range, or an invalid target is specified, the particles target the prim itself. | 0x040 | ||
PSYS_PART_WIND_MASK | llWind|wind}}. It is applied as a secondary force on the particles. | 0x008 | ||
(unimplemented) mask but in the enum | 0x200 | |||
Removes particles, not compatible with any other PSYS_PART_*_MASK | 0x80000000 | |||
(unimplemented) Presumed to be used to apply random acceleration to the particles. | - | |||
(unimplemented) Presumed to be used to specify random velocity for the particles upon emission. | - | |||
(unimplemented) Presumed to be used for implementing "trails" via emitting more particles at shorter bursts. | - | |||
System Presentation | ||||
PSYS_SRC_PATTERN | integer}} | Specifies the general emission pattern. | 9 | |
V a l u e s |
PSYS_SRC_PATTERN_ANGLE | Present particles in a 2-dimensional circular section as defined by PSYS_SRC_ANGLE_BEGIN and PSYS_SRC_ANGLE_END. The orientation of the particle plane is at X=0 relative to the emitter's region rotation. | 0x04 | |
PSYS_SRC_PATTERN_ANGLE_CONE | Present particles in a 3-dimensional spherical section, as defined by PSYS_SRC_ANGLE_BEGIN and PSYS_SRC_ANGLE_END. | 0x08 | ||
PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY | (not officially documented; appears to be non-functional) Present particles in a 3-dimensional spherical section, as defined by PSYS_SRC_ANGLE_BEGIN and PSYS_SRC_ANGLE_END, but inversely compared to the ANGLE_CONE pattern (i.e., where there were voids in ANGLE_CONE, there are particles in ANGLE_CONE_EMPTY, and vice-versa. | 0x10 | ||
PSYS_SRC_PATTERN_DROP | Present particles by dropping them at the emitter position with no force. Ignores the PSYS_SRC_BURST_RADIUS, PSYS_SRC_BURST_SPEED_MIN, and PSYS_SRC_BURST_SPEED_MAX rules. | 0x01 | ||
PSYS_SRC_PATTERN_EXPLODE | Present particles by shooting them out in all directions according to the burst motion rules. | 0x02 | ||
PSYS_SRC_BURST_RADIUS | float}} | Specifies the distance from the emitter where particles will be created. This rule is ignored when the PSYS_PART_FOLLOW_SRC_MASK flag is set. A test in http://forums.secondlife.com/showthread.php?t=226722 indicates that the maximum value is 50.00 | 16 | |
PSYS_SRC_ANGLE_BEGIN | 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 the same as for PSYS_SRC_ANGLE_END, though the effects are reversed accordingly. 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_END are internally re-ordered such that this parameter gets the smaller of the two values. | 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 | |
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 | ||
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 |
警告
- パーティクルシステム実行によるバグ(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にて修正されています。
- 0ではないエミッター効果時間(PSYS_SRC_MAX_AGE) の設定にてパーティクルシステムを使っているとき、パーティクルシステムで組まれたトリガがオフになることなく再起動するかもしれない、と伝えるほうがいいかもしれません。これはエミッターが幾つかのプリムの設定が更新もしくは他のビューアに送信するときにリセットするのが原因でバグが発生しているようです。結果的に、timerを使うか、著しい遅延と一度発生時間を消滅させてパーティクルシステムを消すべきかもしれません。
- PSYS_SRC_OMEGAで定義される回転は、リージョン座標システムに相対的で、プリムのローカル座標システムとは相対的ではありません。
- パーティクルは、PSYS_SRC_TARGET_KEYルールとPSYS_PART_TARGET_POS_MASKフラグで設定されている、指定された人型アバタに向かって動いていて、終点はアバターの矩形の幾何学中心、あいにくにも、アバタの股間部に直撃しているように表示されるでしょう。対象のアバタのほかの箇所を終点にしたい場合は、代わりに終点にしたい場所にした対象プリムを設置すべきで、PSYS_SRC_TARGET_KEYルールの値にそのプリムのキーを使用します。
- Second Life viewerは余りにも小さくみえる距離にあるオブジェクトは淘汰するように最適化されています。もしエミッターがとても小さいなら、距離のことがもとで最適化され、パーティクルシステムとそのエミッター間で表示されないでしょう。
サンプル
この例は光っている赤い球の効果を作成します。
<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 Wikiの関連した項目が参考になるかもしれません。