GÉOMÉTRIE GRAPHIQUE ET NUMÉRIQUE



Documents pareils
Les algorithmes de base du graphisme

Synthèse d'images I. Venceslas BIRI IGM Université de Marne La

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

modélisation solide et dessin technique

05/09/2015. M Ponctualité : CM TD TP & Projet Æ En cas d absence : récupérer!!! 3 05/09/2015

TPs Architecture des ordinateurs DUT Informatique - M4104c SUJETS. R. Raffin Aix-Marseille Université romain.raffin-at-univ-amu.fr

Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR

Initiation à la librairie graphique VTK

Plan. Synthèse d'images et animation. Plan 08/04/ Introduction- La synthèse d'images au service du cinéma

Imagerie Numérique Synthèse d images. DUT Informatique Sébastien THON

TP Blender n 2 : Importation d un modèle SketchUp et animation

Réalité virtuelle au service de la maintenance

RIE LE RENDU THEO. 2 e trim ÉTAPE DE FINITION BOÎTE DE DIALOGUE. remarques

Fonctions de plusieurs variables

Calcul intégral élémentaire en plusieurs variables

Présent et futur dans la normalisation de la compression 3D

ANALYSE CATIA V5. 14/02/2011 Daniel Geffroy IUT GMP Le Mans

point On obtient ainsi le ou les points d inter- entre deux objets».

Analyse d images. Edmond.Boyer@imag.fr. Edmond Boyer UFRIMA 1

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

Géométrie discrète Chapitre V

GMIN 330 Nancy Rodriguez

Traitement bas-niveau

Deux disques dans un carré

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

Calculer avec Sage. Revision : 417 du 1 er juillet 2010

INTRODUCTION AU DATA MINING

Introduction au maillage pour le calcul scientifique

IFT3355: Infographie Sujet 6: shading 7 (illumination globale 4)

Programmation linéaire

Annexe commune aux séries ES, L et S : boîtes et quantiles

COURS EULER: PROGRAMME DE LA PREMIÈRE ANNÉE

Comment sélectionner des sommets, des arêtes et des faces avec Blender?

Chapitre 3 : Repères et positionnement 3D

Master IMA - UMPC Paris 6 RDMM - Année Fiche de TP

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS

Hiver 2013 IMN 259. Introduction à l analyse d images. Par Pierre-Marc Jodoin

Programme scientifique Majeure INTELLIGENCE NUMERIQUE. Mentions Image et Réalité Virtuelle Intelligence Artificielle et Robotique

Chapitre 5 : Flot maximal dans un graphe

PROJET DE MODELISATION CASERNE SERGEANT BLANDAN

Object Removal by Exemplar-Based Inpainting

Programme de la 1ère année

Projet de traitement d'image - SI 381 reconstitution 3D d'intérieur à partir de photographies

Intégrales doubles et triples - M

Image d un intervalle par une fonction continue

Géométrie Algorithmique Plan du cours

Fonctions de plusieurs variables

Cours 7 : Utilisation de modules sous python

FONCTIONS DE PLUSIEURS VARIABLES (Outils Mathématiques 4)

A Isabelle, à mes parents.

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Chapitre 2 Le problème de l unicité des solutions

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

BACCALAUREAT GENERAL MATHÉMATIQUES

Cours3. Applications continues et homéomorphismes. 1 Rappel sur les images réciproques

Polynômes à plusieurs variables. Résultant

8.1 Généralités sur les fonctions de plusieurs variables réelles. f : R 2 R (x, y) 1 x 2 y 2

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Fonctions de deux variables. Mai 2011

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

MIS 102 Initiation à l Informatique

Tp_chemins..doc. Dans la barre "arche 2" couleur claire 1/5 21/01/13

Mise en scène d un modèle dans l espace 3D

pcon.planner 6 Préparer et présenter une implantation en toute simplicité

Programmes des classes préparatoires aux Grandes Ecoles

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Big Data et Graphes : Quelques pistes de recherche

Manuel Utilisateur Logiciel PEB Partie modeleur version 2.5

Lecture graphique. Table des matières

Big Data et Graphes : Quelques pistes de recherche

SINE QUA NON. Découverte et Prise en main du logiciel Utilisation de bases

Présentation du Master Ingénierie Informatique et du Master Science Informatique , Année 2 Université Paris-Est Marne-la-Vallée

Mesurer les altitudes avec une carte

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Nomination persistante dans un modèle paramétrique. Identification non-ambiguë et appariement générique d entités topologiques.

FUSION DE CARTES DE PROFONDEURS EN PHOTOGRAMMETRIE ARCHITECTURALE

Mathématiques I Section Architecture, EPFL

Conservation des documents numériques

Chp. 4. Minimisation d une fonction d une variable

HP Designjet 3D Guide d utilisation

Synthèse d images Edmond Boyer

Echantillonnage Non uniforme

Cours d Analyse. Fonctions de plusieurs variables

REALISATION D UN MAILLAGE

G.P. DNS02 Septembre Réfraction...1 I.Préliminaires...1 II.Première partie...1 III.Deuxième partie...3. Réfraction

Éditorial. Tangente ÉDUCATION. Scratch, AlgoBox, Python. Trimestriel - n 15 - janvier 2011 Numéro spécial 16 activités TICE pour le lycée

Sillage Météo. Notion de sillage

Module HVAC - fonctionnalités

Exemple d application en CFD : Coefficient de traînée d un cylindre

LIDAR LAUSANNE Nouvelles données altimétriques sur l agglomération lausannoise par technologie laser aéroporté et ses produits dérivés

Introduction à. Version 4.4. Traduction et adaptation française.

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

Items étudiés dans le CHAPITRE N5. 7 et 9 p 129 D14 Déterminer par le calcul l'antécédent d'un nombre par une fonction linéaire

Sujet 1 : Diagnostique du Syndrome de l apnée du sommeil par des techniques d analyse discriminante.

Les nouveautés de Femap 11.1

Analyse statique d une pièce

Système binaire. Algèbre booléenne

Présentation du langage et premières fonctions

Transcription:

GÉOMÉTRIE GRAPHIQUE ET NUMÉRIQUE Modélisation de formes 3D Introduction Marie Samozino INRIA - Équipe GÉ GÉOMETRICA 2 1 Motivations Médical Histoire de l'art Jeu Motivations Ingé Ingénierie Données brutes Nuage de points Soupe de polygones Surfaces maillages Fonctions implicites Surfaces de subdivision Fonctions paramétriques (Spline, bezier,.) Plus généralement qu'est ce qu'un objet 3D? Suite des primitives géométriques Ensemble de courbes Fonction(s) Comment modéliser, visualiser sur un ordinateur? 3 Représentation d'objets 3D Qu'est ce qu'un cube? Les 8 sommets? Les 6 faces? Une fonction? Topographie Simulation Multimé Multimédia 4 Modélisation d'objets 3D Un objet 3D = un modèle Une géométrie Des attributs Des propriétés physiques, etc. Une camera Comment on obtient des objets 3D? Synthèse d'image Scanner 3D Reconstruction à partir d'images Structures de haut niveau CSG Graphes de scène 5 6 1

Exemple :Scanner 3D Exemple :Scanner 3D Acquisition Edition Recalage Fusion Simplification 7 8 Interpolation / Approximation Interpolation Surfaces Approximation 9 10 Représentation Surfacique Pourquoi des surfaces? Suffisante pour les objets opaques Surfaces Mathématiquement : une surface est une 2-Variété un espace topologique non vide où tout point possède un voisinage homéomorphe à un ouvert de R 2 Objets transparents -> volumes Simulation -> tout Caractéristiques A bords / sans bords Orientation Genre. Courtesy B.Cutler 11 12 2

Caractéristiques ristiques : Le bord Sans bord : homéomorphe a un disque en tout point. Caractéristiques ristiques : Non-Vari Variétés Non-Varieté : Existence de point ou la surface ne peut pas être localement un plan Avec bord : homéomorphe à un demi disque en tout point. 13 Courtesy Open Geometry 14 Caractéristiques ristiques : Orientation Notion d'intérieur et d'extérieur Caractéristiques : Décomposition cellulaire Le cercle Pas de classifications possibles La sphère + 2 x Le cylindre 15 Courtesy Open Geometry 16 Caractéristiques ristiques : Genre Le genre d'une surface connexe est le nombre maximum de courbes fermées simples sans points communs que l'on peut tracer à l'intérieur de cette surface sans la déconnecter Deux surfaces n'ayant pas le même genre ne sont pas homéomorphes Caractéristique : Équation d Euler une surface bornée sans bord orientable vérifie l équation d Euler avec v e + f = 2c 2g + t c = nombre de composantes connexes g = nombre de trous à travers l objet ou genre t = nombre de trous sur les faces v = nombre de sommets e = nombre d'arêtes f = nombre de faces caractéristique d Euler χ = v e + f 17 18 3

Représenter une surface Représentation d une surface Constructive Explicite z=f(x,y) Implicite f(x,y,z)=0 Paramétrique x=x(t,u),y=y(t,u), z=z(t,u) Polygonale/ Maillage 19 Représentation explicite 20 Représentation implicite Surface : { (x,y,z) R3/ f(x,y,z)=0 Surface : { (x,y,z) R3/ z=f(x,y) plan dans IR3: Ax+By+Cz+D=0 cercle dans IR2: x2 + y2 - r2 = 0 surfaces algébriques: f(x,y,z) = polynôme f(x)>0 Il peut être difficile de représenter une courbe en 3D sous une forme implicite Elle n'existe pas pour toutes les courbes Représentation du plan x=0? Intersection de deux surfaces: f(x, y, z) = 0 et g(x, y, z) = 0 f(x)=0 21 Repré Représentation implicite : Exemple f(x)<0 22 Discretisation Surface quadrique : équation algébrique implicite d une quadrique Q(x, y, z) = a1x2 + a2y2 + a3z2 + a4xy + a5xz + a6yz + a7x + a8y + a9z + a10 Manipulation des quadriques dans OpenGL Créer un objet de type quadrique à l aide de glunewquadric() Spécifier les attributs de l objet crée à l aide de: gluquadricorientation(), gluquadricdrawstyle(), gluquadricnormals(), gluquadrictexture () Spécifier le type de quadrique désiré à l aide des primitives: glusphere(), glucylinder(), gludisk() ou glupartialdisk(). OpenGL implémente ces objets à l aide d une approximation polygonale 23 Exploitation par des ordinateurs, le continu n'existe pas Discretisation Différents niveaux Approximation 24 4

Représentation paramétrique Courbe de Bézier Surface : { (x(t),y(t),z(t)) R 3 / t Ω Courbe (cubique): x(t), y(t), z(t) Surface ou patche (bicubique): x(s, t), y(s, t), z(s, t) Expression mathématique P N M ( u, v) = Pi, jbi, N ( u) B j, M ( v) i= 0 j= 0 P N,0 PN,M Définition à partir de points de contrôles. Exemples : Bezier, Splines,NURBS,. V 0 à t=0 V 1 V 3 V 2 V 4 V 5 à t=1 B k, p k p k ( w) = C w ( 1 w) p w compris entre 0 et 1 Étapes avec OpenGl k Définir l évaluateur P(u,v) Activer l évaluateur P 1,0 P 1,1 P 0,0 P 0,1 Calculer les points de la courbe P 0,M 25 26 Courbe de Bézier et OpenGl Définition d un évaluateur void glmap1{fd ( GLenum target, // plus bas TYPE u1, // valeur initiale du paramètre TYPE u2, // valeur finale du paramètre GLint stride, // Incrément entre x successifs GLint order, // ordre de la courbe = nb points const TYPE * points); // points de contrôle GLenum GL_MAP1_VERTEX_3 GL_MAP1_VERTEX_4 GL_MAP1_INDEX GL_MAP1_COLOR_4 GL_MAP1_NORMAL Courbes de Bezier Évaluer les points de la courbe void glevalcoord1{fd (TYPE u); // valeur du paramètre Exemple void AfficherFils ( Point3D_T *pts ) { int i; const int Ordre = 4; const int n = 30; glmap1f ( GL_MAP1_VERTEX_3, 0.0, 1.0, //u varie de 0.0 à 1.0 pour une courbe de Bézier 3, // incrément entre les x Ordre, // ordre de la Bézier = nb pts (GLfloat *) &pts[0]); // points de contrôle glenable ( GL_MAP1_VERTEX_3 ); glcolor3f ( Grey10 ); glbegin ( GL_LINE_STRIP ); for ( i = 0; i < n; i++) { // Évaluation de n points intermédiaires glevalcoord1f ( (GLfloat) i /n ); GL_MAP1_TEXTURE_COORD_1 GL_MAP1_TEXTURE_COORD_2 GL_MAP1_TEXTURE_COORD_3 glend(); GL_MAP1_TEXTURE_COORD_4 27 28 Courbes B-Spline et NURBS Expression mathématique : S N M ( u v) = Pi, jni, k ( u) N j, l ( v) k, l, i= 0 j= 0 Où k et l contrôle l ordre de la B-spline Courbes B-Spline et NURBS Étapes Créer un objet Nurbs avec glunewnurbsrenderer(); Définir les caractéristiques (si nécessaire) de la courbe (épaisseur du trait,. ) avec glunurbsproperty(); Enregistrer une fonction de rappel en cas d erreur avec glunurbscallback (); Commencer la courbe ou surface avec glubegincurve() ou glubeginsurface(); Générer la courbe ou la surface avec glunurbscurve() ou glunurbssurface(); Terminer la courbe ou la surface avec gluendcurve() ou gluendsurface(); 29 30 5

Courbes B-Spline Exemple : void AfficherFils1 ( Point4D_T *pts ) { const int Ordre = 4; const int Degre = Ordre - 1 ; GLfloat VecteurNodal[] = { 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0; GLUnurbsObj *Fils = glunewnurbsrenderer(); glunurbscallback ( Fils, GLU_ERROR, NurbsErreur ); glubegincurve ( Fils ); glunurbscurve ( Fils, Ordre + Degre + 1, VecteurNodal, 4, (GLfloat *) &pts[0], Ordre, GL_MAP1_VERTEX_3); gluendcurve ( Fils); 31 Représentation polygonale Surface : ensemble de petits patch de surfaces Maillages 32 Les maillages Un maillage Données: géométrie Connectivité Propriétés: Variété Topologie arbitraire Connectivité irrégulière Echantillonnage non uniforme 33 34 Géométrie Connectivité (combinatoire) 35 36 6

Degré / valence Dualisation degré degré 5 primal dual valence 4 37 Primal / dual 38 Régularité / triangles 39 Régularité / polygones 40 Attributs - e.g. couleur index de couleur par sommet 41 42 7

Attributs, e.g. coord.. texture Structures de données u,v par sommet 43 44 Structure de données Primitives: sommets arêtes faces (degré) Structure simple (sans arêtes) Triangle // ses sommets vertex *vertices[3]; // faces voisines triangle *nfaces[3]; Relations d'incidence: simples demi-arêtes, etc. Vertex double coordinates[3]; // sommets voisins array<vertex> nvertices; // faces incidentes array<triangle > nfaces; 45 46 Structure de donnée e basée e sur des demi arêtes Requiert: Surface orientée Orientation des faces (sens des aiguilles d'une montre) 1 arête 2 flèches Demi-arêtes Demi arête: arête orientée Idée: sommet incident considérer plusieurs manières d'accéder à une arête : Demi arête suivante Demi arête précédente Demi arête opposée Sommet de départ Face demi arête suivante demi arête opposée demi arête face incidente demi arête précédente 47 48 8

Demi-arêtes Géométrie: Sommets Connectivité: demi-arête (seulement!) Attributs: Sommets Demi arêtes Faces Attributs Par primitive: face sommet arête demi-arête (~coin) wedge Exemples: couleurs, normales, dureté, coordonnée de texture, matériau 49 50 Structure de donnée «halfedge» Maillages surfaciques Vertex double coordinates[3]; //une demi arête adjacente HalfEge h; Face //une demi arête adjacente HalfEge h; //coordonnées de la normale double normal[3]; //Plan support Plane p; HalfEdge //Sommet origine Vertex v; //Les arêtes opposée, suivante, précédente HafEdge h_opposite, h_next, h_prev; //La face incidente Face f; sommet incident demi arête suivante demi arête opposée demi arête face incidente Formats: ASCII vs binaire Primitives indépendantes Indexés Bandes de triangles Compressés Autres... demi arête précédente 51 52 Primitives indépendantes Formats indexés e.g. OFF / VRML Sommets Faces (géom ométrie) (connectivité) v1 (x1;y1;z1) f1 (v1( v1;v3;v2) v2 (x2;y2;z2) f2 (v4;v3;v1 v1) face: x1 y1 z1 x2 y2 z2 x3 y3 z3 v3 (x3;y3;z3) v4 (x4;y4;z4) v5 (x5;y5;z5) v6 (x6;y6;z6) f3 (v4;v1 v1;v5) f4 (v1( v1;v6;v5) f5 (v6;v1 v1;v7) f6 (v2;v7;v1 v1) Duplication des sommets 53 v7 (x7;y7;z7) f7 ( )( 54 9

Bandes de triangles Calculs et Affichages 55 56 Normales : par face ou par sommet? Normales Normale à une surface: définition par face n c n = (b a) (c a ) b a Une surface? seulement une approximation 57 Normales : par coin? {sommet;face Condition d'unicité: C1-différentiabilité 58 Normales : par secteur (wedge)? Normales multiples 59 60 10

Application : Illumination Illumination en un point = résultat de l'interaction scène / lumière Calcul de l'intensité d'un point Cas simple : Ombrage constant sur un polygone La couleur d'un point dépend: position du point orientation (liée / géométrie de la surface) propriété interaction lumière / matière sources de lumières Source V N L e i Caméra L. N = cos i Orientation connaissance de la normale intérêt : une seule couleur par polygone. inconvénient : des discontinuités à chaque arête. 61 62 Interpolation de l illuminationl Interpolation de Gouraud Calculer la couleur pour chaque sommet, puis on interpole Interpolation de Gouraud Normale d un sommet : Moyenne des normales aux polygones voisins du sommet Quelle est la normale d un sommet? Si la surface de départ est analytiquement connue, on extrait les normales Si la donnée de départ est un maillage polygonal? 63 64 Interpolation de Gouraud Quand on a la normale à un sommet : Calcul de la couleur pour ce sommet Puis interpolation suivant chaque scanline : V1 scanline Interpolation de Phong Au lieu d interpoler les couleurs, on interpole les normales Sur chaque arrête Sur chaque scanline Plus lent que Gouraud, mais nettement plus beau V3 Permet de calculer les effets spéculaires contenus dans une facette V2 65 66 11

Illumination : Exemple Illumination : Exemple Création de la lumière et des matériaux Affichage d une facette : void initcontext (void) { //Lumière GLfloat specular[] = { 1.0,1.0,1.0,1.0 ; GLfloat shinines[] = { 50.0 ; GLfloat l_pos[] = { 1.0,1.0,1.0, 0.0 ; //Matériaux glmaterialfv(gl_front,gl_specular,specular); glmaterialfv(gl_front,gl_shininess,shinines); //Eclairage de la scene gllightfv(gl_light0,gl_position,l_pos); glenable(gl_lighting); glenable(gl_light0); //Initialisation Depth-buffer gldepthfunc(gl_less); glenable(gl_depth_test); 67 void gl_draw_facet( Facet_handle hfacet, const bool smooth) { glbegin(gl_polygon); if(!smooth){ //une normale par facette const Facet::Normal_3& normal = hfacet->normal(); glnormal3f(normal[0],normal[1],normal[2]); Halfedge_around_facet_circulator he = hfacet->facet_begin(); do{//une normale par sommets if(smooth){ const Vertex::Normal_3& normal=he->vertex()->normal(); glnormal3f(normal[0],normal[1],normal[2]); const Point& p = he->vertex()->point(); glvertex3d(p[0],p[1],p[2]); if (smooth) while(++he!= hfacet->facet_begin()); glshademodel(gl_smooth); glend(); else glshademodel(gl_flat); 68 TP2 : Enfin de la 3D Initialisations Glut, caméra, contexte de rendu. TP : Enfin de la 3D Maillage Création d une structure de donnée Affichage Interactions dans l affichage 69 70 Standard Template Library Iterators Intérêt : Avoir une implémentation unique, indépendante du type d objet quelle contient. Le parcours d une liste se fait à l aide d itérateurs. #include <list> std::list<int> v; //Déclaration de la liste v.push_back(3); // 3 v.push_front(5); // 5 3 Type T : int, Sommet, Face, Élément de type T std::list<int> v; //Déclaration de la liste std::list<int>::iterator it; //Déclaration de l itérateur for( it = v.begin(); it!= v.end(); it++) //On incrémente l itérateur { int x = *it; //Récupération de l élément courrant begin end 71 it-- it it++ 72 12