La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

GRAPHISME PAR ORDINATEUR

Présentations similaires


Présentation au sujet: "GRAPHISME PAR ORDINATEUR"— Transcription de la présentation:

1 GRAPHISME PAR ORDINATEUR
SIF-1032

2 Contenu du cours 12 Détection des collisions
Sphère/Plan Sphère/Cylindre Sphère/Sphère Modélisation physique de la réponse à une collision Rebondissement des sphères Effets spéciaux Explosion (son et image) Site NeHe: Leçon 30 Voir le lien:

3 Détection des collisions (Lesson 30)
Algorithme

4 Détection des collisions (Sphère/Plan)
Recherche du point de collision . P: le point d’intersection (hit point) A: le centre de la sphère c: la direction du rayon B: un point quelconque sur le plan n: normale au plan

5 Détection des collisions (Sphère/Plan)
Recherche du point de collision L’intersection P est déduite à l’aide des relations suivantes Dans le plan Sur la droite E: point quelconque sur le rayon

6 Détection des collisions (Sphère/Plan)
Recherche du point de collision Cas particulier (rayon parallèle au plan) Dans le projet Collision Detection (leçon 30) la fonction TestIntersionPlane() permet de trouver le point d’intersection d’un rayon avec un plan

7 Détection des collisions (Sphère/Plan)
Fonction TestIntersionPlane() permet de trouver le point d’intersection d’un rayon avec un plan

8 Détection des collisions (Sphère/Cylindre)
Recherche du point de collision Plus complexe que le cas Sphère/Plan Dans le projet Collision Detection (leçon 30) la fonction TestIntersionCylinder() permet de trouver le point d’intersection d’un rayon avec un cylindre Voir dans Graphic Gems II Book (pp 35, intersection of a with a cylinder). Un cylindre possède un axe et un rayon (diamètre)

9 Détection des collisions (Sphère/Sphère)
Recherche du point de collision Pour déterminer si deux sphères se touchent, nous pouvons calculer la distance entre les centres des deux sphères et déterminer si cette distance est plus petite ou égale à la somme des rayons des sphères Lorsque les sphères sont mobiles, il faut trouver un autre moyen pour déterminer si une collision peut survenir

10 Détection des collisions (Sphère/Sphère)
Recherche du point de collision Si deux sphères se déplacent d’un point à un autre durant un intervalle de temps, leur trajectoire se croise mais une collision ne surviendra pas nécessairement

11 Détection des collisions (Sphère/Sphère)
Lorsque les formes des objets d’une scène sont complexes ou que les équations de détection de collisions ne sont pas disponibles ou quelles ne peuvent être résolues, une autre méthode de détection de collisions doit être utilisée Une nouvelle approche basée sur les points de départ et de fin des objets (ex: sphère) découlant de la direction de leur déplacement, de leur vitesse et d’un intervalle de temps, est implémentée Dans le projet Collision Detection (leçon 30) la fonction FindBallColl() permet de trouver les paires de sphères qui se touchent dans un intervalle de temps donné, leur point d’intersection et le temps de la collision

12 Détection des collisions (Sphère/Sphère)
Détection de collisions dans un contexte d’objets mobiles Après avoir déterminé la position d’une collision potentielle il faut alors déterminer si l’intersection des trajectoires signifie que les objets entreront en collision

13 Détection des collisions (Sphère/Sphère)
Détection de collisions dans un contexte d’objets mobiles Pour déterminer si une collision surviendra il faut: Calculer pour un intervalle de temps donnée la distance (Dst) entre le point de départ et le point de fin de la trajectoire de l’objet en fonction de sa vitesse et de sa direction Calculer la distance (Dsc) entre le point de départ et le point de collision potentielle SI Dsc < Dst ALORS une collision est imminente Pour calculer la position exacte de cette collision, nous pouvons calculer en premier lieu le temps Tc de l’impact par: Tc = Dsc * T/Dst où T est l’intervalle de temps considéré Le point d’impact est alors donné par: Pc = S + V*Tc où S est le point de départ de l’objet mobile Pc le point d’impact et V la vitesse de déplacement

14 Détection des collisions (Sphère/Sphère)

15 Modélisation physique de la réponse à une collision
Quand un objet entre en collision avec une surface d’un objet statique, il rebondit et change par le fait même de direction L’angle de la nouvelle direction est donnée par: I et N sont des vecteurs unitaires Le vecteur vitesse normalisé peut être substitué à I

16 Modélisation physique de la réponse à une collision
Calcul du vecteur direction et vitesse

17 Modélisation physique de la réponse à une collision
Quand deux sphères mobiles entrent en collision, il faut alors déterminer la direction et la vitesse de déplacement de chacune des sphères U1 et U2 sont les vecteurs vitesse au moment de l’impact X_Axis est le vecteur entre les centres des sphères U1x et U2x sont les projections des vecteurs vitesse U1 et U2 sur X_Axis U1y et U2y sont les projections des vecteurs vitesse U1 et U2 sur l’axe perpendiculaire à l’axe X_Axis

18 Modélisation physique de la réponse à une collision
Pour trouver ces vecteurs, nous devons aussi considérer la masse de chaque sphère (M1, M2) Nous trouvons alors V1 et V2 les vecteurs vitesse découlant de l’impact des deux sphères Détermination de l’axe X_Axis

19 Modélisation physique de la réponse à une collision
Nous trouvons alors V1 et V2 les vecteurs vitesse découlant de l’impact des deux sphères Détermination des projections

20 Modélisation physique de la réponse à une collision
Nous trouvons alors V1 et V2 les vecteurs vitesse découlant de l’impact des deux sphères Détermination des nouvelles vitesses

21 Modélisation physique de la réponse à une collision
Nous trouvons alors V1 et V2 les vecteurs vitesse découlant de l’impact des deux sphères Détermination des vitesses finales

22 Modélisation physique de la réponse à une collision
Nous trouvons alors V1 et V2 les vecteurs vitesse découlant de l’impact des deux sphères

23 Modélisation physique de la réponse à une collision
Les vitesses des objets en mouvement peuvent être recalculées à chaque itération en fonction de l’accélération subie par les objets. Vitesse: Velocity_New = Velocity_Old + Acceleration*TimeStep Position: Position_New = Position_Old + Velocity_New*TimeStep Acceleration: a = F/m, F: Forces appliquées sur l’objet, ex: gravité

24 Effets spéciaux A chaque fois qu’une collision survient (Projet Collision Detection), deux textures centrées au point d’impact sont affichées avec un coefficient d’opacité qui diminue dans le temps tandis que sa dimension augmente A chaque fois qu’une collision survient entre deux sphères le fichier explode.wav est joué

25 Effets spéciaux (effets visuels: DrawGLScene())

26 Effets spéciaux (effets visuels: initGL())

27 Projet Collision Detection

28 Projet Collision Detection

29 Projet Collision Detection


Télécharger ppt "GRAPHISME PAR ORDINATEUR"

Présentations similaires


Annonces Google