Skip to content

HouleAdrien/Fluids3D-cpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fluids3D - Simulation de Fluides 3D

Qt OpenGL C++

Description

Fluids3D est une simulation de fluides en 3D utilisant les équations de Shallow Water (SWE - Shallow Water Equations) implémentée en C++ avec Qt et OpenGL. Le projet permet de simuler en temps réel le comportement de l'eau sur une grille géométrique avec des interactions physiques réalistes.

Fonctionnalités

  • Simulation physique : Équations de Shallow Water pour une simulation réaliste des fluides
  • Rendu 3D : OpenGL avec shaders personnalisés pour un rendu visuel de qualité
  • Interaction : Caméra navigable pour observer la simulation sous différents angles
  • Obstacles : Support de sphères pouvant interagir avec le fluide
  • Effets visuels :
    • Rendu de l'eau avec réflexions et réfractions
    • Skybox pour l'environnement
    • Grille de terrain personnalisable
    • Éclairage solaire

Architecture du Projet

Composants Principaux

  • SWEFluid (SWEFluid.h/cpp) : Moteur de simulation des fluides utilisant les équations de Shallow Water
  • GridGeometry (GridGeometry.h/cpp) : Gestion de la grille géométrique du terrain
  • WaterFrameBuffers (WaterFrameBuffers.h/cpp) : Frame buffers pour les effets de rendu de l'eau
  • Sphere (sphere.h/cpp) : Objets sphériques pouvant interagir avec le fluide
  • Camera (camera.h/cpp) : Système de caméra pour la navigation 3D
  • GLWidget (glwidget.h/cpp) : Widget OpenGL principal pour le rendu
  • MainWindow (mainwindow.h/cpp) : Fenêtre principale de l'application

Shaders

Le projet utilise plusieurs paires de vertex/fragment shaders :

  • vshader.glsl / fshader.glsl : Rendu principal
  • water_vshader.glsl / water_fshader.glsl : Rendu de l'eau
  • grid_vshader.glsl / grid_fshader.glsl : Rendu de la grille
  • sphere_vshader.glsl / sphere_fshader.glsl : Rendu des sphères
  • skybox_vshader.glsl / skybox_fshader.glsl : Rendu de la skybox
  • sun_vshader.glsl / sun_fshader.glsl : Rendu du soleil
  • ray_vshader.glsl / ray_fshader.glsl : Ray tracing

Prérequis

  • Qt 6.10.0 ou supérieur avec les modules :
    • Qt Core
    • Qt GUI
    • Qt OpenGL
    • Qt OpenGL Widgets
  • MinGW 13.1.0 (compilateur C++)
  • OpenGL 3.2 ou supérieur

Installation et Compilation

Configuration de l'Environnement

  1. Installer Qt 6.10.0 avec Qt Creator
  2. S'assurer que MinGW 13.1.0 est installé (normalement fourni avec Qt)

Compilation avec Qt Creator

  1. Ouvrir le projet :

    File > Open File or Project > Sélectionner fluid3D.pro
    
  2. Configurer le kit de compilation :

    • Sélectionner "Desktop Qt 6.10.0 MinGW 64-bit"
    • Important : Vérifier qu'il n'y a qu'une seule version de Qt configurée (surtout sur les ordinateurs partagés)
  3. Compiler le projet :

    • Appuyer sur Ctrl+B ou cliquer sur le marteau vert
    • En cas d'erreur, faire un "Clean" puis "Rebuild"

Compilation en Ligne de Commande

cd C:/projets/Fluids3D-cpp
mkdir build && cd build
C:/qt/6.10.0/mingw_64/bin/qmake.exe ../fluid3D.pro -spec win32-g++ "CONFIG+=debug"
C:/qt/Tools/mingw1310_64/bin/mingw32-make.exe

Options de Ligne de Commande

Le programme supporte plusieurs options :

fluid3D.exe [options]

Options:
  --multisample    Active le multisampling (4x MSAA)
  --coreprofile    Utilise le profil core OpenGL 3.2
  --transparent    Fenêtre transparente
  -h, --help       Affiche l'aide
  -v, --version    Affiche la version

Problèmes Connus

Erreur de Linkage OpenGL

Si vous rencontrez l'erreur :

undefined reference to `__imp_glDrawBuffer'

Le fichier .pro a été mis à jour pour inclure la bibliothèque OpenGL32 :

LIBS += -lopengl32

Erreur liblto_plugin.dll

Si vous rencontrez l'erreur :

'-fuse-linker-plugin', but liblto_plugin.dll not found

Cela indique un problème avec l'installation MinGW. Des flags ont été ajoutés au fichier .pro pour contourner ce problème, mais une réinstallation de MinGW peut être nécessaire.

Structure des Fichiers

Fluids3D-cpp/
├── fluid3D.pro          # Fichier projet Qt
├── main.cpp             # Point d'entrée de l'application
├── headers/             # Fichiers d'en-tête (.h)
├── sources/             # Fichiers source (.cpp)
├── *.glsl               # Shaders GLSL
├── shaders.qrc          # Ressources shaders
├── Images.qrc           # Ressources images
└── build/               # Dossier de compilation (généré)

Contribution

Ce projet est un projet académique de simulation de fluides. Les contributions sont les bienvenues pour :

  • Améliorer les performances de la simulation
  • Ajouter de nouveaux effets visuels
  • Optimiser les shaders
  • Corriger les bugs

Licence

Projet académique - Utilisation libre pour l'apprentissage et la recherche.

Auteurs

Projet développé dans le cadre d'études en simulation physique et graphisme 3D.

About

A cpp fluid simulation that uses the Shallow water equations

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors