. |
Pour une fois, ça va
être très court, je suppose que vous connaissez déjà l'effet
feu et que vous avez eu l'occasion de vous y entrainer.
Si ça n'est pas le cas, je vous signale qu'il y a de très
bons tuts sur l'effet feu dans les numéros précédants de
prograzine. |
Pour ceux qui conaissent
le plugin winamp "geiss", je vous propose de vous expliquer
son principe. Si vous ne conaissez pas ce plug-in, sachez
néamoins que vous l'avez forcément déjà vu quelque part
vu qu'il est très fréquent ces derniers temps. |
Le geiss n'est en fait
qu'une simple extension de l'effet feu. |
Pour rappel : l'effet
feu se résume comme ceci : (en 320x200) |
For Pixel:=0 To 63999
Do Begin |
Ancien_Pixel:=Pixel+320; Nouvelle_Couleur:=(Ecran[Ancien_Pixel]+Ecran[Ancien_Pixel+1]+Ecran[Ancien_Pixel+320]
|
|
+Ecran[Ancien_Pixel-321])
Div 4; |
Nouvel_Ecran[Pixel]:=Nouvelle_Couleur;
|
|
End; |
. |
Toute l'astuce du geiss
se trouve dans la modification de la seconde ligne : dans
l'effet feu, on prend systématiquement le pixel se trouvant
en dessous du pixel actuel (+320). Ici on se propose de
prendre n'importe quel pixel. Ca veut dire que l'on fait
un random? Non, mais au lieu de prendre le pixel du bas,
on va prendre le pixel associé et défini dans une table
de 64000éléments. |
Var Attache:Array[0..63999]
Of Word; |
. |
Ce qui fait qu'on obtient
: |
For Pixel:=0 To 63999
Do Begin |
Ancien_Pixel:=Attache[Pixel]; Nouvelle_Couleur:=(Ecran[Ancien_Pixel]+Ecran[Ancien_Pixel+1]+Ecran[Ancien_Pixel+320]
|
|
+Ecran[Ancien_Pixel-321]) Div 4;
|
Nouvel_Ecran[Pixel]:=Nouvelle_Couleur;
|
End; |
. |
Toute le travail restant
étant d'initialiser cette table Attache. Une fois encore,
si vous initialisez votre table de la façon suivante : |
For I:=0 To 63999 Do
Attache[I]:=I+320; |
vous retrouvez l'effet
feu. |
. |
Mais si à présent vous
dites que chaque pixel prend comme source un pixel un peu
plus proche du centre, vos obtenez une déformation de l'image
un peu "effet tunel", à l'inverse, si vous prenez un pixel
plus à l'extérieur, vous obtenez une sorte de rétrécissement.
|
A vous de trouver à
quelles tables correspondent les effets de sphérisation
et de rotation de Geiss, mais croyez-moi, il ne s'agit que
d'un problème de table. En gros, quel que soit l'effet affiché,
le calcul réalisé est le même, seule la table diffère. |