Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Octree et maillages Modélisation Géométrique
2
Plan Représentation par octree Modèle B-Rep Un peu d'histoire
Octree régulier et adaptatif Représentation surfacique et volumique d'un objet 3D Modèle B-Rep Un peu d'histoire Les maillages Définition et propriétés Dualité maillage fermé et maillage 2-Manifold Formule d'Euler Représentations internes 3 représentations optimisées pour l'espace mémoire 2 représentations optimisées pour le parcours du maillage Visualisation OpenGL Modélisation Géométrique
3
Octree régulier Comme son nom l'indique, un octree est un arbre à huit branches. Un octree régulier subdivise de façon récursive un volume cubique en huit sous-cubes de tailles égales. Les feuilles de l'octree sont appelées des « voxels ». 5 6 1 2 7 4 3 noeuds voxels Modélisation Géométrique
4
Octree adaptatif Dans un octree adaptatif, la profondeur de chaque branche peut être de taille différente, ceci permet de subdiviser l'espace de départ de façon irrégulière. 5 6 1 2 7 4 3 noeuds voxels Modélisation Géométrique
5
Illustration sur un quadtree
Un quadtree est un arbre à quatre branches. C'est l'équivalent de l'octree en deux dimensions. Dessinez les feuilles du quadtree adaptatif de profondeur quatre représentant l'objet ci-dessous. Représentez le quadtree sous forme d'arbre en supposant que l'on a une représentation « volumique » de l'objet (ne développez que la 1ère branche). Modélisation Géométrique
6
Représentation surfacique par octree
Octree régulier : on subdivise jusqu'à la précision souhaitée et soit la cellule n'est pas sécante à la surface et la feuille est vide (valeur 0 par exemple), soit elle est sécante et la feuille est pleine (valeur 1 par exemple). Octree adaptatif : soit la cellule n'est pas sécante à la surface : c'est une feuille vide de l'octree, soit la cellule est sécante à la surface : si on est au niveau de précision désiré, c'est une feuille pleine de l'octree, sinon, c'est un noeud qui va être subdivisé. Modélisation Géométrique
7
Représentation volumique par octree
Octree régulier : on subdivise jusqu'à la précision souhaitée et soit elle est sécante et la feuille est pleine (valeur 0 par exemple)., soit elle est à l'intérieure de l'objet et elle vaut 1 par exemple, soit elle est à l'extérieure de l'objet et elle vaut -1 par exemple. Octree adaptatif : soit la cellule est sécante à la surface : si on est au niveau de précision désiré, c'est une feuille pleine de l'octree, sinon, c'est un noeud qui va être subdivisé, soit la cellule n'est pas sécante à la surface : c'est soit une feuille « extérieure », soit une feuille « intérieure ». Modélisation Géométrique
8
Octree : +/- Les + Représentation hiérarchique de l'objet : il peut être affiché à différentes résolutions. Possibilité de représentation volumique. Simplicité de positionnement d'un volume par rapport à l'objet : sécant ou non (éventuellement intérieur/extérieur). Construction et parcours récursifs simples. Les - Visualisation surfacique des voxels ? Rendu temps réel pour des scènes complexes ? Coup de stockage excessif. Modélisation Géométrique
9
B-Rep quelconque B-Rep Solide
Modèle B-Rep Boundary-Representation Un modèle est représenté par ses bords Pas de notion de volume On peut représenter des solides B-Rep quelconque B-Rep Solide Modélisation Géométrique
10
B-Rep solide Test intérieur / extérieur sur un solide :
Nombre pair d’intersections : le point P est à l’extérieur du solide Nombre impair d’intersections : le point P est à l’intérieur du solide P P Modélisation Géométrique
11
Un peu d'histoire La légende raconte que, 800 ans avant J.-C., les Etrusques jouaient déjà avec des dodécahèdre réguliers (12 faces). Les pythagoriciens, 450 ans avant J.-C., connaissaient le cube et le tétraèdre. C'est vers 400 ans avant J.-C. que Platon et ses disciples parlent de 5 polyèdres réguliers: le tétraèdre, le cube, l'octaèdre, le dodécaèdre et l'icosaèdre (20 faces). Dans la phylosophie platonicienne, chacun d'eux etait associé symboliquement au Feu, à la Terre, à l'Air, l'Eau et l'Univers. Modélisation Géométrique
12
Les solides platoniques
Polyèdre réguliers = Polyèdre convexe inscrit dans une sphère dont toutes les faces sont identiques Toutes les faces sont des polygones réguliers convexes isométriques Tous les sommets ont la même valence (même nombre d'arêtes incidentes) Pourquoi? Combien y en a t il? A quoi ressemblent-ils? Modélisation Géométrique
13
Les maillages Modélisation Géométrique
14
Les maillages Un complexe linéaire par morceaux : les surfaces sont représentées avec des polygones. Le simplexe pour une face est le triangle. La continuité globale est C0 (discontinuité de normales au niveau des arêtes) . Ils définissent la géométrie tout en donnant une topologie de la surface C'est actuellement une structure standard pour afficher des scènes complexes en 3D Leur visualisation et leur manipulation est optimisée par la grande majorité des cartes graphiques actuelles. Modélisation Géométrique
15
Propriétés topologiques des maillages
Dualité maillage fermé et maillage 2-manifold Formule d'Euler Modélisation Géométrique
16
Dualité Chaque entité du maillage primal de dimension k est remplacé par une entité de dimension (2-k) dans le maillage dual: Chaque face (dim 2) est remplacée par un point (dim 0), les arêtes gardent leur dimension et les points sont remplacés par des faces. Pour créer la géométrie du maillage dual, on place un point au barycentre de chaque face et on connecte deux point par une arrête si les faces dont ils sont issus sont adjacentes dans le maillage primal. Modélisation Géométrique
17
Dualité Chaque entité du maillage primal de dimension k est remplacé par une entité de dimension (2-k) dans le maillage dual: Chaque face (dim 2) est remplacée par un point (dim 0), les arêtes gardent leur dimension et les points sont remplacés par des faces. Pour créer la géométrie du maillage dual, on place un point au barycentre de chaque face et on connecte deux point par une arrête si les faces dont ils sont issus sont adjacentes dans le maillage primal. Les faces sont remplacées par leur centre Modélisation Géométrique
18
Dualité Chaque entité du maillage primal de dimension k est remplacé par une entité de dimension (2-k) dans le maillage dual: Chaque face (dim 2) est remplacée par un point (dim 0), les arêtes gardent leur dimension et les points sont remplacés par des faces. Pour créer la géométrie du maillage dual, on place un point au barycentre de chaque face et on connecte deux point par une arrête si les faces dont ils sont issus sont adjacentes dans le maillage primal. On “flip” les arêtes Modélisation Géométrique
19
Dualité Chaque entité du maillage primal de dimension k est remplacé par une entité de dimension (2-k) dans le maillage dual: Chaque face (dim 2) est remplacée par un point (dim 0), les arêtes gardent leur dimension et les points sont remplacés par des faces. Pour créer la géométrie du maillage dual, on place un point au barycentre de chaque face et on connecte deux point par une arrête si les faces dont ils sont issus sont adjacentes dans le maillage primal. On “flip” les arêtes Modélisation Géométrique
20
Dualité Chaque entité du maillage primal de dimension k est remplacé par une entité de dimension (2-k) dans le maillage dual: Chaque face (dim 2) est remplacée par un point (dim 0), les arêtes gardent leur dimension et les points sont remplacés par des faces. Pour créer la géométrie du maillage dual, on place un point au barycentre de chaque face et on connecte deux point par une arrête si les faces dont ils sont issus sont adjacentes dans le maillage primal. On “flip” les arêtes Modélisation Géométrique
21
Exercice sur le dual Tracez le dual du maillage suivant :
Que remarquez vous au niveau des faces ? Que dire sur le dual du dual ? Modélisation Géométrique
22
Un maillage est dit fermé si il n'a pas de bord
Fermeture Un maillage est dit fermé si il n'a pas de bord Modélisation Géométrique
23
2-manifold De façon informelle, si un maillage fermé et 2-manifold (ou manifold) alors l'objet qu'il représente est « usinable ». Par définition, un maillage est 2-manifold si il satisfait la condition suivante: Propriété de disque local: En chaque point du maillage, il existe une sphère de rayon >0 telle que l'intersection entre la sphère et le maillage est homothétique à un disque Un maillage ouvert peut être 2-manifold. A la bordure, l'intersection entre la sphère et le maillage doit être topologiquement équivalente à un demi-disque. Modélisation Géométrique
24
Exercice : manifold / non-manifold ?
Sur des maillages triangulaires: Une arête partagée par plus de 2 triangles ? Un sommet partagé par deux ensembles de facettes non connectés ? Une jonction en T ? Problème de Crack ? Un trou dans le maillage ? Modélisation Géométrique
25
Formule d'Euler (1752) S - A + F = 2 (1-g) genre 1 genre 2 genre 0
Cette formule donne la correspondance entre le nombre de composant de chaque entité du maillage (sommets, arêtes, faces) S - A + F = 2 (1-g) Où S est le nombre de sommets, A est le nombre d'arêtes et F est le nombre de faces. g est le genre (génus) de l'objet = le nombre de trous (poignées) dans un objet fermé genre 1 genre 2 genre 0 Modélisation Géométrique
26
Les maillages triangulaires
Des propriétés spécifiques dérivées à partir de la formule d'Euler: S – A + F = 2 (1-g)=c où c est une constante qui est petite par rapport à S, A ou F. La constante c est négligeable devant S,A et F. On peut donc écrire: S - A + F 0 Il est difficile d'établir directement une relation entre ces entités parce qu'une arête est partagée par plusieurs faces. Par contre, on peut introduire la notion de demi-arête. Une face possède 3 demi-arêtes et une arête est composée de 2 demi-arêtes: F 2S Da = 3 F Da = 2 A Da 6S Modélisation Géométrique
27
Exercices sur la formule d'Euler
Calculez le nombre de faces F en fonction du nombre de sommets S puis le nombre moyen de demi-arêtes sortantes Da par sommet et en déduire la forme du maillage régulier pour : un maillage composé de quadrilatères un maillage composé d'hexagones Modélisation Géométrique
28
Structures de données pour les maillages
Choisir une représentation adaptée aux opérations que l'on souhaite effectuer sur le maillage : Une représentation compacte Une représentation optimisée pour le parcours Modélisation Géométrique
29
Liste de triangles C'est l'approche la plus naïve
Pour chaque triangle, on donne la liste de sommets C'est l'approche la plus naïve 4 octets par coordonnée (un flottant) 9 coordonnées par faces 2 fois plus de faces que de sommets Pour un maillage composé de S sommets, on a donc besoin de *9*2*S = 72*S octets. x0,y0,z0 x1,y1,z1 x2,y2,z2 x5,y5,z5 x1,y1,z1 x12,y12,z12 x9,y9,z9 x0,y0,z0 x1025,y1025,z1025 . . . Modélisation Géométrique
30
Sommets partagés Tout d'abord on stocke la liste des sommets
Puis les facettes sont définies en donnant les index des sommets qui la compose En général, le fichier commence par le nombre de sommets et le nombre de facettes Liste des sommets Liste des facettes x0,y0,z x1,y1,z x2,y2,z Combien d'octets par sommet? (36) Modélisation Géométrique
31
Bandes de triangles La topologie est codée de façon implicite dans l'ordre des sommets Chaque sommet est donc visité deux fois Si on ne considère qu'une seule bande, quel est l'espace mémoire utilisé ? En réalité, il y a plusieurs bandes et il faut ajouter 24 octets pour chaque nouvelle bande (le stockage des 2 premiers sommets) Modélisation Géométrique
32
Structure par faces Chaque face contient un pointeur vers ses sommets et vers les faces adjacentes Chaque sommet pointe sur une face adjacente Pas d'accès direct aux arêtes Octets par sommet ? Modélisation Géométrique
33
Structure par demi-arêtes
Une arêtes est décomposée en deux demi-arêtes orientées Pour chaque demi-arête, on mémorise un pointeur vers la demi-arête opposée, le sommet vers lequel elle pointe, la face à laquelle elle appartient et la demi-arête suivante Chaque sommet contient un pointeur sur une demi-arête sortante et chaque face, un pointeur vers une de ses demi-arête Très pratique pour parcourir un maillage de diverses façons Octets par sommet ? (120) Modélisation Géométrique
34
Visualisation OpenGL d'un maillage
Construction de l’objet : Sa liste de sommets GLfloat sommets[] = {x0, y0, z0, … xn, yn, zn}; Ses attributs, par exemples les normales GLfloat normales[] = {nx0, ny0, nz0, nxn, nyn, nzn}; Sa liste d’index GLuint index[] = {0, 1, 2, 5, 0, 4, }; Modélisation Géométrique
35
Visualisation OpenGL d'un maillage
Types de représentation pour OpenGL : GL_TRIANGLES : il faut donner les index des facettes triangulaires, GL_QUADS : il faut donner les index des quadrilatères, GL_TRIANGLE_STRIP : la liste ordonnée des index pointant sur les sommets des bandes de triangles. Dans le tableau d’index, il st possible d’utiliser un séparateur pour séparer les différentes bandes de triangles, GL_QUAD_STRIP : idem, mais liste de quadrilatères, … Modélisation Géométrique
36
Rendu OpenGL // Activation du mode de tracé par tableaux de sommets
glEnableClientState (GL_VERTEX_ARRAY); glEnableClientState (GL_NORMAL_ARRAY); // si on utilise les normales glEnableClientState (...); // si on utilise d'autres attributs (couleur, coordonnées texture, ...) // Affectation des différents tableaux glVertexPointer (3, GL_FLOAT, 0, sommets); glNormalPointer (GL_FLOAT, 0, normales); // si on utilise les normales // … + autres tableaux s’il y a (couleur,…) // Tracé du maillage triangulaire glDrawElements (GL_TRIANGLES, nb_index, GL_UNSIGNED_INT, index); // Désactivation du mode tracé glDisableClientState ( ………..); // un pour chaque glEnableClientState Modélisation Géométrique
37
Rendu optimisé Les “Vertex Array” sont une façon simple de visualiser les maillages. Vous optiendrez un rendu plus efficace en utilisant des “Vertex Buffer Objects” (VBO). Modélisation Géométrique
38
Normale à une face La normale a une facette est obtenu en faisant le produit vectoriel de sa première arête avec la deuxième. Attention à l’orientation des normales quand on stocke un maillage => les sommets des faces doivent toujours être stockés dans le même sens. Les normales donnent l’orientation vers l’extérieur d’un objet fermé. Elles sont aussi fondamentales pour l’éclairage. S1 S2 S3 N 2 1 2 3 (S2-S1) (S3-S2) ║(S2-S1) (S3-S2) ║ N = 3 1 N Modélisation Géométrique
39
Normales aux sommets Approche naïve: somme normée des normales unitaires des faces adjacentes Approches plus avancées : les normales sont pondérées Si on suppose que le calcul de la normale est extrêmement local, les i sont les angles que forment chaque facette au point On peut aussi prendre l’aire des facettes adjacentes pour i Dans tous les cas, on obtient une approximation plus ou moins bonne de la normale à la surface. Ns = Nfi ║ Nfi ║ Ns = i Nfi ║ i Nfi ║ Modélisation Géométrique
40
Exercice : Charger un fichier
Ecrire un algorithme permettant de charger un maillage triangulaire stocké par sommets partagés dans un fichier avec les contraintes suivantes : Les deux premières valeurs du fichier sont le nombre de sommets puis le nombre de facettes. Le maillage doit être chargé de façon cohérente pour être visualisé avec un tableau de sommet (Vertex Array). On souhaite aussi fournir les normales en chaque sommet afin de pouvoir éclairer l'objet lors de sa visualisation. Modélisation Géométrique
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.