graphisme par ordinateur sif-1032. contenu du cours 12 détection des collisions –sphère/plan...

Post on 04-Apr-2015

105 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

GRAPHISME PAR ORDINATEUR

SIF-1032

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

Détection des collisions (Lesson 30)• Algorithme

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

.

Détection des collisions (Sphère/Plan)• Recherche du point de collision

– L’intersection P est déduite à l’aide des relations suivantes

( ) 0

( )

( ( ) ) 0

( )

( )

( )( )

( )

n P B

P A E A t

n A E A t B

n B Atn E A

n B AP A E A

n E A

Dans le plan

Sur la droite

E: point quelconque sur le rayon

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

0n c

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

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

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

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

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

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

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:

2 ( )R I N N I • I et N sont des vecteurs unitaires• Le vecteur vitesse normalisé peut être substitué à I

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’axeperpendiculaire à l’axe X_Axis

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

_ ( 2 1)

__ '

| _ |

X Axis c c

X AxisX Axis

X Axis

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

1 _ ' ( _ ' 1)

1 1 1

2 _ ' ( _ ' 2)

2 2 2

U x X Axis X Axis U

U y U U x

U x X Axis X Axis U

U y U U x

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

( 1 * 1) ( 2 * 2) ( 1 2 )* 21

( 1 2)

( 1 * 1) ( 2 * 2) ( 2 1 )* 12

( 1 2)

U x M U x M U x U x MV x

M M

U x M U x M U x U x MV x

M M

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

1 1

2 2

1 1 1

2 2 2

V y U y

V y U y

V V x V y

V V x V y

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

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é

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

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

Projet Collision Detection

Projet Collision Detection

Projet Collision Detection

top related