LlParticleSystem/fr
LSL Portail Francophone | LSL Portail Anglophone | Fonctions | Évènements | Types | Operateurs | Constantes | Contrôle d'exécution | Bibliothèque | Tutoriels |
Description
Fonction: llParticleSystem( list règles );229 | N° de fonction |
0.0 | Delais |
10.0 | Energie |
Définit un effet de particules pour la prim contenant le script sur la base des règles passées en argument.
• list | règles | – | Les effets de particules sont gérés à l'aide d'une série de règles communiquées dans une liste au format [règle-1, donnée-1, règle-2, donnée-2 . . . règle-n, donnée-n ] |
Spécifications
Cette fonction permet de configurer un système de particules qui paramètre la source de particules de la prim contenant le script. Tout autre script faisant appel à une source de particules modifiera la même source. Par conséquent, le système de particules est une propriété de la prim, comme la forme, la taille ou la couleur. Chaque prim a un seule source localisée à son centre géométrique et alignée le long de l’axe Z relatif à la prim et pointant dans la direction de cet axe.
Il s’agit de l’unique fonction capable de changer les données de la source de particules d’une prim. Pour changer l’état de cette source (par exemple émettre de nouvelles particules ou simplement l’éteindre), il suffit d’appeler cette fonction avec les paramètres adéquats. Lancer la fonction avec une liste vide, éteint la source( llParticleSystem([]); ).
Les particules sont principalement des “sprites” 2D et sont toujours générés de face (donc face à la caméra des résidents)
Les règles et leurs paramètres sont définis plus bas.
Paramètres & Constantes | Type | Description | Value | |
Comportement du système de particules | ||||
PSYS_PART_FLAGS | integer | Différents codes permettent de piloter le comportement du système. Ces données sont codées sous forme décimale (integer) ou hexadécimale et sont combinées entre elles à l’aide de l’opérateur ‘|’ (‘OU’) . Les constantes possibles sont listées ci-dessous.: | 0 | |
V a l e u r s |
PSYS_PART_BOUNCE_MASK | Avec cette constante, les particules rebondiront sur le plan qui passe par la source et qui est perpendiculaire à l'axe z de celle-ci dans le référenciel de la région. Lors d’un rebond, la particule inversera sa vitesse et son angle. Ce réglage ne marche que pour les particules ‘tombant’ sur le plan (donc situées au dessus). | 0x004 | |
PSYS_PART_EMISSIVE_MASK | Avec cette constante, les particules sont en mode « pleine lumière » (full-bright) et ne sont pas influencées par les conditions d’éclairage extérieur (lumière du soleil). Dans le cas contraire, les particules sont illuminées en fonction des conditions globales d’éclairage. A noter que les sources de lumière illuminent les prims qui n'émettent pas de particules | 0x100 | ||
PSYS_PART_FOLLOW_SRC_MASK | Avec cette constante, les particules se déplacent tout en suivant le ou les mouvement(s) de leur source. Dans le cas contraire, les particules ne sont pas affectées par la position et le mouvement de leur source. Ce code désactive le paramètre PSYS_SRC_BURST_RADIUS. | 0x010 | ||
PSYS_PART_FOLLOW_VELOCITY_MASK | Cette constante fait pivoter les particules (de forme allongée) afin qu’elles orientent leur ‘tête’ (partie avant) dans la direction du mouvement ou de l’émission. Dans le cas contraire, les particules sont émises en fonction de la rotation de leur source au moment de l’émission. | 0x020 | ||
PSYS_PART_INTERP_COLOR_MASK | Avec cette constante, le système effectue une interpolation de la couleur et de la transparence des particules à partir de leurs paramètres de départ et de leurs paramètres d’arrivée. | 0x001 | ||
PSYS_PART_INTERP_SCALE_MASK | Avec cette constante, le système effectue une interpolation de la taille (échelle) des particules à partir de leurs paramètres de départ et de leurs paramètres d’arrivée. | 0x002 | ||
PSYS_PART_TARGET_LINEAR_MASK | (Constante non documentée officiellement) Quand cette constante est utilisée, les particules émises se déplacent en ligne droite en direction de la cible désignée par le paramètre PSYS_SRC_TARGET_KEY. Dans ce mode, les paramètres PSYS_SRC_ACCEL, PSYS_SRC_BURST_RADIUS et potentiellement d’autres paramètres sont ignorés. | 0x080 | ||
PSYS_PART_TARGET_POS_MASK | Quand cette constante est utilisée, la course des particules est modifiée de façon à les faire s’orienter vers la cible désignée par PSYS_SRC_TARGET_KEY. A noter que si aucune cible n’est désignée, si la cible est trop éloignée ou si la cible est invalide, les particules prennent pour cible la prim elle-même. | 0x040 | ||
PSYS_PART_WIND_MASK | Quand cette constante est utilisée, le mouvement des particules est affecté par le vent qui applique une seconde force sur les particules. | 0x008 | ||
(non implémenté) mais présent dans les listes des constantes | 0x200 | |||
Cette constante enlève les particules incompatibles avec les autres masques PSYS_PART_*_MASK | 0x80000000 | |||
(non implémenté) On suppose que cette constante devait permettre d’appliquer des accélérations aléatoires aux particules. | - | |||
(non implémentée) On suppose que cette constante devait permettre d’appliquer des vitesses aléatoires aux particules. | - | |||
(non implémenté) On suppose que cette constante devait permettre de créer des traînées derrière les particules. | - | |||
Rendu général | ||||
PSYS_SRC_PATTERN | integer | Paramètre le rendu général. | 9 | |
V a l e u r s |
PSYS_SRC_PATTERN_ANGLE | Avec cette constante, les particules sont générées dans une zone circulaire en 2 dimensions dont les sections sont définies par les paramètres PSYS_SRC_ANGLE_BEGIN et PSYS_SRC_ANGLE_END. Le plan de génération des particules correspond à au plan X=0 dans un référenciel relatif à la rotation de la source dans la région. | 0x04 | |
PSYS_SRC_PATTERN_ANGLE_CONE | Avec cette constante, les particules sont générées dans une zone sphérique (3D) dont les sections sont définies par les paramètres PSYS_SRC_ANGLE_BEGIN et PSYS_SRC_ANGLE_END. | 0x08 | ||
PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY | (non officiellement documenté et ne semble pas opérationnel) Avec cette constante, les particules sont générées dans une zone sphérique 3D dont les sections sont définies par les paramètres PSYS_SRC_ANGLE_BEGIN et PSYS_SRC_ANGLE_END, mais inversement aux données indiquées par le paramètre ANGLE_CONE (la ou il y aurait du y avoir des particules, il n’y a rien et vice et versa (pas de particules dans ANGLE_CONE et avec particules dans ANGLE_CONE_EMPTY). | 0x10 | ||
PSYS_SRC_PATTERN_DROP | Avec cette constante, les particules sont générées sans force (et donc sans mouvement) à partir de leur point d'émission. Le système de particule ignore les paramètres PSYS_SRC_BURST_RADIUS, PSYS_SRC_BURST_SPEED_MIN et PSYS_SRC_BURST_SPEED_MAX. | 0x01 | ||
PSYS_SRC_PATTERN_EXPLODE | Avec cette constante, les particules sont générées dans toutes les directions (selon les paramètres d’explosion). | 0x02 | ||
PSYS_SRC_BURST_RADIUS | float | Permet d’indiquer à quelle distance de la source les particules seront crées. Ce paramètres est ignoré quand la constante PSYS_PART_FOLLOW_SRC_MASK est active. Un test signalé dans le forum [1] indique que la valeur maximale serait de 50.00 | 16 | |
PSYS_SRC_ANGLE_BEGIN | float | Fonctionne comme le début de "Début et fin du creux" d'une sphère (primitive) avec une rotation de Y à 270. Permet de déterminer en radian: un angle, dans une forme circulaire(2D), ou un cône dans une forme sphérique (3D) à l’intérieur duquel les particules ne seront pas émises. Si la constante de modèle appliqué est PSYS_SRC_PATTERN_ANGLE, le rendu sera une section circulaire (2D). Dans le cas des modèles PSYS_SRC_PATTERN_ANGLE_CONE ou PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY, le rendu sera une section sphérique (3D). Ce paramètre a les mêmes valeurs possibles que PSYS_SRC_ANGLE_END (de 0.0 à PI) mais sa valeur assignée sera réajustée automatiquement avec celle de PSYS_SRC_ANGLE_END de façon à ce qu'elle soit la plus petite des deux. | 22 | |
PSYS_SRC_ANGLE_END | float | Fonctionne comme la fin de "Début et fin du creux" d'une sphère (primitive) avec une rotation de Y à 270. Permet de déterminer en radian: un angle, dans une forme circulaire(2D), ou un cône dans une forme sphérique (3D) à l’intérieur duquel les particules ne seront pas émises. Si la constante de modèle appliqué est PSYS_SRC_PATTERN_ANGLE, le rendu sera une section circulaire (2D). Dans le cas des modèles PSYS_SRC_PATTERN_ANGLE_CONE ou PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY, le rendu sera une section sphérique (3D). Ce paramètre a les mêmes valeurs possibles que PSYS_SRC_ANGLE_BEGIN (de 0.0 à PI) mais sa valeur assignée sera réajustée automatiquement avec celle de PSYS_SRC_ANGLE_BEGIN de façon à ce qu'elle soit la plus grande des deux. | 23 | |
float | DESACTIVE : Utilisez PSYS_SRC_ANGLE_BEGIN à la place. Fonctionne comme les paramètres de substitution, sauf que les bords de section sont alignés sur les faces de la source et non sur le centre de la section. | 10 | ||
float | DESACTIVE: Utilisez PSYS_SRC_ANGLE_END à la place. Fonctionne comme les paramètres de substitution, sauf que les bords de section sont alignés sur les faces de la source et non sur le centre de la section. | 11 | ||
PSYS_SRC_TARGET_KEY | key | Permet d’indiquer la clé de la cible (objet, prim ou agent) vers laquelle la particule s’orientera. Les particules auront tendance à atteindre le centre géométrique à la fin de leur vie. Nécessite l’utilisation de la constante PSYS_PART_TARGET_POS_MASK. caveat 4 | 20 | |
Apparence des particules | ||||
PSYS_PART_START_COLOR | vector | Indique la couleur des particules lors de leur émission. | 1 | |
PSYS_PART_END_COLOR | vector | Indique la couleur des particules à la fin de leur vie. Ce paramètre n’est utilisé que si la constante PSYS_PART_INTERP_COLOR_MASK est active. | 3 | |
PSYS_PART_START_ALPHA | float | Indique la transparence des particules lors de leur émission. Les valeurs valides vont de 0.0 (transparent) à 1.0(opaque). | 2 | |
PSYS_PART_END_ALPHA | float | Indique la transparence des particules en fin de vie. Ce paramètre n’est utilisé que si la constante PSYS_PART_INTERP_COLOR_MASK est active. Les valeurs possibles sont les mêmes que celles de PSYS_PART_START_ALPHA. (caveat 1) | 4 | |
PSYS_PART_START_SCALE | vector | Indique l’échelle ou la taille des particules lors de leur émission. Les valeurs valides pour chaque direction vont de 0.04 (0.03125) à 4.0 mètres. Puisque les particules sont principalement des spites 2D, la composante z du vector peut être mise à 0.0. | 5 | |
PSYS_PART_END_SCALE | vector | Indique l’échelle ou la taille des particules en fin de vie. Ce paramètre n’est utilisé que si PSYS_PART_INTERP_SCALE_MASK est actif. Les valeurs possibles sont les mêmes que PSYS_PART_START_SCALE. | 6 | |
PSYS_SRC_TEXTURE | string | Indique le nom d’une texture présente dans l’inventaire de la prim (ou une UUID) à utiliser comme particules. | 12 | |
Particle Flow | ||||
PSYS_SRC_MAX_AGE | float | Indique la durée en secondes pendant lesquelles la source émet à partir du moment où elle entre dans le champ visuel du client. À la fin de cette durée, plus aucune particule ne sera émise. Une valeur nulle correspond à une durée infinie. (caveat 2) | 19 | |
PSYS_PART_MAX_AGE | float | Indique l’espérance de vie (en seconde) d’une particule émise (max 30.0 sec.). Durant cette période, la particule pourra bouger et ses paramètres évoluer. | 7 | |
PSYS_SRC_BURST_RATE | float | Indique l’intervalle de temps séparant deux explosions successives. La valeur 0.0 provoquera des explosions de particules aussi proches que possible par le client SL. | 13 | |
PSYS_SRC_BURST_PART_COUNT | integer | Indique le nombre de particule émises dans chaque explosion. | 15 | |
Déplacement de Particules' | ||||
PSYS_SRC_ACCEL | vector | Indique le vecteur d’accélération directionnelle appliqué aux particules à l’émission et pendant toute la durée de leur vie. Les valeurs possibles vont de 0.0 à 100.0 dans chacune des directions dans le référentiel de la région. | 8 | |
PSYS_SRC_OMEGA | vector | Indique la vitesse de rotation appliquée à la source (en radian / seconde) sur chaque axe. Cette option détache la source de l’axe Z (auquel elle faisait face), cet effet est particulièrement remarquable dans les émissions directionnelles. La rotation de la prim (via llTargetOmega) est sans effet sur la rotation de la source. (caveat 3) | 21 | |
PSYS_SRC_BURST_SPEED_MIN | float | A chaque explosion, les particules ont une vitesse initiale aléatoire comprise entre SPEED_MIN et SPEED_MAX en mètres/seconde. SPEED_MIN et SPEED_MAX sont comparés de façon à ce que SPEED_MIN représente bien la plus petite valeur des deux. | 17 | |
PSYS_SRC_BURST_SPEED_MAX | float | A chaque explosion, les particules ont une vitesse initiale aléatoire comprise entre SPEED_MIN et SPEED_MAX en mètres/seconde. SPEED_MIN et SPEED_MAX sont comparés de façon à ce que SPEED_MAX représente bien la plus grande valeur des deux. | 18 |
Avertissements
- Un bug ( VWR-2164) dans le système de particules fait que n’importe quelle modification de la transparence avec PSYS_PART_END_ALPHA et PSYS_PART_INTERP_COLOR_MASK ajoutera systématiquement' la valeur de PSYS_PART_END_ALPHA au résultat final.Ainsi, pour une transparence allant de 1 à 0.5, la transparence à mi parcours devrait être de 0.75. A cause de ce bug, elle est de 1.25. Il est donc impossible de faire disparaître progressivement des particules, y compris en jouant sur la valeur finale (modifier la transparence de 0 à 1, la modifiera en fait de 1 à 2.)
- Ce bug semble avoir été fixé dans WindLight (First Look test Viewer)
- Un bug provoque une réinitialisation intempèstive de la source de particules (effet non déclenché par un script). Ce bug concerne les sources avec une durée de vie de l'émission (PSYS_SRC_MAX_AGE) non nulle, la réinitialisation est provoquée lorsque qu’une propriété de la prim est changée ou envoyée au client SL. Vous pourriez être amené à utiliser un timer ou à mettre le script en pause afin de purger le système de particules une fois la durée de vie dépassée.
- La rotation définie par le paramètre PSYS_SRC_OMEGA est relative aux référenciel du client SL et non pas aux référenciel de la prim .
- Le déplacement de particules vers un avatar humanoïde paramétré avec PSYS_SRC_TARGET_KEY et PSYS_PART_TARGET_POS_MASK se termineront au centre géométrique de l’avatar, centre situé au niveau de l’aine (intersection bas ventre/cuisse). Si vous souhaitez changer le point d’arrivée sur la cible, il vous faudra utiliser comme cible une prim se déplaçant en direction de l’avatar et utiliser la clé de la prim avec le paramètre PSYS_SRC_TARGET_KEY.
- Le client de Second life optimise le rendu en supprimant les objets trop petits pour être vus à distance. Si votre source est trop petite et est supprimée car trop loin de vous, le système de particules associé sera supprimé également.
Exemples
Codes utiles
Quelques fonctions utiles pour enregistrer ou retrouver la correspondance entre les codes de couleur ou de transparence et leur valeur sous forme d’integers :
<lsl>
integer ColorAlphatoRGBA(vector color, float alpha) {
return (((integer)(alpha * 255.0) & 0xFF) << 24)
Notes
- Le nombre de particules visibles par défaut dans un client SL est de 4096. Ce décompte concerne L’ENSEMBLE des particules visibles à proximité de l’avatar (toutes sources confondues). La base d’un bon système de particules est d’éviter de trop encombrer les clients SL avec ses propres particules et de laisser les autres systèmes s’exécuter normalement. En conséquence, si vous rencontrez des difficultés à visualiser les particules de votre système de particules, il se peut que d’autres sources encombrent déjà votre client SL, le lag peut également provoquer ce genre de symptômes car les particules ont une priorité de rendu très basse. La meilleure solution consiste à aller dans une zone avec moins de lag et sans sources de particules où vous pourrez tester votre propre système de particules.
- Une fois les particules émises, leur déplacement peut être influencé par les paramètres PSYS_SRC_ACCEL ou les codes PSYS_PART_TARGET_POS_MASK ou PSYS_PART_FOLLOW_SRC_MASK. Mais il n’y a pas de bonne solution pour obtenir un effet de « vortex tournoyant » comme on peut en voir dans le client lorsqu’un objet est de-rezzé ou lorsqu’un avatar se téléporte.
Voir également
Articles
• | Les couleurs | |||
• | Transparence |