Sommaire
Ce projet a été réalisé dans le cadre de l'unité d'enseignement "Modélisation Géométrique" en Master 2 ID3D à l'Université Claude Bernard Lyon 1, Villeurbanne.
- Générer des surfaces maillées à partir d’un ensemble de points ou de courbes de contrôle.
- Générer des surfaces d’extrusion à partir d’une courbe génératrice.
- L’objectif est de modéliser des SDF à l’aide d’un arbre de construction hiérarchique
├── data
| ├── obj # Les maillages sont sauvegardés ici.
| └── shaders # Shaders utilisés pour le rendu avec GKit.
├── src # Code
| ├── Include # Fichiers .h.
| | └── ...
| ├── Source # Fichiers .cpp.
| | └── ...
| ├── CMakeLists.txt # Fichier de configuration CMake.
| └── main.cpp
├── vendor
| ├── exprtk # Exprtk lib
| ├── gkit # Gkit lib
| └── imgui # ImGUI lib
├── .gitignore # Fichier .gitignore.
├── CMakeLists.txt # Configuration Cmake.
├── imgui.ini # Configuration ImGui.
└── README.md # Fichier README du projet.
Le projet est en C++. Les librairies utilisées sont listées ci-dessous :
- GKit : Utilisé pour visualiser les maillages générés.
- ImGUI : Utilisé pour gérer l'UI de l'application.
- exprtk - C++ Mathematical Expression Toolkit Library : Utilisé pour parser une chaînes de caractères en une expression arithmétique.
Ces librairies sont accessibles dans le répertoire vendor.
Ce projet ne compile que sous Linux.
GKit utilise SDL2 et Glew :
sudo apt install libsdl2-dev libsdl2-image-dev libglew-dev
- Cloner le dépôt
git clone https://github.com/tgrillon/modgeo.git
- Build le projet avec cmake :
cmake -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build/ -t modgeo -j 12
- Lancer l'application :
./build/modgeo
L'application utilise ImGui qui permet d'avoir une interface modulable avec des fenêtres dockables :
- La fenêtre de statistiques
- Le panneau de contrôle où l'utilisateur peut accéder aux démos et a accès à différents paramètres.
- La fenêtre de rendu où le maillage est visualisé.
a
: Menu bar1
: Quitter l'application.2
: Afficher/Masquer l'interface utilisateur.3
: Mode sombre/clair.
b
: Performances1
: Image par secondes.2
: Temps CPU.3
: Temps GPU.4
: Frame rate.
c
: Geométrie1
: Nombre de triangles.2
: Nombre de sommets.3
: Temps de polygonisation.
e
: Paramètre de scène1
: Taille de sommet.2
: Taille d'arête.3
: Couleur de fond, des sommets, des arêtes, etc...
f
: Sauvegarde de maillage1
: Nom du fichier.2
: Sauvegarder le maillage au format OBJ. Le fichier est sauvegardé dans le répertoiredata/obj
.
Cette démo permet de jouer avec des courbe de Bézier.
c
: Géométrie4
: Nombre de points de contrôle.
g
: Paramètres1
: Résolution du maillage.2
: Nombre de points de contrôle.3
: Fonction de génération de points sur l'axe X.4
: Fonction de génération de points sur l'axe Y.5
: Fonction de génération de points sur l'axe Z.6
: Afficher/Masquer les faces, les arêtes, les sommets et la courbe suivie par la spline.7
: Fonctrion radiale pour la surface de révolution.8
: Générer le maillage.
Cette démo permet de jouer avec des patches de Bézier.
g
: Paramètres1
: Afficher/Masquer la grille suivie par le patche.
Cette démo permet de jouer avec des surfaces implicites (SDF).
h
: Paramètres1
: Construction de l'arbre.1.1
: Affiche la primitive ainsi que l'opérateur sélectionné pour la construction de l'arbre.1.2
: Sélection d'une primitive à ajouter dans l'arbre de construction.1.3
: Sélection d'un opérateur binaire (Union, Intersection, Différence, etc...).1.4
: Sélection d'un opérateur unaire (Coque, etc...).1.5
: Ajouter une transformation (Translation, Rotation, Homothétie, etc...).
2
: Modification de l'arbre.2.1
: Modification des paramètres de la primitive.2.2
: ....
3
: Paramètres de la boîte utilisée pour l'algorithme d'approximation du maillage de la surface implicite.4
: Afficher la boîte.5
: Générer/Supprimer le maillage correspondant à la surface implicite décrit par l'arbre.