Accueil Date de création : 08/06/07 Dernière mise à jour : 28/01/10 21:47 / 17 articles publiés
 

Tutorial 10 Les Particles  posté le mercredi 04 juillet 2007 20:53

 

Je me suis intéressé aux Particles ces derniers jours. Je me suis demandé comment on créait tous ces effets particulièrement réalistes comme la fumée ou les feux d'artifice. Je suis tombé dans la documentation sur une seule fonction disponible avec un paramètre unique :

 

http://wiki.secondlife.com/wiki/LlParticleSystem

 

A la lecture de cette page on se dit que l'affaire n'est pas simple et qu'on est parti pour quelques heures de prise de tête, encore plus si l'anglais n'est pas vraiment une seconde nature, ce qui est mon cas. J'ai fait quelques essais, j'ai cherché des exemples. J'ai trouvé un peu de tout, avec deux axes principaux : soit une fonction à rallonge avec des variables à n'en plus finir qui alourdissent le script, ce qui est plutôt à éviter dans ce genre :

 

http://lslwiki.net/lslwiki/wakka.php?wakka=ExampleParticleScript

 

Soit une approche plus "à la demande" pour ceux qui savent déjà bien ce qu'ils veulent :

 

http://lslwiki.net/lslwiki/wakka.php?wakka=LibraryKeknehvParticles

 

Aucune de ces deux approches ne m'ont vraiment satisfait et je ne pense pas vraiment être le seul dans ce cas quand je lis les questions sur les particles dans les forums. Le problème vient de l'abondance des éléments constitutifs du paramètre de la fonction llParticleSystem. On a un peu du mal à s'y retrouver et certaine explication sont un peu "ésotériques" au premier abord. A part ça le reste est simple, on peut avoir qu'un seul système de particules par prim, il est aligné sur l'axe Z dans le sens positif et il est constitué de sprites en 2D orientés vers la caméra. Il faut aussi savoir que les particles sont générées côté client, autrement dit sur votre PC.

A force de tourner cette histoire dans tous les sens et de mettre au point du code qui ne me satisfaisait toujours pas j'ai changé complètement d'optique. J'ai créé un logiciel qui génère automatiquement la fonction avec son paramètre. Je pense que pratiquement tous les scipteurs sur SL codent dans un éditeur externe. Bien sûr il y a toujours des masos qui aiment s'esquinter les yeux et user leur patience avec l'éditeur intégré mais bon... Comme la plupart d'entre vous je code en externe avec l'éditeur de Alphons van der Heijden dont je vous rappelle l'adresse de téléchargement :

 

http://www.lsleditor.org/

 

Alors la solution que je vous propose est aussi un programme externe qui présente les éléments du paramètre de la fonction d'une façon conviviale et génère le code qu'il suffit de copier et coller dans votre éditeur. Comme ce blog ne permet pas le téléchargement de fichiers j'ai créé un petit site complémentaire ou je présente sommairement le logiciel et où vous pouvez vous le procurer :

 

http://script.lsl.free.fr

 

Donc pour les détails concernant ce programme et ses fonctionnalités je vous renvoie à cette adresse. Ici je me contente de vous proposer un script de test tout simple :

 

default
{
   state_entry()
   {
      llParticleSystem([
         PSYS_PART_FLAGS, 0
         | PSYS_PART_INTERP_COLOR_MASK
         | PSYS_PART_EMISSIVE_MASK,
         PSYS_SRC_PATTERN,
         PSYS_SRC_PATTERN_ANGLE,
         PSYS_PART_START_ALPHA, 0.9,
         PSYS_PART_END_ALPHA, 0.5,
         PSYS_PART_START_SCALE, <0.1,0.1,0.0>,
         PSYS_PART_END_SCALE, <0.6,0.6,0.0>,
         PSYS_PART_START_COLOR, <0.7529412,0,0>,
         PSYS_PART_END_COLOR, <1,0.627451,0.4784314>,
         PSYS_PART_MAX_AGE, 10.0,
         PSYS_SRC_MAX_AGE, 100.0,
         PSYS_SRC_BURST_RATE, 0.1,
         PSYS_SRC_BURST_PART_COUNT, 1000,
         PSYS_SRC_ANGLE_END, 0.5,
         PSYS_SRC_ANGLE_BEGIN, 0.0,
         PSYS_SRC_BURST_RADIUS, 0.2,
         PSYS_SRC_OMEGA, <0,0,0.2>,
         PSYS_SRC_ACCEL, <0,0,0>,
         PSYS_SRC_BURST_SPEED_MIN, 0.2,
         PSYS_SRC_BURST_SPEED_MAX, 0.5]);
   }

   touch_start( integer num )
   {
      state off;
   }
}

state off
{
   state_entry()
   {
      llParticleSystem([]);
   }

   touch_start( integer num )
   {
      state default;
   }
}

 

Vous pouvez l'utiliser pour vos essais. Il suffit de le poser dans un objet. Quand vous le touchez ça démarre, la fois suivante ça s'arrête. Il vous suffit de copier la partie de code générée par le programme Particles et de le coller dans ce script au bon endroit.

Partager

Déposez un commentaire !

(facultatif)

(facultatif)

error

Attention, les propos injurieux, racistes, etc. sont interdits sur ce site.
Si une personne porte plainte, nous utiliserons votre adresse internet (38.107.191.90) pour vous identifier.     

Tous les commentaires de l'article:
Tutorial 10 Les Particles

  • midjade mailto

    sam 15 sep 2007 18:41

    Vos tutos sont d'une aide précieuse, clair, précis...direct dans mes favoris.

  • Matt

    lun 30 jui 2007 18:38

    J'adore vos tutos, je suis moi même developpeur, et grace a vous il me faut moins de toi que j'aurais pensé pour apprendre le lsl. Vos tutoriaux sont clairs, nets, précis et touchent un peu à tout.
    Bon courage pour la suite et encore merci de partager votre savoir avec nous.

  • JBS

    dim 22 jui 2007 20:17

    Franchement un grand bravo a toi . Ca va en aider plus d'un .

  • Naastik

    jeu 12 jui 2007 03:00

    Bravo pour ce blog. C'est une aide précieuse ! Merci


 

fermer la barre

Vous devez être connecté pour écrire un message à lsl

Vous devez être connecté pour ajouter lsl à vos amis

 
Créer un blog