Conférence présentée par GUIBERT Nicolas, POULET Florian et SIMON Camille
Nous allons détailler les différentes méthodes (algorithmes, formules, …) pour simuler les collisions dans les jeux vidéo et autre environnement virtuel. Nous allons entre autre comparer leurs points forts/faibles et leurs cadres d’utilisation. Les algorithmes et des exemples de leur implémentation seront aussi présentés.
5. UN POINT DANS UNE AABB
UN POINT P1 NE SE TROUVE PAS DANS UNE AABB B1 SI :
• P1 SE SITUE COMPLÈTEMENT À GAUCHE DE B1
• P1 SE SITUE COMPLÈTEMENT À DROITE DE B1
• P1 SE SITUE COMPLÈTEMENT EN HAUT DE B1
• P1 SE SITUE COMPLÈTEMENT EN BAS DE B1
8. COLLISION ENTRE 2 AABB
UNE AABB B1 ET UNE AABB B2 NE SONT PAS EN COLLISION SI :
• B1 SE SITUE COMPLÈTEMENT À GAUCHE DE B2
• B1 SE SITUE COMPLÈTEMENT À DROITE DE B2
• B1 SE SITUE COMPLÈTEMENT EN HAUT DE B2
• B1 SE SITUE COMPLÈTEMENT EN BAS DE B2
11. UN POINT DANS UN CERCLE
UN POINT P1 NE SE TROUVE PAS DANS UN CERCLE C1 SI :
• LA DISTANCE ENTRE P1 ET LE CENTRE DE C1 EST SUPÉRIEURE AU RAYON DE C1
14. COLLISION ENTRE 2 CERCLES
UN CERCLE C1 ET UN CERCLE C2 NE SONT PAS EN COLLISION SI :
• LA DISTANCE ENTRE LES CENTRES DEC1 ET C2 EST SUPÉRIEURE À LA SOMME DES RAYONS DE C1 ET C2
18. COLLISION ENTRE POLYGONE
CONVEXE ET POINT
Le vecteur S : Sx = Bx – Ax Sy = By - Ay
Le vecteur T : Tx = Px – Ax Ty = Py – Ay
Déterminant D : D = Sx*Ty – Sy*Ty
Si D est supérieur à 0, alors P est à gauche de la droite AB
Si D est inférieur à 0, alors P est à droit de droite AB
Si D est égal à 0, alors P est sur la droite AB
19. COLLISION ENTRE POLYGONE CONCAVE ET POINT
X=A+t∗AB⃗ D⃗ = AB⃗
X=I+u∗IP⃗ E⃗ = IP⃗
Ax+t∗Dx = Ix+u∗Ex
Ay+t∗Dy = Iy+u∗Ey
t = - Ax∗Ex - Ix∗Ey - Ex∗Ay + Ex∗Iy
Dx∗Ey - Dy∗Ex
20. COLLISION ENTRE POLYGONE CONCAVE ET POINT
Vecteur u ⃗ (AB) Vecteur v ⃗ (AC)
|u.x∗v.y – u.y∗v.x|
√ (u.x² + u.y²)
25. LES MASQUES
Un Masque une image faite de
2 couleurs
Représentation d’un objet de
façon monochrome
26. POINT SUR UNE IMAGE
Test de la zone AABB du masque
(point dans AABB)
Test de collision au pixel
27. MASQUES MULTICOLORES
Jeux point & clic ou
menu de jeu
Deux images
Une original
Une avec des masques
Test de la couleur du masque au clic
28. PIXEL PERFECT
Detection de collision entre 2
objets au pixel près
Premier test > collision AABB entre les deux masques
Algorithme qui test chaque pixel
Prendre l’image la plus petite
Test sur la zone rectangulaire en collision
VERSUS
29. PARTITIONNEMENT
UN NIVEAU PEUT CONTENIR PLUSIEURS CENTAINES/MILLIERS D’OBJETS
• COMMENT FAIRE POUR RÉDUIRE LE NOMBRE DE TEST À EFFECTUER ?
30. LA GRILLE
• DÉCOUPAGE EN BOÎTES IDENTIQUES
• CHAQUE BOÎTE CONTIENT UNE LISTE D’OBJETS
• DÉCOUPAGE EFFECTUÉ AU CHARGEMENT
( OU SAUVEGARDER DANS LE FICHIER DU NIVEAU )
32. LE QUADTREE
• DÉFINIR LE NOMBRE MAX D’OBJETS PAR BOÎTE
• DÉCOUPAGE RÉCURSIF DE CHAQUE BOÎTE EN4
• TANT QU’IL Y A TROP D’OBJETS DANS UNE LISTE, ON LA DÉCOUPE
Niveau
1 2 3 4
41 42 43 44
37. SOL COURBE
Fonction cartésienne f(x)= y
Si f(x) > y on est au-dessus
Si f(x) < y on est en-dessous
Dérivée f’(x) avec une valeur seuil ‘z’
Si f’(x) > z on ne peut pas franchir
Si f’(x) < z on peut franchir
Point aux coordonnées x et y (bas milieu de l’AABB)
Difficulté c’est pour toute coordonnée x il faut connaitre la coordonnée y du sol
C’est masque monochrome qui va permettre de tester la collision au pixel près
Si dans AABB du masque
On regarde la couleur du pixel sur lequel la souris se trouve. Si c’est blanc ya collision sion izok
Normalement l’image avec les masques c’est constitué que de masques de couleur.
2 personnages et leur masques
Nous voulons savoir si les deux zones blanche se touche
On prend chaque pixel et si on trouve un pixel blanc sur notre masque on vérifie qu’au meme endroit dans le masque 2 il n’y ai pas de pixel blanc, sinon on a une collision;
Ordonnée du point bas de la bounding box
Point aux coordonnées x et y (bas milieu de l’AABB)
Difficulté c’est pour toute coordonnée x il faut connaitre la coordonnée y du sol
Chaque élément s’inscrit dans une cellule de la grille.
Savoir si un point P touche un mur, il suffit de savoir ou on se situe et si cette case correspond à un mur ou non
Chaque élément s’inscrit dans une cellule de la grille.
Savoir si un point P touche un mur, il suffit de savoir ou on se situe et si cette case correspond à un mur ou non
Les objets du décor cachent les tiles de derrière