modélisation géométrique à laide dun maillage polygonal consiste à représenter « lenveloppe...

Post on 04-Apr-2015

106 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Modélisation géométrique à l’aide d’un maillagepolygonalConsiste à représenter « l’enveloppe » des objets grâce à un ensemble defacettes polygonales.

Pourquoi ?la facilité avec laquelle on peut représenter et transformer des polygonescalculer la normale à un polygone, afficher un polygone,appliquer un modèle de rendu réaliste, etc.

DéfinitionUn maillage polygonal comprend une liste de polygones.À chaque facette polygonale est associée une direction normale au plande cette facette. Cette normale est orientée vers l’extérieur du solide. Le vecteur normal est essentiel lorsqu’on veut évaluer l’intensitélumineuse en un point d’un solide.

Pour faire en sorte qu’un modèle de rendu réaliste soit plus facile àappliquer, une normale est associée à chaque sommet d’une facettepolygonale plutôt qu’à chaque facette.

1 er cas : une surface polyédrique

À un même sommet peut être associé des normales différentes selon lafacette auquel ce sommet appartient.

Pour déterminer la normale à chaque sommet d’une facette, il s’agit decalculer la normale unitaire au plan de la facette.

Il s’agit de considérer 3 sommets adjacents à la facette, V1, V2 et V3

alors la normale est obtenue comme suit : (V1 - V2) x (V3 - V2)

puis, normalisée par la suite.

2 ième cas : une surface courbe

Il s’agit de faire en sorte que la surface soit « unie », i.e. que la frontièrede 2 facettes voisines ne puisse être identifiée facilement.

Pour y arriver, au sommet V commun de la facette F1 et de la facette F2

est associé une même normale n.

Cette normale n correspond à un vecteur perpendiculaire à la surfaceen ce point.

3 ième cas : une moyenne des normales

Au sommet V commun de la facette F1 et de la facette F2 est associéune même normale n qui coïncide avec la moyenne des normales desfacettes F1 et F2.

Définition de la normale à un sommet

void glNormal3{bsidf}(TYPE nx, TYPE ny, TYPE nz);

void glNormal3{bsidf}v(const TYPE * v);

Vous pouvez spécifier des normales de toute longueur, mais au final, elles devrontprendre une longueur de 1 avant le lancement des calculs d’éclairage.

Les vecteurs normaux restent normalisés aussi longtemps que les transformationsde votre modèle ne comprennent que des rotations et des translations.

Vous pouvez demander à OpenGL de normaliser automatiquement vos normales :après les transformations : glEnable(GL_NORMALIZE);

Si vous déclarez des normales de longueur unitaire et que vous effectuiez une miseà l’échelle uniforme (même facteur d’échelle à x, y et z), vous pouvez employer :

glEnable(GL_RESCALE_NORMAL);pour normaliser plus efficacement les normales après transformation.

Par défaut, les opérations de normalisation sont désactivées.

ConclusionDans un système graphique 3D, on retrouve habituellement une classepermettant de définir un maillage polygonal représentant une surface.

Pour afficher un objet représenté à l’aide d’un maillage, nous aurons :for (chaque facette f du maillage){

glBegin (GL_POLYGON);for (chaque sommet v de la facette f){

glNormal3f(coordonnées de la normale au sommet v);glVertex3f(coordonnées du sommet v);

}glEnd();

}Lorsque nous définirons des nouvelles classes de surfaces, desfonctions devront être disponibles pour approximer ces surfaces enmaillages polygonaux.

uv

top related