paf!? le mur

Post on 07-Aug-2015

106 Views

Category:

Engineering

3 Downloads

Preview:

Click to see full reader

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

top related