IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

algorithme de collision 3D


Sujet :

Algorithmes et structures de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 3
    Points : 4
    Points
    4
    Par défaut algorithme de collision 3D
    Bonjour à tous,

    je recherche des algorithmes de collision 3D en C ...
    Donc si quelqu'un pourrait me donner des info ...

    Merci
    La programmation c'est génial !
    ... quand ça marche!

  2. #2
    Membre confirmé
    Avatar de giminik
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    303
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 303
    Points : 482
    Points
    482
    Par défaut
    en gros c'est quoi ton truc ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    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

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par funkeejeffou Voir le message
    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
    bonjour! j'ai presque le meme probleme de collision mais moi je travaille avec l'opengl mon seul probleme est que mon objet se déplace et il faut qu'il detecte la collision entre lui et l'objet devant lui "l'obstacle".je veux faire ça dynamiquement?ça veut duire que je suppose que mes obstacle sont dynamyques et que je connais pas leurs positions/
    si vous avez une idée pour ça.

Discussions similaires

  1. Algorithme de gestion des collisions
    Par Christuff dans le forum Physique
    Réponses: 4
    Dernier message: 11/07/2009, 10h50
  2. L'algorithme AABB (pour les détecteurs de collision)
    Par Fandekasp dans le forum Mathématiques
    Réponses: 2
    Dernier message: 20/08/2007, 09h51
  3. Réponses: 1
    Dernier message: 07/03/2007, 09h28
  4. [2D] Algorithme de collision
    Par elekis dans le forum Physique
    Réponses: 7
    Dernier message: 25/12/2006, 21h09
  5. Algorithme de collisions
    Par TabrisLeFol dans le forum Physique
    Réponses: 7
    Dernier message: 23/02/2006, 15h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo