a. Algorithme du peinture
L'idée de cet algorithme consiste à utiliser la
technique d'un peintre pour représenter une scène : il peint tout
d'abord les objets de l'arrière-plan pour terminer par les objets qui
sont les plus près (au premier plan).
En pratique, on l'applique sur des objets plats (des facettes
ou des polygones dont les points sont coplanaires) afin de limiter les
problèmes pouvant survenir lors du tri. On en distingue deux :
ü L'algorithme de peinture :
Affiche une scène avec parties cachées contenant n
polygones{Pk}k=1..n. On note Iij l'intervalle du plan de projection
correspondant au pixel (i,j), etI(i,j) l'intensité de l'image à
ce pixel. Voici l'algorithme :
image PEINTRE(entier n, liste de polygones{Pk}k=1..n)
1. Trier les polygones{Pk}de l'arrière vers l'avant.
2. Initialiser l'image de résultat I à la
couleur du fond.
3. Pour k allant de 1 à n
(a) Calculer la projection P' du polygone Pk dans
le plan de l'image. (b) Pour tous les intervalles Iij intersectant
P', Affecter à I(i,j) l'intensité de la partie du
polygone P se projetant en Iij nP'. 4. Renvoyer I
Note : On remarque que si
l'intensité de la partie polygone IijnP' est calculée
grâce à un rendu, alors ce rendu sera fait en chaque point de
l'objet, sans savoir s'ils sont effectivement visibles ou non. Une solution
consiste à dessiner les polygones en commençant par les plus
proches et à ne peindre que les pixels qui n'ont pas déjà
été peints. C'est à partir de l'algorithme à
peinture inverse que nous aurons la réponse favorable.
ü L'algorithme à peinture inverse :
la différence avec l'algorithme à peinture, c'est juste
au niveau de l'algorithme et de l'affichage. Voici son algorithme :
image PEINTREINVERSE(entier n, liste de polygones{Pk}k=1..n)
1. Trier les polygones{Pk}de l'avant vers l'arrière.
2. Initialiser l'image de résultat I à la
couleur du fond.
3. Initialiser le masque M des pixels déjà
peints à faux : M(i,j)=faux pour tout i,j. 4. Pour k allant de 1
à n
(a) Calculer la projection P' du polygone Pk dans
le plan de l'image.
(b) Pour tous les intervalles Iij intersectant P' et tel que
M(i,j)=faux,
i. Affecter ` a I(i,j) l'intensité de la partie du
polygone P se projetant en Iij nP'.
ii. M(i,j)=vrai.
5. Renvoyer I
Cet algorithme utilise le tri pour classer les objets fait
à ce qu'il ne soit pas plus rapide.
b. Algorithme du tampon de profondeur
(Z-buffer)
Cet algorithme permet d'afficher une scène avec parties
cachées contenant n polygones{Pk}k=1..n. On note Iij le carré de
la grille dans le plan de projection correspondant au pixel (i,j), etI(i,j)
l'intensité de l'image à ce pixel.
Voici comment il se présente :
image ZBUFFER(entier n, liste de polygones{Pk}k=1..n)
1. Initialiser l'image de résultat I à la
couleur du fond.
2. Initialiser l'image de profondeur Zb à +8:
Zb(i,j)=+8 pour tout i,j.
3. Pour k allant de 1 à n
(a) Calculer la projection P du polygone Pk dans le plan de
l'image.
(b) Pour tous les intervalles Iij intersectant P',
i. Calculer la profondeur z de Iij nP'.
ii. Si z<Z b (i,j) alors
affecter à I(i,j) l'intensité de la partie du
polygone P se projetant en Iij nP.
Zb (i,j)=z.
4. renvoyer I.
|