1. #1
    Membre régulier Avatar de BioKore
    Homme Profil pro
    Ingénieur généraliste
    Inscrit en
    septembre 2016
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur généraliste
    Secteur : Conseil

    Informations forums :
    Inscription : septembre 2016
    Messages : 83
    Points : 98
    Points
    98

    Par défaut gestionaire de collision "façon moustaches"

    Bonjour à tous,

    Toujours dans le cadre de mon projet d'apprentissage par renforcement, je souhaiterais essayer un aspect que l'on retrouve dans nombre de projets : les "moustaches" tactiles.
    Puisqu'une image / video en dira sûrement plus qu'un long discours, voir ci-dessous :




    Ici, l'agent est équipée d'une 30aine "states sensors" qui lui servent à se repérer dans l'espace. En plus de pouvoir lui permettre de "palper" son environnement, il est possible aussi de dire quel est le type de l'objet touché (ou au moins de différencier ces derniers).


    Alors voilà, donc comme vous vous en doutiez, je me pose donc la question de savoir comment réaliser ces moustaches (le reste est déjà tout fait avec SFML). Je n'ai jamais fait de gestion de collision, et même en suivant les tutos de ce site sur le sujet, je ne suis pas certain de savoir quel algo choisir, comment l'implémenter, ni de savoir comment retourner le type de l'objet "palpé" (l'agent doit pouvoir identifier s'il touche un mur, un ami un ennemi etc...).

    Pour info, l'objectif de mon projet est d'en arriver, à peu de choses près, au même résultat proposé par la vidéo.


    Merci d'avance !

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Network game programmer
    Inscrit en
    juin 2010
    Messages
    5 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 5 011
    Points : 21 036
    Points
    21 036

    Par défaut

    Salut,

    si tu n'as que ce nombre fini et faible d'objets, tu peux te contenter d'une implémentation brute force.
    Tu réalises le test entre chaque moustache, chaque cercle et mur.
    Tes moustaches ne sont rien d'autre que des segments, un mur peut être assimilé à une droite et un cercle, et bien c'est un cercle.
    Pour les murs, ça devrait être des plus simples : si l'extrémité du segment dépasse le mur, en x ou y selon de quel côté il s'agit.
    Pour les cercles, suffit de poser les équations, tu as un sujet qui en parle ici https://www.developpez.net/forums/d2...egment-cercle/ et un article là https://jeux.developpez.com/tutoriel...complexes/#LIV
    Après il faut un peu architecturer autour pour avoir les infos de quel élément est touché réellement, là ça dépend de ton programme et ton implémentation/architecture.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre régulier Avatar de BioKore
    Homme Profil pro
    Ingénieur généraliste
    Inscrit en
    septembre 2016
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur généraliste
    Secteur : Conseil

    Informations forums :
    Inscription : septembre 2016
    Messages : 83
    Points : 98
    Points
    98

    Par défaut

    Merci pour ce retour ; je vais essayer d'étudier ça plus sérieusement dan mes temps libres sur cette semaine....
    L'aspect mathématiques des choses ne m’effraie pas plus que ça (ça ne veux pas dire pour autant que je pigerais tout du premier coup non plus), mais c'est plutôt l'implémentation qui me stress un peu...

    Je pense que, pour bien faire, il faudrait que je puisse récupérer plus précisément le point d'intersection entre une moustache et un objet. De cette manière, je ne récupère pas non seulement un booléen, mais aussi la distance qui me sépare de l'objet.

    Quoi qu'il en soit, je te remercie pour ce retour. Je vais essayer d'implémenter ça sur un petit exercice tout simple et voir ce que j'en tire. Si vous avez d'autres conseils, d'autres sources explicatives, ou tout autre élément qui semble pouvoir m'aider, je suis preneur !


    Merci beaucoup !

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Network game programmer
    Inscrit en
    juin 2010
    Messages
    5 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 5 011
    Points : 21 036
    Points
    21 036

    Par défaut

    Avec une bonne implémentation de vecteurs, il est normalement assez simple de résoudre ce genre de problèmes.
    En C++ j'adopte GLM pour ces calculs en général.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Membre régulier Avatar de BioKore
    Homme Profil pro
    Ingénieur généraliste
    Inscrit en
    septembre 2016
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur généraliste
    Secteur : Conseil

    Informations forums :
    Inscription : septembre 2016
    Messages : 83
    Points : 98
    Points
    98

    Par défaut

    Oui, j'ai croisé un ou deux documents qui abordaient GLM je crois bien....

    En ce qui me concerne, et compte tenu de la typologie de ce projet, je comptais faire l'implémentation complète moi-même dans un premier temps.
    Pour le moment, le "moteur physique" est fait de ma main, et je suis justement en train d'implémenter quelque chose de plus robuste que ce que j'ai actuellement...

    J'ai bien conscience que je refais un peu le monde et en moins bien (pleins de libs font ça mieux) mais j'aime être dans le bain. Cependant, si GLM est "d'une simplicité ultime", alors je me laisserais tenter...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quote et double quote
    Par aktos dans le forum Fonctions
    Réponses: 8
    Dernier message: 05/01/2007, 19h55

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