Morgan Beau - Portfolio - Curriculum Vitae

Speedbrick

Sujet : Conception et mise en œuvre d'un simulateur de vie en 3D

Ce projet a été réalisé en binôme dans le cadre du cours d'algorithmie en 1ère année de cycle d'ingénieurie à l’EPSI. L'aspect graphique repose sur l'utilisation de la librairie Open GL et a été développé en C++.

Cahier des charges :

Ce projet vise la simulation d’un aquarium où vivent d’étranges animaux à savoir les Speedbricks et les Cutits. Ce sont des organismes vivant qui vivent, grandissent, s’accouplent, se coupent et meurent.

Les Cutits sont des bactéries qui vivent dans notre aquarium. Ces bactéries se déplacent en groupes et de façon linéaire, horizontalement. La particularité de ces bactéries est qu’elles peuvent « découper » (ou plutôt scinder) un Speedbrick en deux. En effet, lors d’une collision entre un Cutit et un Speedbrick, celui-ci est coupé et une autre tête apparait sur le morceau coupé.


Un banc de Cutits

Les Speedbricks sont des petits animaux dotés d'une tête et d’un corps constitué d’une multitude d’anneaux correspondant à leur âge. A chaque anniversaire ils se voient grandir d'un anneau. Lorsque son heure a sonné, il meurt.
Les Speedbricks de sexe opposés et sexuellement matures peuvent également se reproduire entre eux. Cependant la consanguinité a des conséquences sur leur état mental et leur capacité à se déplacer. La couleur de la tête est déterminé par le sexe de l'individu et de son âge : vert pour les bébés, bleu pour les mâles et rose pour les femelles, ça ne s'invente pas !


Papa Speedbrick  Bébé Speedbrick  Maman Speedbrick

Télécharger le rapport
Télécharger l'exécutable

L'Aquarium

L'aquarium


En vidéo



Les virages

Une des problématiques à laquelle nous avons dû faire face afin de répondre au cahier des charges était celle des virages. En voici une explication extraite du rapport.
Un virage est déclenché à chaque approche d’une paroi de l’aquarium.
Un virage consiste à inverser le vecteur de déplacement normal à la paroi rencontrée.
Par exemple, lors de la « collision » entre un organisme et la paroi se trouvant é la limite X=0 de l’aquarium, le vecteur de déplacement en X (noté velX) est inversé.

Ainsi, on obtient un vecteur retour dont l’angle formé avec la normal à la paroi rencontrée é l’arrivée est identique à celui formé au retour. On a donc l’impression d’un rebond de l’organisme sur la paroi.
Ce principe offrant un rendu trop mécanique aux virages effectués par les organismes, il a été nécessaire de rendre ces derniers plus naturels.

Le retournement gracieux reprend le même principe que le rebond évoqué ci-dessus mais permet d’assouplir le changement de direction. Pour cela, il est nécessaire d'anticiper la collision avant qu'elle n'ait lieu. Chacune des parois est donc "précédée" d’une limite invisible à partir de laquelle chaque organisme doit effectuer un retournement.
On peut donc ainsi rendre l’inversion du vecteur normal à la paroi progressive en l’incrémentant ou le décrémentant jusqu’à ce qu’on obtienne le vecteur de retour inverse.



Le virage en vidéo


Voici comment nous avons implémenté ce retournement "grâcieux". Peut-être que ces quelques lignes pourront être utiles à d'autres...


Pour finir, voici une vidéo un peu plus longue que les autres dans laquelle vous pouvez assiter aux évènements suivants :

  • 0:14 - Première naissance dans le quart inférieur droit de l'aquarium ;
  • 0:30 - Zoom sur les habitants ;
  • 1:40 - Attaque de plusieurs Speedbrick par le grand banc de Cutit situé dans la moitié supérieure de l'aquarium ;
  • 1:53 - Disparition de la première génération de Speedbrick ;
  • 2:16 - Naissance du premier Speedbrick handicapé lé à droite de l'aquarium ;
  • 3:50 - Zoom sur le Speedbrick handicapé lé ;
  • Et bien d'autres choses...



© 2010 morganbeau.fr - Tous droits réservés

Site valide xHTML Strict Site valide CSS niveau 2