M1if37 est une UE optionnelle de la première année du Master d'Informatique de l'Université Lyon 1. Les cours ont lieu au semestre 2 (printemps). L'objectif de l'UE est de donner les bases de l'animation en synthèse d'images. Nous aborderons les deux grandes familles de méthodes. L'animation basée sur des données, par exemple pour l'animation d'humain virtuel (données issues de capture de mouvement). Et l'animation basée sur un modèle physique pour la simulation de phénomènes naturels comme le mouvement de textiles ou de fluide. L'UE laissera une grande part à l'application pratique avec la réalisation de TPs en C++/OpenGL proposant d'animer par exemple des humains virtuels, des vêtements, des cordes, une surface d'eau, etc.
git clone https://forge.univ-lyon1.fr/Alexandre.Meyer/gkit2light
cd gkit2light/
git checkout -b master_MecacSim origin/master_MecacSim
./bin/master_MecaSim_etudiant 1 src/master_MecaSim/exec/Fichier_Param.simu src/master_MecaSim/exec/Fichier_Param.objet1
chmod +x go
./go
<Executable> <nbObjet> <fichier param simulation> <fichier param Obj1> <fichier param Obj2> ...
- Voici ce que j'attends dans votre code :
- Simulation du tissu soumis à la gravité
- Déchirure du tissu
- Interaction avec le coin du tissu
- Collision avec une sphère
- Collision avec le sol ou un plan incliné
- Autre force comme le vent
- Joli scène (texture, etc.)
- Ne pas hésiter à ajouter d'autres éléments
- Si vous ne faites pas de démo, vous devrez mettre sur TOMUSS, dans la colonne
Video-FZ , l'URL d'une vidéo servant de démo de votre code : vous devez montrer l'ensemble de votre travail (car je ne compilerai pas votre TP).- Vous devrez déposer sur TOMUSS une archive de votre code dans la colonne
Depot-FZ . Cette archive contiendra (mettre votre nom prénom comme nom du répertoire) :
- les fichiers de code que vous avez modifiés (fichiers .cpp et .h uniquement)
- un rapport de 5 à 10 pages.
En ce qui concerne le rapport, voici son contenu :
- explication de la boucle de simulation permettant de réaliser l'animation d'un objet - en détaillant chacune des étapes (en donnant l'équation et les explications adéquates). Pour cela, imaginez que vous deviez expliquer à une personne qui n'a pas suivi le cours comment vous faites une simulation 3D.
- explication du système masses-ressorts : démarche identique.
- explication de tout ce que vous avez effectué dans votre code en plus de la simulation initiale : déchirure, mouvement d'un coin, collision avec un objet, etc.
- une partie un peu plus libre (vous pouvez vous aider d'articles vus sur internet) : si vous aviez beaucoup plus d'heures pour améliorer votre projet, que feriez-vous ? Voici quelques idées non exhaustives : meilleure prise en compte des collisions : comment implémenter cela ? ; améliorer le système masses-ressorts (liaisons entre les ressorts, coefficient des raideurs, etc.) ; parallélisation des algorithmes sur GPU - sur multi-cpu.
cd gkit2light
premake/premake4.linux --file=master_MecaSim.lua codeblocks
ouvrir le projet master_MecaSim_etudiant.cbp
cd gkit2light
premake/premake4.linux --file=master_MecaSim.lua gmake
make -f master_MecaSim_etudiant.make
./bin/master_MecaSim_etudiant
cd gkit2light
premake/premake4.macosx --file=master_MecaSim.lua gmake
make -f master_MecaSim_etudiant.make
./bin/master_MecaSim_etudiant
#ifndef M_PI
#define M_PI 3.14159265358979323846264338327950288 /* pi */
#endif
gkit2light/src/master_MecaSim/src-etudiant/
cd gkit2light/master_MecaSim/
doxygen ./Doxyfile