• Aucun résultat trouvé

Malgré l’accélération due à notre modèle, une scène complexe calculée par lancer de rayons devient vite très coûteuse en temps de calcul. Diminuer ces temps de calcul est intéressant dans le cadre d’applications de mise au point ou de rendu interactif : pour un artiste il est commode de disposer d’un aperçu du résultat rapidement. Pour ceci, une des possibilités à étudier est le calcul parallèle.

Nous avons parallélisé [MC01] notre lancer de cônes (cf. annexe B) suivant un schéma de parallélisation classique, i.e. en découpant une animation ou une image en sous-parties de manière à distribuer les tâches. Notre première machine de test a été une ×ÙؽڽÛ{Ü Infinite Reality avec 6 processeurs (MIPS R12000 à 400MHz), puis nous avons effectué le portage de l’application sur une grappe expérimentale de PC6. Les résultats de cette parallélisation sont quasi-linéaires sur les deux plates-formes : avec 6 processeurs une animation est calculée 6 fois plus vite et une image 5.9 fois plus vite. En performance absolue la grappe de 12 PC est environ 30% plus rapide que l’Onyx avec 6 processeurs. La différence se situe donc au niveau du coût financier des deux machines : l’Onyx coûte à peu près quatre fois le prix d’une telle grappe. On en conclue que pour une application comme la notre, où l’algorithme est fortement parallélisable, l’investissement dans une grappe de PC est un choix à envisager. Consulter l’annexe B pour plus de détails.

FIG. 4.13 – Une scène de 1000 arbres.

6Nous avons utilisé la grappe de l’équipe SIRAC composée de 12 PC Pentium II (450MHz) sous Linux, disposant du module expérimentale SciFS (developpé par Emmanuel Cecchet) offrant une mémoire partagée distribuée facilitant la gestion de la mémoire pour des applications distribuées.

6. CONCLUSION ET PERSPECTIVES 97

6 Conclusion et perspectives

Nous avons introduit un ensemble de trois shaders capables de représenter à différents niveaux (aiguilles, cônes et rameaux) les effets cumulés des niveaux inférieurs sans avoir à les échantillon-ner, en tenant compte de l’auto-ombrage interne ainsi que de la visibilité. Comme toutes nos intégrations sont analytiques, nous pouvons produire des images de qualité (en particulier avec peu d’aliassage) et ce, rapidement. D’un point de vue théorique, nous aimerions améliorer les ap-proximations faites. Il serait, par exemple, intéressant de lever l’hypothèse d’un albédo faible en substituant une loi polynomiale à l’approximation linéaire.

Les paramètres des shaders nous permettent de simuler différents types de conifères (pins, sa-pins, etc.) et de moduler les caractéristiques d’un arbre (par exemple pour simuler l’effet du vent). Nous avons été capables d’intégrer ces shaders parce les objets de notre étude sont très structu-rés. Réciproquement, l’usage massif de cette connaissance a priori, fait que ces trois shaders ne peuvent simuler que des branches composées d’aiguilles. Dans la nature, de nombreux objets sont composés d’une unique sorte de structure, ou présentent des similarités, il est donc possible d’in-tégrer analytiquement leur shader. La prochaine étape pour nous serait de simuler d’autres types d’arbres, pour lesquels la structure est plus stochastique (concernant la distribution et l’orienta-tion des feuilles). Il serait aussi intéressant de gérer des structures plus grandes en nombres de primitives, comme un ensemble de rameaux, voire un arbre entier.

FIG. 4.14 – En haut : trois arbres, depuis un point de vue proche jusqu’à un point de vue lointain. À gauche : 100

Troisième partie

Modèle hiérarchique à base d’images

pour le rendu interactif de forêts avec

illumination et ombrages [MNP01]

CHAPITRE 5

Modèle à base d’images avec

illumination et ombrage

Le rendu des nombreux arbres d’un paysage est particulièrement coûteux. Le nombre impor-tant de détails visibles, la complexité de l’illumination (micro-ombrage d’une branche sur une autre, illumination du ciel, etc.) et de la situation en terme de visibilité (les bloqueurs sont très nombreux et de petites tailles) font que bien souvent le modèle simpliste de billboard est utilisé pour des applications temps réel (cf. chapitre 2 section 2.3.1). Malheureusement ce modèle ne permet pas un réalisme géométrique et photométrique poussé.

Les deux aspects entrant en compte dans le calcul de la couleur d’un objet sont l’illumination (“réaction” de l’objet à la lumière), et l’ombrage (quantité de lumière arrivant sur l’objet sans être bloquée) qui correspond à un problème de visibilité. La nouvelle représentation que nous introduisons dans ce chapitre est inspirée par l’idée des billboards à laquelle nous associons une

fonction bidirectionnelle de texture (cf. chapitre 2 section 1.1.7) afin de gérer l’illumination et

d’améliorer l’effet 3D. Pour les problèmes de visibilité liés à l’ombrage, nous introduisons une structure de données inspirée des cartes d’horizon (cf. chapitre 1 section 2.2.3) et des cellules de visibilité (cf. chapitre 1 section 2.2.1). Notre but est d’obtenir une impression visuelle plus réaliste, avec une gestion de l’illumination et de l’ombrage dans des temps de calcul permettant l’interactivité, y compris pour la prise en compte du changement d’éclairage.

Ce chapitre est découpé en quatre parties : en section 1, nous traiterons de notre représentation à base de billboards et de BTF , nous détaillerons à la section 2 notre structure de visibilité pour l’ombrage, puis nous proposerons en 3 une technique pour traiter les ombres au sol et nous finirons en 4 par les résultats.

1 Billboard et fonction bidirectionnelle de texture

La nouvelle représentation que nous introduisons dans cette section est dérivée de l’associa-tion d’une foncl’associa-tion bidirecl’associa-tionnelle de texture (Bidirecl’associa-tional Texture Funcl’associa-tion, ou BTF) avec une représentation basée sur l’image inspirée des billboards. Nous voulons améliorer le concept de

billboard en remédiant à l’absence de relief et de parallaxe qui le caractérise et en introduisant la

prise en compte de l’illumination.

Nous présentons en 1.1 la technique de construction d’une BTF, puis nous verrons en 1.2 comment utiliser ces données au moment du rendu.

1.1 Construction d’une BTF