TP MeshLab

MeshLab est un très beau logiciel (Open Source) de manipulation et d'édition de maillage 3D à base de triangles (et de quadrilatères). Il fourni un ensemble d'outils pour éditer, nettoyer, corriger, inspecter, afficher, texturer et convertir des maillages...

Il existe sur YouTube de nombreux tutoriels abordant tous les sujets comme ceux de Mister P. (MrPMeshLabTutorials) ou des TUTO thématiques, par exemple : pour l'impression 3D, la texturation à partir de photos, la reconstruction à partir de points scannés (avec EORAD par exemple)...

Ce TP devrait vous permettre de découvrir MeshLab, son utilisation est ici limitée à quelques manipulations élémentaires, entre autre à l'analyse des caractéristiques topologiques des maillages et à la corrections des "malformations" potentielles (simples). Entre autre :
Il s'agit d'un petit aperçu de quelques fonctionnalités du logiciel. MeshLab est complexe et les menu sont très fournis : il est facile de s'y perdre (malgré la documentation)! Ce TP vous guidera pas à pas en précisant les menus, les sous-menus et les cases à sélectionner.

Prise en main

Pour charger le fichier, dans le menu  File sélectionnez : Import Mesh...
Ensuite, pour l'affichage ouvrez le menu View
Puis activer Show Layer Dialog
Pour les repères, ouvrez le menu Render
Activez : "Show Axis" et "Show Quoted Box"

(Q1) Devinez pourquoi le maillage est sombre et modifier le pour qu'il soit correctement éclairé. Un indice : dans le menu Render explorez le sous menu Lighting et ajustez le pour palier temporairement au défaut.
Sélectionnez ensuite Render Mode / BackFace culling et concluez.Enfin rechercher dans Filter le sous menu puis l'action à executer pour corriger définitivement le problème que vous avez identifié.

Le nombre de faces et de sommets s'affichent à différents endroits. Mais pour avoir les caractéristiques topologiques allez dans le menu :  Filters / Quality Measures and Computation / Compute Topological Measures

(Q2) Expliquez les résultats obtenus grâce à la relation d'Euler. A l'aides des cardinaux, démontrez qu'il s'agit bien d'une triangulation.

Les caractéristiques géométriques s'obtiennent de la même façon :
Filters / Quality Measures and Computation / Compute Geometrical Measures

Notez la valeur du volume et de la surface de la frontière.
Pour commencer nous allons charger le maillage ci-joint dans MeshLab et adapter l' affichage afin d'obtenir la même vue que sur l'image ci-dessous.



Profitez en pour explorez d'autres fonctions très utiles, par exemple :
  • La mesure de distances sur le maillage (le ruban en haut à droite).
  • L'affichage des coordonnées des points mais aussi des numéros des faces et des sommets (avec l'icone "i" comme informations).

Boucher les "trous"

Chargez le maillage ci-joint (le fameux bunny de Standford) dans MeshLab et procédez aux ajustements nécessaires.
Réorientez la surface et activez le BackFace Culling (il est possible que vous amélioriez le FPS qui s'affiche en temps réel en dessous de la vue).

Essayez de calculer le volume :

Affichez les arêtes de bord via le menu Render/Show Boundary Edges

(Q3) Affichez les caractéristiques topologiques et expliquez le résultat à l'aide des définitions du cours (connexité). D'après vous, que signifient :

"Unreferenced Vertices", "hole"  et  "genus" ?
Le mot "genus" se traduit en français par le "genre d'une surface".

Supprimez les "Unreferenced Vertices"  dans Cleaning and Repairing.

(Q4) Vérifiez que : 3*t = 2*a - a'
avec a' les arêtes de bord

Qu'en déduisez-vous sur le maillage (est-il mixte ou "Pure-Triangular" ?)
Pour vous convaincre appliquer l'opérateur Turn into Pure-Triangular mesh (sous Remeshing...)




Vérifiez que :   h + t - a + s = 2

(Q5) Retrouvez cette formule à partir de la relation d'Euler  :     f-a+s = 2  
en imaginant que les "trous" dans la frontière (h) sont en réalité des faces pour une frontière fermée.

Appliquez le correctif  pour boucher les "trous" :
Filters/Remeshing, Simplification and Reconstruction/ Close Holes

Adaptez les paramètres de l'opération sans pour autant générer des surfaces présentant des auto-intersections.

A l'issue de l'opération il est plus que probable que certains trous ne soient pas complètement bouchés... Comme sur la figure ci-contre où il reste 2 "trous" avec 6 arêtes de bord.

Si c'est le cas après plusieurs tentatives, il va être nécessaire d'agrandir le ou les trous restant !

Sélectionnez les faces du bord :
sous Filter/Selection/ sélectionnez Select Border

Puis Dilate Selection (une ou plusieurs fois)
jusqu'à donnez assez d'espace.

Ré-appliquez alors Close Holes en espérant converger...



Correction et amélioration 


En fonction de leur provenance (scan 3D, décimation "violente"...), il arrive que certains maillages soient très dégradés à la fois topologiquement et géométriquement .
Il faut les corriger, les nettoyer, les améliorer...

MeshLab permet de retravailler ces maillages  à l'aide d'algorithmes puissants. C'est ce que vous propose l'exercice suivant.


Chargez le fichier ci-joint et analysez sa topologie.

Explorez les menus de MeshLab pour trouver les opérations permettant de corriger ces défauts. Vérifiez à chaque étape le résultat de vos opérations.
Vous pourez être amené à générer des "trous" dans la surface : vous les boucherez comme vous l'avez fait dans l'exemple précédent.

Pour l'amélioration géométrique vous pourrez utiliser Smoothg face normals et Curvature flipping optimization et bien d'autres.


(Q6) Faite la liste des opérations que vous utilisez et commentez l'efficacité de leurs effets.



Décimation

Il est souvent utile d'avoir plusieurs représentations de la même géométrie à des précisions différentes, entre autre pour la gestion des niveaux de détails (LOD).

Pour ce faire il suffit de partir d'un modèle haute résolution et d'appliquer des opérations successives de décimation (suppression de triangles "non-utiles" partageant une même arête (Edge Collapse)).

V : 34834,  E: 104288,  F : 69451,  BE : 223,  H : 5

V : 10491,  E: 31328,  F : 20834,  BE : 154,  H : 5

V : 3155,  E: 9407,  F : 6249,  BE : 67,  H : 5
MeshLab propose un algorithme très efficace (Quadric Edge Collapse Decimation) qui a permis de réaliser les 5 figures de droite. Le % de suppression est fixé à 30% à chaque étape pour passer d'une triangulation de 70kt à une de seulement 562 t.

Appliquez l'opération :
Filter/Remeshing.../Quadric Edge Collapse Decimation

jusqu'à ce que la géométrie ou la topologie ne soit plus valide.


(Q7) Vérifiez que tous les maillages
satisfont la relation d'Euler :

h + t - a + s = 2

V : 952,  E: 2829,  F : 1874,  BE : 36,  H : 5

V : 289,  E: 854,  F : 562,  BE : 22,  H : 5



Comparaison de maillages

Nous allons maintenant comparer 2 représentations du lapin : le modèle original (à gauche) et le modèle décimé (à droite).

Chargez les fichiers et comparez les maillages d'abord en terme de volumes de données (cardinaux). Les caractéristiques géométriques peuvent être facilement comparées :

Filter/ Quality Measure & Computation /  Compute Geometric Measures

(Q8) Comparez la variation de volume et la variation de surface et donnez les pourcentages.

Ces mesures ne traduisent pas ce que l'oeil peut percevoir : la distance maximum entre 2 points correspondant dans les 2 modèles est un meilleur indicateur.

Superposer les 2 modèles géométriques permet d'estimer qualitativement les grandes différences : quel modèle recouvre l'autre localement (figure de gauche).
Pour calculer la distance entre deux maillage MeshLab réalise des "échantillons" (Samplings) en de nombreux points et stoque les distances minimales (sur le maillage de référence) pour chacun de ces points.
Une couleur peut être ensuite associée en fonction de la valeur (de la distance) et ainsi de localiser rapidement les défauts.

Pour calculer la distance vous utiliserez :
Filters / Sampling / Hausdorff Distance

Pour visualiser les valeurs sur le maillage il vous suffit d'activer : Filters/Color Creation and Processing / Colorize by vertex Quality

(Q9) Vérifiez que la distance entre les 2 maillages est inférieure à 3% (de la diagonale).