Skip to content

Modélisation Géométrique : Courbe et surface de Bézier + Surface implicite (SDF)

License

Notifications You must be signed in to change notification settings

tgrillon/modgeo

Repository files navigation

Sommaire
  1. À propos
  2. Compiler le projet
  3. Application
  4. Démo courbe de Bézier
  5. Démo patche de Bézier
  6. Démo surface implicite (SDF)

(back to top)

À propos

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.

(back to top)

Objectifs

Génération de surfaces maillées
  • Générer des surfaces maillées à partir d’un ensemble de points ou de courbes de contrôle.
Surfaces de révolution et d’extrusion
  • Générer des surfaces d’extrusion à partir d’une courbe génératrice.
Modélisation à l’aide de surfaces implicites
  • L’objectif est de modéliser des SDF à l’aide d’un arbre de construction hiérarchique

(back to top)

Structure du projet

  ├── 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.

(back to top)

Librairies utilisées

Le projet est en C++. Les librairies utilisées sont listées ci-dessous :

Ces librairies sont accessibles dans le répertoire vendor.

(back to top)

Compiler le projet

Ce projet ne compile que sous Linux.

(back to top)

Prérequis

GKit utilise SDL2 et Glew :

sudo apt install libsdl2-dev libsdl2-image-dev libglew-dev

(back to top)

Installation

  1. Cloner le dépôt
git clone https://github.com/tgrillon/modgeo.git

(back to top)

Build & exécution

  1. Build le projet avec cmake :
    cmake -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build/ -t modgeo -j 12
  2. Lancer l'application :
    ./build/modgeo 

(back to top)

Application

L'application utilise ImGui qui permet d'avoir une interface modulable avec des fenêtres dockables :

application

Trois fenêtres
  • 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é.

fenêtre de l'application

(back to top)

Fonctionnalités globales

présentation détaillée

  • a : Menu bar
    • 1 : Quitter l'application.
    • 2 : Afficher/Masquer l'interface utilisateur.
    • 3 : Mode sombre/clair.
  • b : Performances
    • 1 : Image par secondes.
    • 2 : Temps CPU.
    • 3 : Temps GPU.
    • 4 : Frame rate.
  • c : Geométrie
    • 1 : Nombre de triangles.
    • 2 : Nombre de sommets.
    • 3 : Temps de polygonisation.
  • e : Paramètre de scène
    • 1 : Taille de sommet.
    • 2 : Taille d'arête.
    • 3 : Couleur de fond, des sommets, des arêtes, etc...
  • f : Sauvegarde de maillage
    • 1 : Nom du fichier.
    • 2 : Sauvegarder le maillage au format OBJ. Le fichier est sauvegardé dans le répertoire data/obj.

(back to top)

Démo courbe de Bézier

Cette démo permet de jouer avec des courbe de Bézier.

présentation détaillée (spline)

  • c : Géométrie
    • 4 : Nombre de points de contrôle.
  • g : Paramètres
    • 1 : 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.

(back to top)

Démo patche de Bézier

Cette démo permet de jouer avec des patches de Bézier.

présentation détaillée

  • g : Paramètres
    • 1 : Afficher/Masquer la grille suivie par le patche.

(back to top)

Démo surface implicite (SDF)

Cette démo permet de jouer avec des surfaces implicites (SDF).

présentation détaillée

  • h : Paramètres
    • 1 : 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.

(back to top)

Exemple

démo sdf

(back to top)

About

Modélisation Géométrique : Courbe et surface de Bézier + Surface implicite (SDF)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •