Sujet de Master 2008-2009
Voyage dans un volume procédural

Responsable

Fabrice NEYRET   -   équipe AERIS(ARTIS), LJK, à l'INRIA-Montbonnot

Contexte

Les textures procédurales -ou "fonctions de bruit"- de Perlin sont universellement utilisées en synthèse d'image: une simple fonction continue pseudo aléatoire hiérarchique permet d'imiter les motifs ou les reliefs d'énormément de matériaux (bois, marbre, eau, nuages, surfaces rugueuses...) à la volée, à partir d'une poignée de paramètres. Au delà des textures de couleur et d'aspect de surface (bump), elles servent aussi à sculpter des formes, et même du mouvement (pseudo-turbulence). En pratique, si l'on peut utiliser le bruit "pur", on s'en sert souvent aussi pour enrichir en détails des données explicites existantes (qu'il s'agisse de couleur, forme, mouvement).
Après son succès en production d'effets spéciaux, son usage se répand maintenant dans les applications temps-réel (jeux vidéos, simulateurs...), grace à la programmabilité des GPU. En particulier, nous l'utilisons pour engendrer à la volée les détails de nos volumes (nuages, avalanches, explorations biologique), notre objectif général étant l'exploration temps-réel haute-qualité de scènes volumiques très vastes et détaillées.

Hélas, si l'utilisation de cette famille de fonctions est relativement intuitive, ses propriétés sont approximatives, et l'aspect des motifs générés difficilement contrôlables (ie, finement prévisible). De plus elles peuvent s'avérer couteuses: évaluée aveuglément en tous les voxels d'un volume, sont coût devient prohibitif.
Quelques travaux récents se sont intéressés à obtenir un meilleur contrôle du spectre de la texture générée, ou encore à contrôler l'orientation des motifs, mais dans l'ensemble il y a très peu de travaux, et tout le monde utilise encore la fonction décrite dans l'article fondateur de 1985 (voir liens dans le texte, et biblio plus bas).

Au delà du "bruit", on s'intéresse à tout ce qui permet d'enrichir en détails et de "tuner" à la volée l'aspect des données enrichies (voxels, couleur, voire mouvement): typiquement, un volume basse résolution de voxels de densités (ie, niveaux de gris) est enrichi en détails, puis "shapé" par une fonction type sigmoide, puis converti en couleurs par des fonctions de transfert, puis illuminé (ce qui suppose d'estimer son gradient local). On obtient ainsi un objet de tres haute résolution apparente, réglable et explorable dynamiquement. Mais bien des problèmes théoriques ayant des conséquences pratiques graves sont jusqu'à maintenant totalement ignorés (cf ci dessous).

Description

Le but de ce stage vise à étudier les propriétés puis adapter fonctions et algorithmes de bruit procédural afin de les rendre plus utilisables et compatibles avec l'exploration temps-réel de volumes procéduraux très vastes et détaillés, et d'étendre les possibilités de ces fonctions de bruit. Ceci comprend le bruit lui-même, mais aussi toute la chaîne de transformations conduisant à l'image finale (i.e. amplification, et fonctions a posteriori). Voici les principales pistes que nous envisageons à terme. L'ensemble dépasse bien sûr le temps d'un stage de Master, lequel s'attachera à explorer une partie d'entres elles. Comme on le voit, les pistes d'améliorations sont nombreuses, qu'il s'agisse de faire les calculs actuels plus efficacement, de les filtrer à meilleure qualité, ou d'étendre les fonctionnalités!

Références