paf!? le mur
TRANSCRIPT
THÉORIE DES COLLISIONS
PAF ?! LE MUR
•NICOLAS GUIBERT
• FLORIAN POULET
•CAMILLE SIMON
EQUIPE
• FORMES SIMPLES
• FORMES COMPLEXES
•COLLISION AU PIXEL PRÈS
• PARTITIONNEMENT
•DÉCOR
•SPRITES ENRICHIS
SOMMAIRE
FORMES SIMPLES
Le point
Le rectangle aligné sur les axes
Le cercle
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
UN POINTDANSUNE AABB
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
COLLISIONENTRE 2AABB
UN POINT DANS UN CERCLEUN 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
UN POINTDANSUN CERCLE
COLLISION ENTRE 2 CERCLESUN CERCLE C1 ET UN CERCLE C2 NE SONT PAS EN COLLISION SI :
• LA DISTANCE ENTRE LES CENTRES DE C1 ET C2 EST SUPÉRIEURE À LA SOMME DES RAYONS DE C1 ET C2
COLLISIONENTRE 2CERCLES
FORMES COMPLEXES
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 ABSi D est inférieur à 0, alors P est à droit de droite ABSi D est égal à 0, alors P est sur la droite AB
COLLISION ENTRE POLYGONE CONCAVE ET POINTX=A+t∗AB⃗ D⃗ = AB⃗
X=I+u∗IP⃗ E⃗ = IP⃗
Ax+t∗Dx = Ix+u∗ExAy+t∗Dy = Iy+u∗Ey
t = - Ax∗Ex - Ix∗Ey - Ex∗Ay + Ex∗Iy Dx∗Ey - Dy∗Ex
COLLISION ENTRE POLYGONE CONCAVE ET POINTVecteur u ⃗ (AB) Vecteur v ⃗ (AC)
|u.x∗v.y – u.y∗v.x| √ (u.x² + u.y²)
COLLISION ENTRE POLYGONE CONCAVE ET POINT
AB⃗. AC⃗
BA⃗. BC⃗
AABB ET CERCLE
AABB ET CERCLEs1=GJ⃗.GH⃗ s2=HJ⃗.GH⃗
s1∗s2 > 0
COLLISION AU PIXEL PRÈS
LES MASQUES
Un Masque une image faite de 2 couleurs
Représentation d’un objet de façon monochrome
POINT SUR UNE IMAGE
Test de la zone AABB du masque (point dans AABB)
Test de collision au pixel
MASQUES MULTICOLORESJeux point & clic ou menu de jeu
Deux imagesUne originalUne avec des masques
Test de la couleur du masque au clic
PIXEL PERFECTDetection de collision entre 2 objets au pixel près
Premier test > collision AABB entre les deux masques
Algorithme qui test chaque pixelPrendre l’image la plus petiteTest sur la zone rectangulaire en collision
VERSUS
PARTITIONNEMENT
UN NIVEAU PEUT CONTENIR PLUSIEURS CENTAINES/MILLIERS D’OBJETS
• COMMENT FAIRE POUR RÉDUIRE LE NOMBRE DE TEST À EFFECTUER ?
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 )
LA GRILLE
INCONVÉNIENTS :
• DÉTERMINER LE NOMBRE DE BOÎTES VOULU
• RÉPARTITION HÉTÉROGÈNE
LE QUADTREE
• DÉFINIR LE NOMBRE MAX D’OBJETS PAR BOÎTE
• DÉCOUPAGE RÉCURSIF DE CHAQUE BOÎTE EN 4
• TANT QU’IL Y A TROP D’OBJETS DANS UNE LISTE, ON LA DÉCOUPENiveau
1 2 3 4
41
42
43
44
LE QUADTREE
INCONVÉNIENT :
• POTENTIEL DÉSÉQUILIBRE
LE BSP
• DÉCOUPAGE RÉCURSIF DE CHAQUE BOÎTE EN 2
• DROITE DE DÉCOUPE « ASTUCIEUSE »
DÉCOR
SOL PLATAltitude A
Bounding box (rectangle englobant, cadre de limite)
Si B BOX > A
Si B BOX < A A
B BOX
SOL COURBEFonction cartésienne f(x)= y
Si f(x) > y on est au-dessusSi 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 franchirSi f’(x) < z on peut franchir
TILES DROITS
Tiles
Carreaux répétitifs réguliers
TILES DROITS
TILES DROITS
TILES ISOMÉTRIQUES
Tiles inclinés pour effet 3D
SPRITES ENRICHIS
Point Chaud
Point d’action
Sous-AABB
POINT CHAUD
POINT D’ACTION
SOUS-AABB
MERCI DE VOTRE ATTENTION