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 se pilote par 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}} | hexadecimal |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 un plan fixe correspondant à l’axe z de l’émetteur 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||align="center"|0x100 | |||
PSYS_PART_FOLLOW_SRC_MASK | Avec cette constante, les particules se déplacent en fonction de la position relative 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 afin qu’elles orientent leur ‘haut’ 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 | llWind|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 chutent à partir de leur point de génération. 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}} | Permet d’indiquer un demi angle, en radian, dans une forme circulaire (2D), sphérique (3D) ou conique (au départ de la source de particules) à l’intérieur de laquelle les particules ne seront pas émises. Ce paramètre a les mêmes valeurs possibles que PSYS_SRC_ANGLE_END (bien que leurs effets soient inversés). 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). A noter que la valeur de ce paramètre et celle de PSYS_SRC_ANGLE_END sont réordonnées de façon à ce que ce paramètre prenne la valeur la plus petite des deux. | 22 | |
PSYS_SRC_ANGLE_END | float}} | Permet d’indiquer un demi angle, en radian, dans une forme circulaire (2D), sphérique (3D) ou conique (au départ de la source de particules) à l’intérieur de laquelle les particules ne seront pas émises. Ce paramètre a les mêmes valeurs possibles que PSYS_SRC_ANGLE_END (bien que leurs effets soient inversés). 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). A noter que la valeur de ce paramètre et celle de PSYS_SRC_ANGLE_ BEGIN sont réordonnées de façon à ce que ce paramètre prenne la valeur la plus élevée 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}} | color|couleur}} des particules lors de leur émission. | 1 | |
PSYS_PART_END_COLOR | vector}} | color|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}} | alpha|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}} | scale|é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}} | scale|é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 nécessaires pour que la source commence à émettre (à partir du moment ou la source entre dans le champ visuel du client). A 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. Les valeurs possibles vont de 0.0 à 100.0 dans chacune des directions dans le référentiel de la région.||align="center"|8 | ||
PSYS_SRC_OMEGA | vector}} | llTargetOmega}}) est sans effet sur la rotation de la source. (caveat 3) | 21 | |
PSYS_SRC_BURST_SPEED_MIN | float}} | Indique la valeur minimale à utiliser comme vitesse initiale (mètre/sec) des particules dans chaque explosion. A noter que cette valeur est comparée avec le paramètre PSYS_SRC_BURST_SPEED_MAX de façon à ce que ce paramètre représente bien la plus petite valeur des deux. | 17 | |
PSYS_SRC_BURST_SPEED_MAX | float}} | Indique la valeur maximale à utiliser comme vitesse initiale (mètre/sec) des particules dans chaque explosion. A noter que cette valeur est comparée avec le paramètre PSYS_SRC_BURST_SPEED_MAX de façon à ce que ce paramètre représente bien la plus importante 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 |