• Aucun résultat trouvé

3 Radiosit ´e hi ´erarchique guid ´ee par la visibilit ´e : algorithme et structures de donn ´ees

Les triangulations hi´erarchiques et les ondelettes paresseuses comptent parmi les outils n´ecessaires pour notre m´ethode de radiosit´e hi´erarchique guid´ee par la visibilit´e. Le squelette de visibilit´e fournit quant `a lui une information exacte et globale de visibilit´e, qui permet de calculer des facteurs de formes exacts entre points et polygones pour tout transfert (direct ou indirect). L’information fournie par les arcs du squelette (les

´ev´enements de visibilit´e) permettent de plus le d´eveloppement de crit`eres pertinents de raffinement, une fois de plus pour tout ´echange.

Dans ce qui suit nous pr´esentons notre nouvel algorithme qui utilise le squelette et les triangulations hi´erarchiques pour un raffinement efficace et une simulation pr´ecise.

3.1 Pr ´esentation de l’algorithme

Notre nouvel algorithme est esquiss´e figure 4.6. Il commence avec la cr´eation du squelette de visibilit´e de la sc`ene, en utilisant la structure am´elior´ee `a base de lien stock´es aux polygones en lieu et place du tableau 2D (cf. section 3.2 du chapitre 3). Apr`es cette ´etape, nous avons toute l’information pour calculer les facteurs de forme entre chaque sommet initial et chaque polygone. L’information de visibilit´e pour toute paire polygone-polygone est ´egalement disponible, ce qui ´evite les liens initiaux entre polygone-polygones occult´es. Apr`es le calcul des facteurs de forme initiaux, une ´etape de “collecte” est effectu´ee aux sommets, suivie d’un “pousser-tirer”. En pratique, nous faisons un nombre fix´e d’it´erations pour obtenir un ´equilibre initial ; il serait toutefois possible d’attendre la convergence puisque ces it´erations sont peu coˆuteuses.

Pour commencer la subdivision, nous ins´erons les maxima des fonctions d’´eclairement dues aux sources les plus importantes pour chaque gros polygone (proc´edure insertMaxima(), cf. section 5.2).

RadiositeHierarchiqueGuideeParLaVisibilite

f

computeSkeleton() // calculer le squelette computeCoarseLighting() // 3 collectes pousser-tirer insertMaxima() // insertion des maxima while( !converged() ) do

subdividePolygons() // Raffinement des polygones a l’aide de l’info de visibilite refineLinks() // Raffinement des liens a l’aide de l’info de visibilite gatherAtVertices() // Collecte aux sommets des triangulations hierarchiques pushPull()

endwhile

g

FIG. 4.6: Radiosit´e hi´erarchique guid´ee par la visibilit´e

Une fois que le syst`eme a ainsi ´et´e initialis´e, nous commenc¸ons la subdivision guid´ee par les disconti-nuit´es (subdividePolygons()) et le raffinement des liens (refineLinks()). Grˆace `a l’information globale de visi-bilit´e, nous pouvons subdiviser les surfaces en suivant les discontinuit´es qui sont “importantes”. `A la fin de

chaque ´etape de raffinement, une collecte et un pousser-tirer sont effectu´es, afin de maintenir la coh´erence de la repr´esentation.

Dans ce qui suit, nous utiliserons les termes “source” et “r´ecepteur” pour simplifier la discussion. Une source peut cependant ˆetre n’importe quel polygone de la sc`ene, qu’il s’agisse d’une source primaire ou non.

Dans le reste de cette section, nous pr´esentons les structures de donn´ees de liens et traitons les questions li´ees au calcul des facteurs de forme et `a la repr´esentation multir´esolution des liens. Dans la section 4 nous d´ecrivons le raffinement des liens, et les mises `a jour de visibilit´e ; dans la section 5 nous pr´esentons notre strat´egie de subdivision des polygones et les crit`eres de raffinement perceptifs.

3.2 Structures de liens et facteurs de forme

Les structures de lien sont centrales dans notre m´ethode, `a la fois pour les transferts et pour les raffinements.

Par opposition aux m´ethodes ant´erieures, nous utilisons deux sortes de liens distinctes : les liens point-polygone sont utilis´es pour collecter l’´eclairage aux sommets, tandis que les liens polygone-polygone permettent les d´ecisions de raffinement et la mise `a jour de l’information de visibilit´e lors des subdivisions.

P

FIG. 4.7: (a) Un lien point-polygone utilis´e pour collecter l’´energie lumineuse au sommet P. Tous les arcs du squelette entre P et le polygone source sont stock´es dans le lien, comme la surface critique EV qui est repr´esent´ee. (b) La structure de donn´ees correspondante.

Lien point-polygone

Comme nous l’avons d´ej`a ´ecrit, le squelette de visibilit´e fournit toute l’information requise pour calculer le facteur de forme exact entre tout polygone de la sc`ene et tout sommet. Grˆace `a la mise `a jour de vue que nous allons d´ecrire dans la section, 4.3, cette possibilit´e sera ´etendue aux sommets issus de la subdivision.

Il y a de nombreux avantages `a calculer l’´eclairement aux sommets. Nous l’avons vu, le lissage est bien meilleure que lorsque une radiosit´e moyenne sur les ´el´ements est consid´er´ee. De plus, il est moins coˆuteux de calculer des facteurs de forme exacts aux sommets qu’aux polygones. Le calcul de facteurs de forme exacts sommet-polygone a ´et´e introduit par Wallace et al. [WEH89] pour la radiosit´e progressive. Pour la radiosit´e hi´erarchique, le fait que les sommets soient partag´es entre niveaux rend la chose plus probl´ematique.

Un lien point-polygone et la structure de donn´ees correspondante sont repr´esent´es figure 4.7. Les liens point-polygone sont stock´es aux sommets des triangulations hi´erarchiques. Ils contiennent la valeur du facteur de forme, ainsi que les arcs du squelette de visibilit´e (les ´ev´enements visuels de la vue) entre le point et le polygone.

Le facteur de forme point-polygone est calcul´e de mani`ere analytique en utilisant une formule classique (e.g. [BRW89]). Consid´erons la configuration de la figure 4.8.

FP;source=

1

~N

γi ~Ri~Ri+1

k

~Ri~Ri+1k

La somme est calcul´ee `a l’aide des arcs du squelette stock´es au lien.~Ri et~Ri+1correspondent aux deux nœuds (droites poignardantes extrˆemes) de l’arc.

source receiver

blocker

N

γ

0

γ

1

γ

2

γ

3

R

2

R

1

R

0

R

3

P

FIG. 4.8: G´eom´etrie pour le calcul du facteur de forme.

La figure 4.9 donne un exemple de calcul de facteur de forme `a l’aide du squelette de visibilit´e ; le calcul est exact. Nous le comparons avec un calcul par lancer de rayon avec ´echantillonnage perturb´e (le noyau et la visibilit´e sont tous deux ´evalu´es par une m´ethode de Monte-Carlo). L’erreur moyenne relative est donn´ee, 36 rayons sont n´ecessaires pour que l’erreur num´erique sur le facteur de forme soit en dessous de 10%. Comme on peut s’y attendre de la part d’´echantillonnage stratifi´e, la convergence est en O(n,34)[Mit96], puisque la fonction `a int´egrer est seulement continue par morceaux `a cause du terme de visibilit´e. Dans la section 6.2 nous montrerons l’effet de cette erreur sur la qualit´e des images.

Squelette 4 rayons 16 rayons 36 rayons 64 rayons 100 rayons

temps 0,07 ms 0,5 ms 1,7 ms 3,8 ms 6,7 ms 10,4 ms

erreur 0 50% 20 % 9,6% 7,6% 4,6%

FIG. 4.9:Exemple de calcul de facteur de forme depuis le point en blanc vers la source ´etendue en utilisant le squelette de visibilit´e et le lancer de rayon avec ´echantillonnage perturb´e. La partie cach´ee de la source a ´et´e hachur´ee. Les temps donn´es pour le squelette ne comprennent pas la mise `a jour de l’information de visibilit´e (environ 0,13 ms par lien en moyenne pour cette image). Les temps de calculs ont ´et´e mesur´es sur une Onyx2 avec un R10k `a 195Mhz.

Repr ´esentation multir ´esolution des liens

Pour maintenir la repr´esentation multir´esolution de la radiosit´e sur la hi´erarchie de triangulations, il est n´ecessaire de repr´esenter la diff´erence∆B ainsi que nous l’avons d´ecrit en section 2.2 pour le “pousser de la phase de “pousser-tirer”.

Lorsqu’un nouveau sommet est ins´er´e dans un polygone r´ecepteur, des liens “n´egatifs” sont cr´e´es et stock´es

`a son niveau. Ils correspondent aux ´echanges entre la source et les trois sommets parents (en pratique il s’agit de pointeurs vers ces liens). Ces liens permettent le calcul de∆B de la fac¸on suivante :

∆B = Bl,

i=0::2

ciBinl; (4.1)

o`u Bl est la radiosit´e collect´ee le long du lien positif, Binl la radiosit´e le long des liens n´egatifs et ciles coor-donn´ees barycentriques du point Pi. Un exemple de liens n´egatif est montr´e figure 4.10(b).

L’op´eration de collecte et pousser-tirer est donn´ee figure 4.11. Le champs child d’un HPolygon est sa triangulation associ´ee.

source

receiver (a)

source

receiver (b) negative

links

P

0

P

1

P

2

FIG. 4.10:Liens n´egatifs. (a) Un point nouvellement ins´er´e (en noir) et le lien point-polygone vers la source.

(b) Le sommet pointe vers trois liens n´egatifs vers la source utilis´e pour le calcul de∆B.

Collecte ()

f

for each vertex v

Bv=gather(positive linksv) - gather(negative linksv)

g

Pousser (HPolygon poly)

f

if child(poly) == NULL return

for each vertex v in triangulation child(poly) Bv=∆Bv+interpolation (poly, v) for each triangle t in triangulation child(poly)

Push(t)

g

Tirer (HPolygon poly)

f

if child(poly) == NULL

Bpoly=average of Bv, for all v vertex of poly return

for each triangle t in triangulation child(poly) Pull(t)

Bpoly=average of Bt, for all t in child(poly)

g

FIG. 4.11: Collecte et pousser-tirer

Lien polygone-polygone

Les liens polygones-polygones sont utilis´es principalement pour d´eterminer `a quel point le transfert entre deux polygones est bien simul´e. Cette information est utilis´ee dans le raffinement que nous d´ecrivons dans la section suivante.

Un lien polygone-polygone stocke l’information de visibilit´e grˆace `a des pointeurs sur les liens point-polygones correspondant (deux groupes de trois pointeurs pour une paire de triangles). Il stocke ´egalement l’ensemble des arcs du squelette dont les deux polygones sont les extr´emit´es, ainsi que ceux qui ont une arˆete g´en´eratrice sur l’un des polygones, et une extr´emit´es sur l’autre (figure 4.12).

Quand il y a subdivision, tous les liens polygone-polygone de triangles adjacents partagent des liens point-polygone.

source

receiver source

receiver

(b) (a)

class LinkPolyPolyf

List<LinkPtPoly>ptPolyLinks List<Arcs>Arcs

Polygon Src

g

(c)

FIG. 4.12:(a) Un lien polygone-polygone est utilis´e pour estimer le transfert entre deux polygones des trian-gulations. (b) Le lien polygone-polygone contient des pointeurs vers les six liens polygones-polygones corres-pondants, trois d’entre eux (source!r´ecepteur)sont repr´esent´es. (c) Structure de donn´ees correspondante.