Une forme simple et efficace de detection de collision est celle des "Boundary Box":
A chacun de tes objets 3D, tu leur affecte une boite enveloppante c'est a dire qu 'en gros tu cheche le min, max des x y z de tous les points de l'objet et tu creer la boite. Par exemple pour le sommet le plus pret de toi, le plus a gauche et le plus bas, ca sera minz minx et miny ses coordonnees(tout depends de la definition de ton repere mais je pense que tu as compris).
ensuite faut tester si ces boites se rencontrent entres elles (il faut le tester pour tous les objets visibles a l ecran)
Sinon, tu peux faire pareil avec des spheres, tu trouves le centre de gravite de l'objet, tu cherches le point le plus eloigne du centre et tu stocke cette distance Di.
Ensuite pour detecter les collisions entre deux objets, tu regardes la distances entre leur deux centres de gravite, si cette distance D est superieure a D1 + D2 ,c'est qu'il n'y a pas de collision, sinon deux possibilites :
- tu sais que les deux objets sont proches, tu peux effectue des tests plus precis alors(style un avion, le point le plus eloigne du centre sera le bout de l aile, mais si la collision s effectue au niveau du bec, on aura bien D < D1 +D2 mais pourtant pas de contact physique a l'ecran). Donc en gros le premier test est juste une condition pour eviter des calculs de precision quand ils ne servent a rien.
- soit tu declares simplement une collision
Je sais que c 'est bref mais c'est difficile a expliquer comme ca, c'est un sujet tellement vaste bourré d algos differents... Si t'as des questions plus precises je veux bien essayer d'y repondre.
Juste un conseil, si tu fais ca pour un jeu, garde en tete que les detections de collisions doivent etre rapide et "pas si" precises que ca, tu ne peux pas te le permettre pour la rapidite du jeu. Regarde les jeux aujourd'hui en 3D, combien de bug de collision sont visibles...
Aussi, les algos peuvent etre tres differents en fonction du type du jeu que tu developpes, en gros c'est des algos toujours dedie a un jeu unike et non des algos generaliste, il faut feinter au maximum et eviter de calculer toutes les collisions possibles quand ca sert pas.
A plus
Partager