• Aucun résultat trouvé

Algorithme de rendu avec points caches

Si l'on etend notre modele l de fer a une interpretation surfacique, on heritera de points caches: la presence d'un fragment de surface plus pres de la camera rendra certains points invisibles (a peu pres la moitie arriere de la t^ete, car des proeminences comme le nez ou les oreilles peuvent cacher une portion de la joue ou rester visibles de pro l). Si seules sont visibles les extremites des segments (les points du modele) qui ne sont pas masquees, on obtiendra des

Structure et algorithme pour un rendu rapide de visages synthetiques

vues l-de-fer du type de celles deja presentees. Cette representation plus lisible du visage et plus conforme a l'experience sera facilement etendue au cas texture, des la prochaine section.

8.5.1 Restriction des mouvements de camera

On va limiter les mouvements de cameras que l'on autorise. Ainsi, la dimensionnalite du probleme de visibilite sera reduite, et un algorithme de rendu plus ecace pourra ^etre propose.

Fig. 8.10 { Degres de libertes de la camera relativement au modele

On impose que les axes haut/bas du modele et de la camera restent colineaires. Les placements relatifs permettent toujours de tourner autour du visage (1 degre de liberte) et de s'eloigner ou se rapprocher, comme le montre la gure 8.10. On ne peut donc plus voir les visages s'incliner, ni sur le cote, ni vers le haut ou le bas. Avec cette restriction, un clone pourrait donc faire((non))

de la t^ete, mais pas opiner du chef. Cela n'est pas tres g^enant puisque dans un contexte ou une personne n'est pas s^ure d'^etre vue ou regardee par les autres, ce genre de communication visuelle ne devrait pas ^etre utilise.

8.5.2 Hypothese de perspective faible

L'hypothese de la perspective faible est presque aussi frequemment utilisee que le modele classique de la camera perspective qu'on a introduit a l'occasion du rendu point-par-point de la structure. Commencons par remarquer que les points situes dans chaque plan

z

=

constante

subissent une m^eme transformation, composee d'une projection orthogonale et d'une mise a l'echelle : comme un point

M(x;y;z) se visualise en P



x

dd

+z

;y

dd

+z

;

0

, le rapport dd

+z est e ectivement constant pour tout

z

=

constante

donne.

Qu'en est-il de points situes a proximite d'un plan

z

=

z

0 donne? Le facteur d'echelle d+dz

est dans certains cas tres proche de d+dz0. L'erreur exacte vaut:

d

d

+

z

,

d

d

+

z

0 =

d

2

z

0 ,

d

2

z

(d+

z)(d

+

z

0) =

d

2(z,

z

0) (d+

z)(d

+

z

0)

Pour une distance focale

d

constante, l'erreur de position dans l'image sera d'autant plus faible que

z

et

z

0 seront proches et que

z

et

z

0 seront grands devant la focale.

On appliquera l'hypothese de perspective faible pour le rendu des points de chaque visage1. Si 1. qui ne sont jamais zoomes au point de ne pas appara^tre en entier dans l'image.

8.5 Algorithme de rendu avec points caches

z

=

z

0 est le plan qui contient l'axe du clone, tout point

M

(x;y;z) du modele sera visualise en

P



x

dd

+z0

;y

dd

+z0

;

0

, c'est a dire que tous les points d'un m^eme visage subiront une projection orthogonale et une mise a l'echelle qui ne dependra que de la position de l'axe. Ainsi, le calcul de la transformation de chaque point pourra ^etre fait plus ecacement, et l'on gardera l'impression de perspective, lorsque le visage se deplacera dans la scene, ou du fait de sa taille relative par rapport a des clones plus proches ou plus eloignes dans la scene.

8.5.3 Notion de segments

On considere que le modele est en fait la reunion de segments horizontaux qui relient chaque point

P



=

k

2n

;y



du modele a son voisin de droite

P



+2n

;y



et a son voisin de gauche

P



,

2n

;y



. Le modele se presente donc comme l'empilement de

n

polygones horizontaux (qui feraient tous un pixel de hauteur). Ainsi, l'intersection d'un modele avec un plan horizontal passant par l'un de ses points est un polygone non-croise qui joint tous les points de m^eme altitude, comme sur la gure 8.11. On suppose que seules les extremites (les points du modele) sont visualisees (pas les segments), pour reproduire des vues l-de-fer analogues a celles de la gure 8.3.

Fig.8.11 { Segments du modele

8.5.4 Ordonnancement du rendu

Puisqu'on n'incline pas la camera, chacun des polygones horizontaux qui forme le modele se projettera dans un segment sur une ligne horizontale de l'ecran. Aux considerations d'anti-aliasing pres, le rendu de chaque plan horizontal du modele (chaque contribution a une ligne de l'ecran) peut donc se faire independamment. Par exemple, pour un angle de vue donne, on va pouvoir tracer le modele de haut en bas, en obtenant ligne apres ligne les contributions a l'image, comme sur la gure 8.12.

Apres avoir

decompose le probleme verticalement

, il reste donc a e ectuer ecacement le rendu d'un de ces polygones, en detectant les points caches.

Si le modele est face a la camera, son axe centre sur l'axe optique, un point qui n'est jamais cache est celui qui tombe sur cet axe optique, ou en est le plus pres en terme de deviation angulaire. Comme l'echantillonnage du modele est regulier, il sut de conna^tre le degre de

Structure et algorithme pour un rendu rapide de visages synthetiques

Plan du modèle vers Ligne écran

y x z

Polygone 2D vers ligne 1D

Fig. 8.12 { Liens entre lignes d'ecrans et polygones horizontaux du modele

rotation du modele autour de son axe pour identi er ce point, sans que la forme du modele n'intervienne : par exemple, quand on tourne le modele de 30 sur la droite, c'est le point du modele situe 30 sur la gauche qui passe dans l'axe, de face et toujours visible (gr^ace a la contrainte de positivite des distances a l'axe).

Dans le modele de perspective faible qu'on utilise, cela reste vrai m^eme si le clone n'est pas centre: son image est exactement translatee, sans que les angles vus ne soient modi es (en perspectif pur, ils sembleraient tourner faiblement mais a des vitesses relatives liees a leur profondeur).

On va donc e ectuer le trace en partant de ce point frontal, et en cherchant quels sont les points qui appara^tront a sa droite (respectivement a sa gauche). Lorsqu'on suit l'arc en s'eloignant de ce point frontal, la condition de visibilite est de ne pas ^etre masque par les segments precedents, donc de depasser leurs extremites. Pour ^etre visible, un point doit appara^tre plus excentre (plus a droite ou plus a gauche respectivement) que le plus excentre des points qui le precedent vers le front. La gure 8.13 montre l'ordre d'achage pour le demi-modele de droite, ainsi que le cas d'un point cache.

Écran 'Horizon' croissant Sens de pro ject ion 1 2 3 4 1 2 3 1 2 3 4 Ordre d'affichage y

er ème ème ème

Écran