logo

 

  1. Presentation
  2. Starfield (Todo)
  3. Metaballs 2D
  4. Tunnel (Todo)
  5. Plasma (Todo)
  6. Stretch (Todo)
  7. Transformations 3D
  8. Rotozoom
  9. Twister bars
  10. Checkerboard
  11. Infinite objects

Infinite objects

Comme dans beaucoup d'effets, le nom qu'on leur donne compte pour beaucoup.
Celui-ci donne l'illusion que des objets animés peuvent être ajoutés à l'écran à l'infini.

Exemple:

 

Il est basé sur une astuce qui consiste à faire "tourner" plusieurs framebuffers et ne faire le rendu que d'un seul objet.
Le principe est similaire à celui des effets utilisés dans les clips musicaux des années 70:

Les chanteurs sont isolés par chroma-key et peints par dessus l'image précédente, qui vient d'être décalée ou réduite.
On peut choisir d'assombrir l'image à chaque fois pour faire disparaître la traînée "au loin".
Le procédé est répété pour chaque image.

Un détail important à noter sur la première vidéo: chaque objet n'est pas libre, il suit toujours la même "trajectoire". Trajectoire qui n'en est d'ailleurs pas une car il n'y a vraiment qu'un seul objet (celui au bout de la courbe).
Les couleurs varient aussi pour tous les objets, ils ne peuvent pas être recoloriés un par un.

Prenons un objet pas du tout original, sous forme d'image fixe pour le moment:

Le nombre de framebuffers dépend de la fluidité que l'on veut obtenir et la quantité de mémoire que l'on a à disposition.
Prenons 3 framebuffers avec un cadre de couleur différente, pour les identifier: rouge, vert et bleu.
L'image de droite est le rendu à l'écran.

Le programme cycle les 3 framebuffers dans l'ordre rouge, vert, bleu, rouge, vert... A chaque fois, les coordonnées de l'objet sont modifiées (pour l'animation), et il est copié avec transparence dans le framebuffer actuel.
L'affichage suit également cet ordre: on peut voir le cadre de couleur changer continuellement.

C'est la même chose avec des objets animés, même si le spectateur attentif pourra (peut etre) voir qu'on ne peut pas "suivre" un objet de l'oeil sans qu'il y ait une coupure toutes les x images (avec x le nombre de framebuffers utilisés):

Cet effet demande très peu de temps CPU si la machine permet de changer l'adresse de l'affichage.
Celles qui permettent des copies DMA peuvent aussi s'en sortir, au prix d'un framebuffer supplémentaire pour l'affichage final.

La vraie contrainte est celle de la mémoire disponible.
Par exemple, un framebuffer 16 couleurs en 320*240 demande 320*240*4bits = 307200 bits = 37.5ko.
On peut réduire le nombre de couleurs ou l'espace de l'écran occupé (en hauteur) sur les machines qui le permettent.

footer
symbol symbol symbol symbol symbol