Introduction
L'algorithme du Z-Buffer est un
algorithme d'élimination des parties cachées.
-> Lors de la visualisation d'une scène, cet algorithme supprime l'affichage de tout
objet ou morceau d'objet masqué par un autre objet ou par lui même.
Principe
Le calcul de limage est
effectué séquentiellement en traitant les objets extraits de la scène les uns à la
suite des autres pour en extraire les pixels qui les représentent de manière à les
comparer aux autres pixels déjà calculés et n'afficher pour chaque pixel de l'image que
la facette la moins profonde (devant vis à vis de l'observateur).
-> Il n'y a pas de tri des objets
à effectuer, mais un calcul de maximum pour chaque pixel vis à vis de l'ensemble des
objets présents en ce pixel.
Implantation
On définit deux zones mémoire :
un tampon couleur destiné à
contenir la couleur de chacun des pixels de l'image (initialisée à la couleur de fond
souhaitée) et donc l'image en fin d'exécution,
un tampon profondeur destiné à
contenir la profondeur écran maximum de chacun des pixels de l'image (initialisée à -¥, utilisée comme
valeur courante de comparaison en cours d'exécution).
On décompose chaque surface s à
afficher en l'ensemble des pixels de coordonnées (x,y) qui la composeraient si elle
était affichée seule.
Au cours de la décomposition, on
calcule la profondeur écran z de chaque pixel de coordonnées (x,y).
Si cette coordonnée est plus grande
que celle déjà présente dans le tampon altitude aux coordonnées (x,y), la nouvelle
profondeur devient z et la couleur du pixel (x,y) du tampon couleur est calculée en
fonction de x, de y, des caractéristiques de la surface s, de sources lumineuses, ...
Algorithme
Initialiser
le tableau PROF à -¥
Initialiser de tableau COUL
à la couleur de fond
Pour chaque objet o à représenter
Pour chaque pixel p=(x,y) de o
Calculer la profondeur z de p=(x,y) ;
Si z > PROF(x,y) alors
PROF(x,y) = z ;
COUL(x,y) = couleur(o,x,y) ;
Finsi
Finpour
Finpour
Les objets sont très fréquemment des facettes planes triangulaires.
Exemple

2 facettes à afficher
au moyen dun Z-Buffer


Pixélisation de chacune de ces
facettes


Calcul daltitude pour chacun
des pixels
de chacune des deux facettes

Affichage des pixels visibles
par comparaison des altitudes

Autre possibilité suivant l'ordre
de traitement des facettes
(pixels d'altitudes égales)

Le
programme

Le
programme

Le
programme
Implantation
pratique
On dispose de facettes triangulaires
dont les sommets sont connus en coordonnées écran.
Problèmes:
Solution: Trouver les pixels sur les
cotés droit et gauche de la facette traitée. Tracer la trame horizontale entre le couple
de pixels de chaque ligne de pixels sur laquelle la facette apparaît.
Performances
Différentes unités de mesure de
performance:
pixels/s,
segments/s,
polygones/s.
Sur PC, de quelques dizaines à
quelques centaines de millions de pixels par seconde, de quelques dizaines de milliers à
quelques millions de polygones par seconde (de 300 à 20000F).
En constante évolution.
Conclusion
Intérêt
Algorithme facilement implantable.
Algorithme pouvant être optimisé
(utilisation exclusive d'entiers, utilisation de variantes de l'algorithme de Bresenham
pour le tracé de segments).
Algorithme facilement implantable
hard.
Algorithme facilement pipelinable et
parallélisable.
Gestion simple des recoupements
entre objets.
Exécution en un temps en o(n) du
nombre de facettes -> bonne scalabilité.
Inconvénients
Les deux zones tampon peuvent avoir
des tailles très importantes (plusieurs Mo dans le cas de grands écrans).
La décomposition de chaque surface
élémentaire en pixels nécessite une puissance de calcul importante (de l'ordre de 50
Mips pour 100000 facettes/s) et une vitesse d'accès mémoire très élevée.
Des techniques incrémentales (Bresenham) permettent toutefois d'optimiser les
performances par l'utilisation de variables entières et d'opérations simples (additions
et comparaisons).
Pas de gestion intrinsèque des
réflexions et des transmissions.
Difficultés pour implanter la
modélisation de phénomènes optiques complexes.
-> Algorithme standard pour
l'obtention rapide d'images de qualité moyenne.
-> Application à la conception et
fabrication assistée par ordinateur (station de travail graphique), à la réalité
virtuelle et au jeu. |