• Aucun résultat trouvé

5 Impl ´ementation et r ´esultats

Nous avons men´e `a bien une impl´ementation des structures de donn´ees et algorithmes d´ecrits dans ce chapitre. Nous avons utilis´e notre syst`eme sur une s´erie de sc`enes de test : nous avons calcul´e le squelette de visibilit´e pour des sc`enes comportant jusqu’`a 1500 polygones.

Dans ce qui suit, nous pr´esentons tout d’abord les statistiques pour le squelette de visibilit´e sur nos diff´erentes sc`enes. Nous d´emontrons ensuite la flexibilit´e de notre technique en pr´esentant les r´eponses `a diff´erentes requˆetes de visibilit´e globale.

5.1 Impl ´ementation et statistiques de construction

Notre impl´ementation requiert pour l’heure des poly`edres convexes en entr´ee. Ceci n’est pas une limitation de l’approche, nous utilisons la convexit´e uniquement pour simplifier certains tests de visibilit´e locale.

Nous traitons les objets en contact en d´etectant ce genre de configuration lors d’un pr´ecalcul, et en modifiant l´eg`erement notre lancer de rayon (pour ´eviter qu’un rayon ne “passe” entre deux objets en contact). Nous reje-tons ´egalement les triplets d’arˆetes coplanaires pour la restriction des EEE. D’autres d´eg´en´erescences comme le arˆetes qui se coupent ou les interp´en´etrations d’objets ne sont pas encore trait´ees par notre impl´ementation.

Nous pr´esentons des statistiques sur la taille de notre structure de donn´ees et sur les temps de construction dans le tableau 5.1 et sur le graphique 3.15. Bien entendu, ces tests ne doivent ˆetre pris que comme une simple indication du comportement asymptotique de notre algorithme. cependant, nous observons une croissance qua-dratique de la m´emoire, et une croissante super-quaqua-dratique du temps de calcul avec environ n2;4en moyenne, o`u n est le nombre de polygones.

Les nœuds V EE sont en fait les plus nombreux. Il y a environ cent fois moins de E4, bien qu’il puisse th´eoriquement y en avoir un ordre de grandeur de plus.

Avec la structure de donn´ees initiale (i.e. avec les tableaux 2D), un grand pourcentage de la m´emoire utilis´ee est due `a ces tableaux (pour la sc`ene (d) du tableau 5.1, le tableau utilise 53.7Mo sur un total de 135Mo). Comme ces tableaux sont tr`es vides (99.3% de cellules vides pour la sc`enes (d)), la m´emoire utilis´ee est notablement r´eduite par notre structure am´elior´ee qui remplace les tableaux par des arbres stock´es au niveau des polygones.

Un gain de 30% a ´et´e observ´e en moyenne pour nos sc`enes de test.

Dans le cas de sc`enes o `u l’occultation est dense, la m´emoire requise croˆıt plus lentement, plus proche de lin´eaire que quadratique par rapport au nombre de polygones en entr´ee. Par exemple, nous avons r´epliqu´e la sc`ene (a) 2, 4 et 8 fois, pour obtenir des pi`eces isol´ees contenant une chaise chacune. La m´emoire utilis´ee (sans le tableau) est alors 1,2 Mo, 2,8 Mo, 8,6 Mo et 17,3 Mo, pour respectivement 78, 150, 300 et 600 polygones.

La structure am´elior´ee pr´esente une croissance lin´eaire.

Les bornes th´eoriques sont bien plus pessimistes, O(n4)en taille car chaque quadruplet d’arˆetes peut engen-drer deux droites E4 potentielles [TH91], et O(n5)en temps car chacune de ces droites extrˆemes potentielles implique un lancer de rayon sur la sc`ene enti`ere. Cependant, comme nous l’avons vu dans le chapitre pr´ec´edent, de telles bornes ne peuvent ˆetre atteintes que pour des sc`enes tr`es peu courantes (“exotiques”) comme les grilles orthogonales ou les droites infinies. Il est clair que dans ces cas, notre algorithme de construction se r´ev´elerait inefficace. Des algorithmes plus efficaces sont alors possibles (comme l’algorithme de construction du com-plexe de visibilit´e en entier pr´esent´e dans le chapitre pr´ec´edent, qui tourne en temps O(k+n3log n)o `u k est la taille du complexe, qui est aussi celle du squelette). Mais ces approches souffrent des probl`emes de robustesse d´ecrits en section 2.2 ou dans le chapitre pr´ec´edent.

a b c d e f g

Sc`ene

Polygones 84 168 312 432 756 1056 1488

Nœuds (103) 7 37 69 199 445 753 1266

Arcs (103) 16 91 165 476 1074 1836 3087

Construction 1 s 71 12 s 74 37 s 07 1 min 39 s 5 min 36 s 14 min 36 s 31 min 59

M´emoire (Mo) 1.8 9 21 55 135 242 416

TAB. 3.1: Statistiques de la construction du squelette r´ealis´ees sur une SGI Onyx 2 avec un R10000 `a 195Mhz.

La place m´emoire correspond `a la structure de donn´ees initiale (i.e. en incluant le tableau 2D).

1

84 168 312 432 756 1056 1488 polygons 1 10 100 1000 10000

84 168 312 432 756 1056 1488 time (seconds)

polygons

(a) (b)

FIG. 3.15:(a) Graphique du nombre de nœuds (en double ´echelle logarithmique). La pente d’environ 2 indique une croissance quadratique. (b) Graphique du temps de calcul (en double ´echelle logarithmique). La pente d’environ 2,4 indique une croissance en n2;4.

Quant `a la robustesse de notre m´ethode, il faut remarquer que les techniques pr´ec´edentes de graphe d’as-pect ou de maillage de discontinuit´e d´ependaient largement de la construction d’un arrangement global (pour le maillage ou sur la sph`ere des directions). Ce n’est pas le cas ici, toutes les op´erations sont locales. Comme nous n’effectuons que du lancer de rayon et des intersections de plans, les probl`emes num´eriques sont limit´es par rapport `a l’intersection d’une surface (parfois quadrique r´egl´ee, pour les EEE) avec toute la sc`ene. Des d´eg´en´erescences peuvent ´eventuellement poser des probl`emes, mais, grˆace `a la localit´e de notre m´ethode, cela n’affectera pas la construction ailleurs. Des algorithmes plus efficaces `a base de balayage sont bien plus sen-sibles `a de telles instabilit´es, puisqu’une erreur `a un moment donn´e se r´epercute sur toute la suite de l’ex´ecution de l’algorithme et rend le r´esultat compl`etement incorrect, si tant est que le programme n’ait pas ´echou´e en cours de route.

5.2 Facteur de forme point-polygone aux sommets

Le calcul de facteurs de formes est devenu central pour bien des m´ethodes de simulation de l’´eclairage. Le facteur de forme entre deux surfaces est la proportion de lumi`ere quittant l’une des surfaces qui arrive `a l’autre.

Dans bien des syst`emes de simulation de l’´eclairage global par la m´ethode de radiosit´e, des facteurs de forme entre points et surfaces sont utilis´es comme approximation des calculs surface-surface [CG85, BRW89] ; dans d’autres l’´eclairement est calcul´e directement aux sommets [WEH89].

Dans les ´etudes pr´ec´edentes, qu’elle soient th´eoriques [LSG94] ou exp´erimentales [DS96], il a ´et´e montr´e que l’erreur dans le calcul de visibilit´e est pr´edominante. C’est particuli`erement le cas lorsque le lancer de rayon est utilis´e. Lischinski et al. [LSG94] ont d´evelopp´e une technique tr`es prometteuse pour contrˆoler l’erreur

commise lors de la simulation d’un transfert lumineux pour la radiosit´e hi´erarchique. Pour qu’il soit utile dans des environnements g´en´eraux, un acc`es `a l’information exacte de visibilit´e entre un point et les surfaces avec lesquelles il interagit est n´ecessaire. Cette information est par essence globale, puisque toute paire d’´el´ements de surfaces de la sc`ene peut ˆetre en interaction.

Le squelette de visibilit´e permet pour l’heure de r´epondre `a cette requˆete de mani`ere exacte pour tout sommet initial de la sc`ene.

Pour calculer la vue d’une face polygonale f depuis un sommet v, nous acc´edons `a tous les arcs EV relatifs `a f . Il s’agit simplement de parcourir la ligne du tableau qui correspond `a f (ou l’arbre de recherche stock´e en f pour la structure am´elior´ee). Pour chaque arbre de recherche correspondant `a f , nous recherchons les arcs engendr´es par v. Ces arcs correspondent exactement aux limites de la partie visible de f depuis v.

Cette requˆete est effectu´ee efficacement car les arcs sont tri´es dans les arbres de recherche selon un ordre lexicographique dont les g´en´erateurs sont la premi`ere clef. En particulier, pour les arcs EV , nous avons choisi d’utiliser l’identificateur du sommet avant celui de l’arˆete.

La figure 3.16(a) et (b) montre des exemples de requˆetes de partie visible depuis un sommet. Pour ces sc`enes, contenant respectivement 312 et 1488 polygones, une requˆete prend 1.2 ms et 1.5 ms (sans compter le temps pris pour l’affichage du r´esultat).

Dans le chapitre suivant, nous pr´esentons un algorithme de simulation de l’´eclairage global qui utilise le squelette de visibilit´e pour calculer des facteurs de forme point-polygone exacts.

(a) (b)

FIG. 3.16:(a) Partie du sol visible depuis l’un des sommets de l’avion. (b) Partie du sol visible depuis l’un des sommets de la source de droite.

5.3 Maillage de discontinuit ´e global et `a la vol ´ee

Dans les calculs de radiosit´e, il est en g´en´eral b´en´efique de subdiviser le maillage d’une surface selon certaines [Hec92a, LTG93] ou toutes [DS96] les discontinuit´e de la fonction d’´eclairement, c’est-`a-dire les surfaces critiques. La construction partielle [Hec92a, LTG92] ou compl`ete [DF94, SG94] d’un tel maillage a

´et´e jusqu’alors restreinte `a une source primaire de lumi`ere (en g´en´eral un petit polygone). Pour toutes les autres interactions lumineuses dans la sc`ene, la complexit´e algorithmique et les probl`emes inh´erents de robustesse n’ont pas permis l’utilisation de ces techniques [Tam93].

Pour bien des transferts secondaires dans un environnement, la construction d’un maillage de discontinuit´e global (depuis toute surface ´emettrice ou r´efl´echissante vers toute surface r´eceptrice) peut am´eliorer la pr´ecision des calculs. Cela a ´et´e montr´e par Hardt et Teller [HT96] dans leur syst`eme de radiosit´e de haute qualit´e. Dans leur cas, les surfaces de discontinuit´e sont juste intersect´ees avec les polygones de la sc`ene pour la subdivision, et l’information de visibilit´e port´ee par la surface critique n’est pas utilis´ee. De plus les surfaces critiques EEE ne sont pas trait´ees. Grˆace au squelette de visibilit´e, le maillage de discontinuit´e global complet peut ˆetre calcul´e efficacement pour toute paire de surface.

(a) (b)

FIG. 3.17:(a) Maillage de discontinuit´e par rapport `a la source de droite. (b) Maillage de discontinuit´e cr´e´e par la lampe sur la table.

(a) (b)

FIG. 3.18:(a) Liste des bloqueurs entre le sol et la lampe de gauche. Remarquons que les objets sur la table ne sont pas d´eclar´es bloqueurs bien qu’ils appartiennent `a l’enveloppe convexe du sol et de la lampe. (b) Limites de l’occultation caus´ee par une partie de l’avion entre l’´ecran d’ordinateur et le mur de droite.

Consid´erons un polygone ficomme source lumineuse et un polygone fjcomme r´ecepteur. Les surfaces de discontinuit´e caus´ees par fisur fjcorrespondent, d’une part, aux arcs du squelette qui ont un g´en´erateur sur la source fiet une extr´emit´e sur fjet d’autre part, `a ceux qui ont une extr´emit´e sur fiet une sur fj. Cette derni`ere cat´egorie correspond exactement aux arcs stock´es dans la case du tableau index´ee par fiet fj(ou dans le nœud de l’arbre de recherche correspondant `a fiet fjpour la structure am´elior´ee). La premi`ere cat´egorie correspond

`a des arcs stock´es dans la ligne du tableau index´ee par fj. Ils peuvent ˆetre trouv´es grˆace aux arbres de recherche de mani`ere similaire `a l’extraction de vue.

Cependant, dans le cas du calcul de vue, un seul type de g´en´erateur est recherch´e (un sommet) et un arc EV ne peut ˆetre g´en´er´e que par un seul sommet ; alors que pour le maillage de discontinuit´e, un arc EEE est engendr´e par trois arˆetes. L’´enum´eration des arcs pertinents ne se ram`ene plus `a une simple recherche sur la premi`ere clef dans l’arbre de recherche. Des arbres de recherche multi-crit`eres pourraient ˆetre utilis´es, mais nous avons choisi une approche plus simple.

Nous ajoutons un tableau `a deux entr´ees, DM(i; j), qui stocke tous les arcs ayant un g´en´erateur sur fiet une extr´emit´e sur fj. Pour extraire le maillage de discontinuit´e entre fiet fjnous acc´edons simplement `a DM(i; j) et `a la case du tableau stockant les arcs ayant pour extr´emit´es fiet fj, et nous consid´erons les arcs contenus. La

figure 3.17(a) montre le maillage de discontinuit´e entre la source et le sol (extrait en 28.6 ms). Le maillage cr´e´e par la petite lampe sur le bureau de la figure 3.17(b) est calcul´e en 1.3 ms (rappelons que l’arrangement n’est pas construit).

Le tableau suppl´ementaire DM(i; j)est bien entendu remplac´e par des arbres de recherche stock´es au ni-veau des polygones dans le cas de la structure am´elior´ee. Il se r´ev´elera particuli`erement utile pour la simulation de l’´eclairage, car il permet de conserver toute l’information pertinente pour un transfert de lumi`ere au niveau des polygones concern´es.

5.4 Liste exacte de bloqueurs, d ´etection d’occultation

Pour traiter l’interaction entre deux faces fiet fj, il est courant d’avoir besoin de la liste des bloqueurs qui cachent une face depuis l’autre. C’est en particulier le cas de l’approche de maintenance de liste de bloqueurs de Teller et Hanrahan [TH93].

Le squelette de visibilit´e permet l`a aussi de r´epondre `a cette requˆete de mani`ere exacte et efficace. Nous utilisons la case du tableau initial contenant les arcs ayant pour extr´emit´es fiet fj, ainsi que la case DM(i;j), et parcourons les arcs correspondants. Tous les polygones contenant un g´en´erateur d’un tel arc sont des bloqueurs.

Il est important d’observer que nous obtenons la liste exacte des bloqueurs, par opposition aux autres m´ethodes.

Par exemple, la figure 3.18(a) montre les bloqueurs entre la lampe et le sol, extraits en 4 ms.

Les m´ethodes `a base de “tubes” (shaft) [HW91] consid´ereraient tous les objets sur la table comme blo-queurs, alors qu’ils sont occult´es par la table.

Lors de la construction du squelette de visibilit´e, nous calculons en fait ´egalement les paires d’objets mutuellement visibles : si deux objets se voient, il y aura au moins une droite poignardante extrˆeme qui les touchent, eux ou leurs sommets ou arˆetes. Ce r´esultat est tr`es int´eressant pour la radiosit´e hi´erarchique puisque cela ´evite de simuler l’interaction entre objets mutuellement invisibles lors de la phase d’´etablissement des liens initiaux.

De mˆeme, le squelette permet la d´etection des occultations caus´ees par un objet donn´e. Cela peut se r´ev´eler important dans le cas du mouvement d’un objet m en simulation de l’´eclairage pour d´etecter les facteurs de forme qui doivent ˆetre recalcul´es. Pour savoir si un facteur de forme Fi jdoit ˆetre mis `a jour, nous effectuons une requˆete semblable au maillage de discontinuit´e entre deux polygones. Nous parcourons la cellule corres-pondante du tableau ainsi que DM(i;j), et v´erifions si un arc est g´en´er´e par un ´el´ement de m. Cela nous donne les limites de l’occultation due `a m entre fiet fj. De plus, en parcourant tous les arcs du squelette de visibilit´e, et en trouvant ceux engendr´es par m, nous obtenons la liste exacte de tous les facteurs de formes `a mettre `a jour et non un surensemble. La figure 3.18(b) montre les limites des occultations caus´ees par une partie de l’avion entre l’´ecran et le mur de droite. Ce calcul a n´ecessit´e 1.3 ms.