MoteurJV

Moteur Physique de Jeu Vidéo

Projet de création d’un moteur physique de jeu vidéo, réalisé en cours de Mathématiques et Physique pour le Jeu Vidéo.

But

Créer un moteur physique dont les objets sont des corps rigides et dont la résolution de collisions se fait de manière itérative à l’aide d’impulsions. Ce but sera atteint graduellement au fil du trimestre. La conception se fera en quatre (4) phases itératives.

Phase 1 : construction d’un moteur élémentaire de gestion de particules

Phase 1

Le but de cette phase est de créer un moteur physique simple de gestion de particules à partir des notions vues en classes. En particulier, vous devez :

Demo Phase 1
Demo Phase 1

Phase 2 : gestion d’objets formés de plusieurs masses par l’ajout de différentes forces et contraintes

Phase 2

Le but de cette phase est de poursuivre le développement du moteur physique réalisé lors de la phase 1 en lui ajoutant les notions de forces et contraintes vues en classe. Ainsi, le moteur permettra la gestion d’amas de particules. En particulier, vous devez :

Demo Phase 2
Demo Phase 2

Bonus : refonte graphique

Refonte

Amélioration de l’interface et de la structure des fichiers. Utilisation approfondie de la libraire ImGUI via OpenGL qui s’occupe également du rendu dans la nouvelle fenêtre Render. Cela a également permis d’améliorer le temps de rendu entre chaque frame.

Avant Après
Physic Engine 1.0 Physic Engine 2.0

Phase 3 : gestion des corps rigides par l’ajout de la physique rotationnelle

Phase 3

Le but de cette phase est de spécialiser le moteur physique des phases 1 et 2 par l’ajout de la physique rotationnelle, implémentant ainsi les notions vues en classe. Ce faisant, le moteur permettra la gestion des corps rigides. Notez toutefois que la gestion des collisions n’est pas à implémenter dans cette phase. En particulier, vous devez :

Demo Phase 3 - Random rigidbody Demo Phase 3 - Cars collision
Demo Phase 3 Part 1 Demo Phase 3 Part 2

Phase 4 : ajout d’un système élémentaire de résolution de collisions

Phase 4

Le but de cette phase est d’ajouter au moteur physique de la phase 3 un système simple de détection de collisions. Ce faisant, le moteur permettra la détection de collisions entre une boîte et un plan. Notez toutefois que vous n’avez pas à implémenter un système de gestion de collisions. Pour cette phase, vous devez produire une démo où une boîte rectangulaire est lancée dans une pièce rectangulaire fermée. La pièce doit être assez grande pour bien voir le déplacement de la boîte. Les vélocités linéaire et angulaire initiales doivent être non nulles. Lorsque la boîte entre en collision avec un des murs, la démo s’arrête. Vous devez alors générer la collision, c’est-à-dire produire le CollisionData approprié et en afficher le contenu (i.e. point d’impact, normale et interpénétration). Pour ce faire, vous devez, en particulier:

Demo Phase 4
Demo Phase 4

Created by:

3ème trimestre 2021, UQAC, CA

Made with Visual Studio and CLion (with CMake)
Plateforms supported : Windows 32-64bits

Avant de compiler le programme il faut ajouter le chemin de ..\MoteurJV\include\SDL2-2.0.16\lib\x64 dans la variable d’environnement système PATH

Pour CMake dans CLion :
Se rendre dans les CMake Option et recopier la ligne ci-dessous en fonction du besoin :