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

Développement 2D, 3D et Jeux Discussion :

Série de tutoriels sur la théorie des collisions


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut Série de tutoriels sur la théorie des collisions
    Bonjour à tous,

    La rubrique 2D/3D/Jeux vous propose des tutoriels sur la théorie des collisions dans les jeux, notamment ceux en 2D. De multiples sujets sont abordés comme :
    • la détection de collision avec des formes simples ;
    • la collision de sprites ;
    • la gestion du décor ;
    • l'optimisation.
    • ...

    Avec ces tutoriels, vous allez maîtriser les principes à la base de tout jeux vidéo et ainsi pouvoir réaliser le votre.

    Bonne lecture !
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  2. #2
    Membre du Club
    Femme Profil pro
    Étudiante
    Inscrit en
    Février 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiante

    Informations forums :
    Inscription : Février 2014
    Messages : 31
    Points : 52
    Points
    52
    Par défaut Un grand merci !
    Magnifiques articles je me régale et cela m'encourage a apprendre la prog en C, un grand MERCI à vous !!!

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Bonjour !

    La partie sur les formes complexes traite de l'usage d'un segment (noté S dans la suite) dont un point F est situé à l'infini pour déterminer si un point P est ou non dans un polygone.
    Il apparaît clairement que, pour les besoins de la collision, les côtés des polygone sont des segments de la forme [AB[. B est en effet exclu du segment pour éviter des problèmes de double collisions.

    Après quelques tests, il me semblais que cette solution est inadaptée dans certains cas :
    - dans le cas où P est situé sur le segment d'un polygone, il sera détecté en dehors dudit polygone si le segment S n'a pas rencontré d'autres segment du polygone avant cela, et en dedans dudit polygone si S devait croiser auparavant d'autres côtés.
    Ainsi, le simple fait de choisir une "direction" pour S oriente la détection de collision, dans le sens où les côtés de polygones faces à F seront à l'extérieur du polygone, alors que les autres seront à l'intérieur.
    - dans le cas où le segment S passe exactement par un sommet du triangle, un seul des deux côté sera "touché", ce qui signifie que le point P est détecté comme à l'intérieur du triangle, ce qui n'est pas nécessairement vrai.

    Enfin, la fonction de collision gère les cas limites un peu lourdement, AMHA.


    A ces trois points, il y a une "amélioration" à proposer :
    - Le point F à l'infini peut être remplacé par un point à l'intérieur du polygone. Dans le cas d'un triangle, c'est facile, on prend le centre de gravité, qui existe toujours à l'intérieur du triangle. La condition de collision est exactement inverse. Ça ne règle cependant pas le problème du passage sur un sommet du polygone. (il faudrait peut-être considérer, pour ce calcul, que tous les côtés sont des segments de la forme [AB], et non [AB[)
    - pourquoi s'embêter avec de l'aléatoire ? Le seul cas limite rencontré étant le parallélisme, il suffit de le briser le moment venu, en faisant faire un offset sur un seul des axes au point F. Même pas besoin de modifier le point d'ailleurs, en définir deux d'entrée de jeu et n'utiliser le second que si le premier est pris en défaut est largement suffisant et pas beaucoup plus lourd à gérer.

    Ces deux améliorations peuvent néanmoins difficilement être couplées, dans le sens où déplacer un point ne garantit pas qu'il reste à l'intérieur du polygone. Dans le cas d'un triangle, le centre de gravité ne permet pas d'avoir de situation de parallélisme. Mais une solution généraliste pour tout polygone, je n'en imagine pas facilement...


    J'aimerais savoir ce que vous pensiez de ces réflexions.
    Ne manipulant actuellement que des triangles, j'utilise la solution du centre de gravité, justement pour éviter l'orientation de la collision.


    Quoiqu'il en soit, merci beaucoup pour ce tutoriel, il est vraiment très intéressant et efficace. J'espère que l'auteur auras le temps de le terminer.

    reselsif

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Le centre de gravité est, je pense, une bonne solution dans le cas d'utilisation de triangles uniquement, dans un autre cas, cela risque de ne pas passer.
    Si le point P est sur le segment, l'utilisation d'un epsilon devrait réglé le cas dont vous parlez.

    Après, j'imagine aussi que les problèmes sont réglés principalement avec le cas limite. La sélection d'un nouveau segment suffira à les régler.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. Problème de maths sur la théorie des ensembles
    Par tidus_6_9_2 dans le forum Mathématiques
    Réponses: 8
    Dernier message: 16/09/2008, 21h21
  2. A propos du tutoriel sur la gestion des matrices
    Par Pierre845 dans le forum MATLAB
    Réponses: 1
    Dernier message: 10/04/2008, 13h32
  3. Tutoriel sur la manipulation des fichiers
    Par gelam dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 17/07/2007, 14h32
  4. [MySQL] Problème par rapport au tutoriel sur le stockage des images en base
    Par dark_vidor dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/09/2005, 10h37

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