Infographie 3D - Projet

Projet OpenGL - Sufflepuck

Objectifs

A partir des éléments de MESA vus au cours des précédents TP, réaliser la modélisation d'un jeu basé sur l'échange d'un palet sur coussin d'air grâce à une raquette en bois, connu dans les jeux vidéo sous le nom de "Shufflepuck". L'environnement devra correspondre au modèle réel : table, palet et raquettes, par contre on remplacera chacune des extrémités de la table par une paroi en "verre". Un joueur a gagné la partie lorsqu'il est parvenu à toucher la paroi opposée 15 fois. L'utilisateur aura la possibilité de se déplacer autour de la table (rotation, translation, zoom), ceci de facon interactive par l'intermédiaire de la souris ou de touches du clavier. Les mouvements du palet devront être "réaliste", c'est à dire dans notre cas suivre les lois de la mécanique classique.


Principes du "Shufflepuck"

On dispose, sur une table d'un palet sur coussin d'air. Le Shufflepuck se joue généralement à deux. Chaque joueur doit toucher l'autre extrémité de la table avec le palet pour gagner.

Pour plus d'explications, voir "Sufflepuck cafe".


Modélisation du "Shufflepuck"

Quelques idées de modélisation ...

image0 image1


Interaction

Elle consiste en une animation des raquettes et du palet en tenant compte de la vitesse angulaire et des chocs palet-raquette, palet-rebord. L'une des raquettes sera déplacée par l'intermédiaire de la souris, l'autre par une ou plusieurs fonctions de déplacement. De plus, l'utilisateur doit pouvoir se déplacer autour de la table . Il doit aussi avoir la possibilité d'allumer ou d'éteindre chaque source lumineuse et d'activer/désactiver certaines options de rendu (texture, lumière, ...).


Rappels de mécanique

Vitesse angulaire

La rotation d'un cercle sur lui-même durant son déplacement, ou vitesse angulaire, s'exprime par la relation :

Vr = -Vt/R

avec Vr : vitesse de rotation, Vt : vitesse de translation, R : rayon du cercle.

Choc élastique

Dans les deux cas (palet-raquette ou palet-rebord), la collision est élastique ce qui peut s'exprimer par deux lois : conservation de la quantité de mouvement et conservation de l'énergie. On modélisera les mouvements du palet en prenant en compte 3 paramètres : sa vitesse suivant X (Vx), sa vitesse suivant Y (Vy) et sa vitesse de rotation (Vr). On peut considérer une raquette comme un obstacle fixe en associant au palet les composantes vitesses V-Vp.

Soient (Vxi, Vyi, Vri) et (Vxe, Vye, Vre) les composantes du palet avant et après un choc (sur un obstacle toujours considéré comme fixe),

  1. la conservation de l'énergie peut s'exprimer par :

    1/2 m (Vxi2 + Vyi2) + 1/2 J Vri2 = 1/2 m (Vxe2 + Vye2) + 1/2 J Vre2

    soit (avec J = mR2/2, moment d'inertie d'un solide homogène) :

\begin{equation*} V_x^2 + V_y^2 + R^2 / 2 V_r^2 = cste\ (I) \end{equation*}
  1. de même, il y a conservation du moment cinétique en I (point d'impact) :

    S(I) = S(G) + MV(G) ^ GI, avec S(G)=JVrk (k vecteur perpendiculaire au plan, G le centre de gravité du palet)

    soit

\begin{equation*} J V_r - V_x R M = cste\ (II) \end{equation*}
  1. enfin, on observe que :
\begin{equation*} V_y e = -V_y i\ (III) \end{equation*}

Dont on déduit la solution (en posant l (lift) = Vx + R Vr) :

Vx = Vx + 2/3 l

Vy = -Vy

Vr = Vr + 4l/(3R)

L'interêt de cette approche, c'est que les solutions obtenues sont directement utilisables pour définir les nouveaux vecteurs vitesses en sens et orientation.


Le projet peut être complété par des options permettant un rendu réaliste de la scène (textures, reflets, ...).