Les scripts qui font les images

Il est temps maintenant de rentrer un peu dans les détails techniques. Attention, ça risque de virer un peu gore, écartez les enfants et les adeptes du clicketage. Il y a plusieurs couches logicielles empilées:

Le mixage des effets

Quelques détails concernant ces trucs : les effets appliqués à l'image originale ont été choisis un peu à la va-vite, il est certain que l'on peut trouver mieux ; le coefficient de mixage théoriquement varie entre 0 et 10000, bien que d'autres valeurs puissent être essayées, à vous de voir.

#!/bin/bash 

source=M.tga

tga_effects $source water /tmp/a.tga 80
tga_effects $source x4 /tmp/b.tga 0
tga_combine /tmp/a.tga /tmp/b.tga mixer /tmp/c.tga 5000

tga_effects $source class0 /tmp/a.tga 
tga_filtres /tmp/a.tga hipass /tmp/a.tga
tga_remap 13 $source neon.map /tmp/b.tga
tga_combine /tmp/a.tga /tmp/b.tga mixer /tmp/c.tga 5000

Bien entendu, ce morceau de script n'est qu'un exemple et ne correspond peut-être plus à ce que vous pouvez voir à l'écran, cet ensemble de pages étant en perpétuelle évolution. Retenez quand même un des défauts majeurs de ces outils: ils ne respectent pas les traditions Unix du pipeline, il faut obligatoirement passer par des fichiers intermédiaires. C'est dommage, mais c'est comme ça...

Classification

Grace à un outil graphique quelconque (display, de ImageMagick, par exemple), nous pouvons déterminer les niveaux RGB des quelques zones qui nous interessent. Ensuite nous devrions pouvoir lire la doc, mais elle n'existe pas encore. Enfin, nous allons remplir une structure C assez mystérieuse, quoique déclaré dans le fichier image.h de ce truc.

Une_Classe_Sph  classes[] =
        {
        {       120, 39, 43,    25,     255, 0, 0 },
        {       52, 74, 35,     25,     0, 255, 0},
        {       97, 121, 184,   25,     0, 0, 255 }
        };

En fait c'est assez (il faut le dire vite) simple. Les trois premiers nombres représentent une teinte dans l'espace RGB (le cube dont je causais tout à l'heure). Le quatrième est le rayon d'une sphère virtuelle centrée sur les coordonnées de la teinte. Et les trois derniers sont aussi une couleur, laquelle sera utilisée pour dessiner dans l'image de destination.

Conclusion

Voilà, c'est tout pour le moment, sauf pour les contours que je traite dans une autre page.