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.
- 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
- 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
Le projet utilise plusieurs paires de vertex/fragment shaders :
vshader.glsl/fshader.glsl: Rendu principalwater_vshader.glsl/water_fshader.glsl: Rendu de l'eaugrid_vshader.glsl/grid_fshader.glsl: Rendu de la grillesphere_vshader.glsl/sphere_fshader.glsl: Rendu des sphèresskybox_vshader.glsl/skybox_fshader.glsl: Rendu de la skyboxsun_vshader.glsl/sun_fshader.glsl: Rendu du soleilray_vshader.glsl/ray_fshader.glsl: Ray tracing
- 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
- Installer Qt 6.10.0 avec Qt Creator
- S'assurer que MinGW 13.1.0 est installé (normalement fourni avec Qt)
-
Ouvrir le projet :
File > Open File or Project > Sélectionner fluid3D.pro -
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)
-
Compiler le projet :
- Appuyer sur Ctrl+B ou cliquer sur le marteau vert
- En cas d'erreur, faire un "Clean" puis "Rebuild"
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.exeLe 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 versionSi vous rencontrez l'erreur :
undefined reference to `__imp_glDrawBuffer'
Le fichier .pro a été mis à jour pour inclure la bibliothèque OpenGL32 :
LIBS += -lopengl32Si 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.
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é)
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
Projet académique - Utilisation libre pour l'apprentissage et la recherche.
Projet développé dans le cadre d'études en simulation physique et graphisme 3D.