L3IF Images
année 2004-2005
http://www710.univ-lyon1.fr/~jciehl/

TD2 - Modélisation



    L'approche naturelle pour une application openGL consiste à décrire la surface des objets sous forme de maillages composés généralement de triangles. La plupart des modeleurs permettent de créer ce type de représentation. L'affichage est ensuite particulièrement simple : un seul appel à glDrawElements suffit dans la plupart des cas.

    Nous allons nous interesser aujourd'hui à une autre représentation : les surfaces implicites ainsi que leur visualisation avec openGL.

Partie 1 : Surfaces implicites et potentiels

    Dans sa forme la plus simple, une surface implicite est générée par un point, une fonction et un seuil. Par exemple :
F(x,y,z) = x2 + y2 + z2 + C

    L'ensemble des points tels que F(x, y, z) = S, un seuil, définissent la surface implicite générée par (0, 0, 0), F et le seuil S. Dans ce cas, la surface sera une sphère.

    S'il est immédiat de choisir un point, une fonction et un seuil, il est par contre plus difficille de visualiser ce type de surface. Il y a deux solutions envisageables : mailler la surface ou construire une énumération spatiale. La solution la plus simple à mettre en oeuvre pour un type quelconque de fonction est sans doute l'énumération spatiale.

    Lorsque l'on définit plusieurs points, il est possible de décrire des objets assez surprenants de manière très simple.

    Plus formellement :
    soit Pi(xi, yi, zi), un générateur définit par un point (xi, yi, zi) et une fonction Fi(x, y, z).

    soit F(x, y, z) la somme des n fonctions Fi(x, y, z) associées à chaque générateur. Une surface est définie par l'ensemble des points vérifiants F(x, y, z) = S, pour S un seuil fixé.

    Les fonctions Fi(x, y, z) sont construites par composition d'une fonction de distance di(x, y, z) et d'une fonction de potentiel fi(d). La fonction de distance définit la relation entre un point quelconque P(x, y, z) et un générateur Pi(xi, yi, zi). La fonction de potentiel fi(d) définit le potentiel associé à une distance.

    Construire un objet revient à choisir une fonction de distance, une fonction de potentiel et un ensemble de points générateurs. Il est également assez simple d'utiliser d'autres éléments géométriques comme générateurs : segment, polygone, tant qu'il est simple de calculer la distance entre un point et le générateur.
    On peut utiliser la distance euclidienne pour di(x, y, z)= distance entre Pi(xi, yi, zi) et (x, y, z), et f(d)= .5 exp(p - 4pd2). Le paramètre p permet de régler la pente de la fonction pour d=.5 et de modifier l'aspect de la surface.


    Parcourez l'article "Extended Field Functions for Soft Objects" (partie1 partie2) pour plus de détails et des exemples de générateurs et d'objets engendrés. L'article précise également un algorithme dans le cas 2D, pour vous aider à comprendre le principe de calcul.

    Il est également possible de définir la manière dont plusieurs fonctions se mélangent et de se rapprocher des notions ensemblistes d'union, d'intersection ... cf. http://pages.cpsc.ucalgary.ca/~blob/pdf/barthecsg.pdf


Partie 2 : Visualisation par énumération spatiale

    L'idée est de construire un ensemble de cellules (régulières ou non) représentant le volume d'un objet ou sa surface. Construisez, dans un premier temps, une grille régulière englobant une surface implicite à visualiser. Il suffit de parcourir toutes les cellules de la grille et de ne retenir que celles dont les 8 sommets appartiennent à l'objet implicite (F(x, y, z) < S, par exemple).

    Une approche hiérarchique sera certainement plus efficace. Le principe de construction d'un octree est identique à celui de la grille régulière. Un noeud est retenu lorsque ses 8 sommets appartiennent à l'objet implicite. Il faudra alors descendre dans la hiérarchie récursivement jusqu'au niveau de représentation souhaité.

    Vous pouvez appliquer ce principe à la visualisation d'un objet implicite ou essayer de mailler directement sa surface (cf. documents).

Documents :

    Que sont les F-Rep ?

    Aurélien Barbier  Mémoire de DEA
    Eric Galin

    Christophe Schlick 
       Introduction aux surfaces implicites partie1 partie2
       Implicit Sweep Object  

    Manipulations ensemblistes

    Maillage adaptatif d'objets implicites