-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
159 lines (105 loc) · 5.94 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
Projet de spécialité Ensimag 2013
***************************************
Image : Animation temps-réel de liquide
Auteurs:
--------
ALLAIN Anne-Hermine (MMIS)
BAUCHET Jean-Philippe (MMIS)
CICCONE Loïc (MMIS)
GUILLEMAUD Héloïse (MMIS)
I. Description de l'archive
-------------------------
a) À la racine se trouvent :
.........................
- ce fichier README
- un fichier de configuration pour Makefile : SPH.pro
- un fichier de configuration pour doxygen : Doxyfile
- un script de nettoyage de l'archive : mrproper.sh
- les dossiers contenant le code source
b) Dossier core :
..............
dossier contenant le simulateur physique, il sera utilisé par les autres dossiers sous forme d'une librairie (voir son .pro).
Fichiers présents:
- fluide.hpp et .tpp
Ensemble de particules, c'est lui que l'on va animer dans la scène. Ce fichier étant à l'origine très long, nous l'avons découpé en plusieurs bouts de code :
. fluide_arps.tpp : toutes les méthodes concernant l'implémentation de l'ARPS
. fluide_collisions.tpp : les 2 méthodes qui permettent la collision avec une boîte ou celles de la cascade
. fluide_interactions.tpp : les méthodes qui permettent de modifier les paramètres du fluide interactivement prendant la simulation
- materiau.hpp et .tpp
Description de différents types de matériaux utilisables pour le fluide.
Nous n'avons effectué nos simulations que pour l'EAU, les autres types n'ont pas de paramètres adaptés.
- matriceForces.hpp et .tpp
Structure de données pour stocker le calcul des forces d'interaction entre particules
- metaballs.hpp et .tpp
Méthode de rendu pour les particules
- noyauLissage.hpp et .tpp
Objet renvoyant les valeurs du noyau et de ses opérateurs de dérivation, pour l'interpolation des grandeurs
- particule.hpp et .tpp
Objet de base composant le fluide
- premier.hpp et .tpp
Structure permettant de récupére un nombre premier valable pour une table de hachage
- vecteur.hpp et .tpp
Classe de base décrivant un vecteur
c) Dossier g3d :
.............
dossier contenant le viewer OpenGl pour la simulation, ainsi qu'une scène permettant de tester différentes configurations de fluides (surtout pour le debug).
Fichiers présents:
- main.cpp
Ouvre la fenêtre de visualisation QGLviewer : a priori pas de raison de le modifier
- scene.h et .cpp
Objet contenant tous les éléments à afficher; est instancié par le viewer
- viewer.h et .cpp
Classe gérant la scène; son dessin, son animation, et les interactions utilisateur
d) Dossier cascade :
.................
dossier contenant les fichiers de la scène finale
Fichiers présents:
- cascade.hpp et .tpp
Classe permettant de dessiner les bords, les parois de la cascade
- main.cpp et viewer : idem que précédemment
- sceneCascade.h et .tpp
Contient les objets de la scène finale : un fluide, une cascade, et une skybox
- skybox.h et .tpp
Classe permettant de dessiner une skybox à notre scène : des textures pour faire un décor de fond
e) Dossier test :
..............
dossier contenant les tests unitaires des différentes classes du projet
Pour chaque classe, les tests unitaires sont écrits dans un fichier .cpp qui définit une fonction, et celle-ci est appelée dans main.cpp.
f) Dossier doc :
.............
dossier dans lequel est générée la documentation doxygen, en format html
II. Compilation et exécution du projet
-----------------------------------
Pour compiler :
qmake -r (-r pour recursive, lance qmake dans chaque sous dossier)
make
Dans tous les sous-dossiers (sauf g3d/), les exécutables sont générés dans un sous-dossier release/. Pour le dossier core/, ce sont les librairies qui sont générées dans ce sous-dossier.
Chaque sous-dossier contient un fichier de configuration .pro, qui génère un Makefile. Lors de l'ajout d'un nouveau fichier, il faut bien penser à l'intégrer dans la compilation en modifiant le .pro en conséquence.
Nous avons implémenté quelques règles spécifiques :
- make realclean
Lance le script mrproper.sh, qui lance tous les make clean des sous-dossiers, et supprime aussi les Makefile générés.
- make doc
Génère la documentation doxygen dans le dossier doc/.
- make viewdoc
Ouvre la documentation dans un navigateur Firefox.
Voici les différents exécutables que l'on peut lancer :
- cascade/release/cascade
lance la scène finale de casade
- g3d/test_dessin_fluide
lance la scène définie dans scene.cpp
- test/release/test
lance la batterie de test unitaires
Pour lancer l'animation des scènes, il faut appuyer sur la touche 'Enter'.
III. Interactions utilisateur
-------------------------
Il est possible d'interagir avec le viewer avec des événements clavier.
- la touche 'H' ouvre une fenêtre décrivant comment utiliser QglViewer, et les événements déjà définis
- la touche 'W' permet de basculer entre affichage plein ou seulement du maillage des primitives
- la touche 'L' permet d'activer ou désactiver l'éclairage de la scène
- la touche 'Enter' déclenche ou stoppe l'animation
- la touche 'Z' permet de n'exécuter qu'une boucle d'animation, dans g3d/test_dessin_fluide, lorsque la macro PASAPAS est égale à 1 dans g3d/scene.cpp
- la touche 'Début' ou 'Home' permet de recommencer complètement la scène (sans se souvenir des éventuels changements effectués par interaction)
- la touche 'V' permet de changer de méthode d'affichage du fluide : points, sphères, ou metaballs
- la touche 'I' permet de lancer dans le terminal l'interface d'interaction avec l'utilisateur, qui permet de modifier en cours de simulation certains paramètres du système; il suffit de suivre les instructions du terminal, en entrant les valeurs demandées.
Attention, aucune vérification n'est faite sur les valeurs entrées.
- la touche 'R' permet de lancer un enregistrement image par image de la simulation : celles-ci sont enregistrées là où l'exécutable a été lancé