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

XNA/Monogame Discussion :

[XNA] Récupération coordonnées modèle 3D


Sujet :

XNA/Monogame

  1. #1
    Nouveau Candidat au Club
    Étudiant
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut [XNA] Récupération coordonnées modèle 3D
    Bonjours à tous, je viens à vous après deux semaines de recherche sur mon problème, sans succès ni trouvaille intéressante !

    Pour la petite histoire: je suis actuellement sur un projet XNA (pour les cours), qui doit permettre de visualiser un mannequin 3D, le manipuler (le visualiser sous toutes les coutures si vous préférez) et apposer des notes sur celui-ci pour les enregistrer dans une base de donnée.

    L'état du projet actuel est:
    -Affichage et manipulation du mannequin OK
    -Ajout des commentaires OK (grâce à un GUI nommé nuclex qui m'affiche des fenêtres de dialogue dans lesquelles je peux entrer du texte)
    -Associer ces commentaires à des parties du corps --> c'est ici que sa bloque

    En faite le programme me permet d'ajouter un nombre de fenêtres de dialogue infini mais j'aimerais associer chacune de ces boites de dialogue au mannequin à travers une ligne/vecteur qui relierai la fenêtre au mannequin

    Problème: récupérer les coordonnées écran du modèle 3D pour:
    1- détecter si on se trouve bien sur le mannequin avec le pointeur de souris
    2- associer ces coordonnées à l'extrémité de la ligne qui lierai la fenêtre au mannequin

    Je ne sais pas si je pars dans la bonne direction car pour détecter la "collision" (entre la souris et le modèle 3D) je sais qu'il existe les bounding box / bounding sphere mais elles ne sont pas assez précises étant donné que chaque partie de mon modèle doit pouvoir être cliqué et associé aux coordonnées de mes lignes.

    Pourriez-vous m'éclairer svp ?? Je vous joint un imprim'écran pour que mes explications soient plus claires...



    Merci !

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 861
    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 861
    Points : 219 058
    Points
    219 058
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    1- détecter si on se trouve bien sur le mannequin avec le pointeur de souris
    Avez vous déjà trouver ( et qui marche ) la méthode pour récupéré les coordonnées 3D d'un clic. Sinon, il vous faudra chercher une méthode de lancer de rayon. Je ne sais plus où, mais j'avais trouvé un bon tutoriel ( avec sources ) sur xna-creators. Il présenté la localisation du clic et la selection des objets selon ce clic.
    2- associer ces coordonnées à l'extrémité de la ligne qui lierai la fenêtre au mannequin
    Actuellement, je me demande, car j'imagine que la fenêtre est en 2D, donc sur le plan 2D ( coordonnées ecran ) et que le mannequin est en 3D. Donc si on tourne le mannequin, la boite ne bouge pas, mais le lien entre les deux si. Une méthode pour savoir comment dessiner le lien, c'est peur être de repasser les coordonnées de la boite, en 3D. Par contre, il va falloir faire attention à l'axe de la profondeur.

    Je n'ai pas trop d'idée sur ce point.
    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.

  3. #3
    Nouveau Candidat au Club
    Étudiant
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci pour vos suggestions, j'ai quelque points à éclaircir en rapport avec ce que vous avez dit:

    Pour la méthode de lancer de rayon, il me semble qu'on fait sa à l'aide d'un objet de type Ray (auquel on donne deux vecteurs 3D) qui débute à la position de la caméra et pointe dans la direction du curseur. J'ai cette méthode (tirée d'un sample de XNA creator justement), mais elle est à base de bounding box.

    Je viens a l'instant (comme quoi il me faut des gens pour réflechir...) de trouver un autre sample sur le même site , nommé "Picking with Triangle Accuracy" et qui semble justement convenir avec ce que je cherche à faire, en effet il teste la position de chaque triangle du mesh pour le comparer avec la position écran de la souris...

    Je vous tien au courant de l'avancée de cette recherche et vous remercie encore pour vos suggestions !

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 861
    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 861
    Points : 219 058
    Points
    219 058
    Billets dans le blog
    120
    Par défaut
    Sinon, la première méthode pouvait convenir, car sur un Mesh correctement fabriqué, il y a une multitude de bounding box, et non pas qu'une. Du coup, avec une multitude de bounding box, cela pouvait être assez précis.
    Mais si vous avez mieux .
    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.

  5. #5
    Membre averti Avatar de yodaime
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    282
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2006
    Messages : 282
    Points : 340
    Points
    340
    Par défaut
    Citation Envoyé par Yor Tank Voir le message
    Je viens a l'instant (comme quoi il me faut des gens pour réflechir...) de trouver un autre sample sur le même site , nommé "Picking with Triangle Accuracy"
    J'allais te proposer cet exemple. Je pense que c'est ce qui ce rapproche le plus de ce que tu veux faire.

  6. #6
    Nouveau Candidat au Club
    Étudiant
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Me revoila avec des nouvelles !
    Alors le picking sample que j'ai débusqué est très intéressant MAIS ! (ou il y a un mais...) je ne peux l'exploiter pou les raisons suivantes:
    1- J'ai déjà implémenté une librairie graphique (GUI du nom de nuclex) qui requière un projet XNA 3.1 (jusqu'ici pas de problème)
    2- Le sample de picking par vertex utilise absolument un projet en version 3.0 (j'ai essayé de l'implémenter en 3.1 et ça ne fonctionne pas)

    J'ai donc décidé de passer par des bounding sphères multiples pour mon modèle étant donné que je manque cruellement de temps (je dois rendre mon projet dans 2 jours...) et que je ne pense pas gagner du temps à réimplémenter une GUI en 3.0.

    Si quelqu'un pouvais à ce titre, m'expliquer comment mettre plusieurs boundingbox/boundingsphère sur un seul modèle (qui se trouve être pratiquement aux coordonnées 0,0,0) et surtout comment les afficher sur ma scène pour voir justement où se situent les collisions s'il vous plait ce serait très sympa (un lien vers un tuto, j'ai l'habitude) !!
    D'ailleurs, je pensait juste pour mes tests, afficher une sphère normale en lieu et place de ces boundingsphère avec les mêmes coordonnées et le même rayon. Je pensait que XNA proposait une méthode pour afficher des box et des sphères directement, en savez-vous quelque-chose ?

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 861
    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 861
    Points : 219 058
    Points
    219 058
    Billets dans le blog
    120
    Par défaut
    Citation Envoyé par Yor Tank Voir le message
    D'ailleurs, je pensait juste pour mes tests, afficher une sphère normale en lieu et place de ces boundingsphère avec les mêmes coordonnées et le même rayon. Je pensait que XNA proposait une méthode pour afficher des box et des sphères directement, en savez-vous quelque-chose ?
    Bah, moi aussi je pensais à de telles choses, mais y a pas. Faut le faire à la main.

    Sinon, normalement les boites de collisions, enfin les sphères, elle sont directement dans le fichier du modèle....
    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.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Je reviens faire un tour sur le forum après plusieurs mois d'absences.

    Peut être que le post suivant pourra t'aider, du moins je l'espère.

  9. #9
    Nouveau Candidat au Club
    Étudiant
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci a vous pour les liens, je reviens après quelque temps quand même alors voila ce qu'il en est:
    j'ai du rendre mon rapport de projet vendredi, je n'ai donc pas réussi à terminer les fonctionnalités demandés dans le cahier des charges (j'aurais du me remuer avant...)
    Pour l'état du projet: j'ai des difficultés à associer mes fenêtres à mon modèle, non plus pour les coordonnées 3D, mais a cause de deux choses:

    1- je stocke les coordonnées dans un tableau que je ne mets pas à jours, ce qui fait que lorsque je change ma vue, la ligne garde les mêmes coordonnées écran et donc la liaison n'a plus de sens puisqu'elle pointe soit dans le vide, soit sur le modèle à un autre endroit.

    2- la gestion des fenêtres est un autre point compliqué car utilisant Nuclex comme librairie graphique , je me suis rendu compte que la gestion des fenêtres se faisait à l'aide d'un tableau d'index qui varie malheureusement selon la fenêtre sélectionnée. J'imaginais pouvoir récupérer les coordonnées propres à chaque index mais comme il varie toujours en fonction de la fenêtre sélectionnée, je ne sais comment faire :s.

    Voila voila !

Discussions similaires

  1. [XNA] Affichage de modèle 3D
    Par DotNET74 dans le forum Windows Phone
    Réponses: 0
    Dernier message: 05/11/2011, 10h58
  2. Beta5 : récupération coordonnées du clic dans un formulaire
    Par saxrub dans le forum IGN API Géoportail
    Réponses: 5
    Dernier message: 19/03/2010, 06h03
  3. Récupération du modèle du GPU ?
    Par atomicJo dans le forum OpenGL
    Réponses: 2
    Dernier message: 14/10/2009, 14h24
  4. Réponses: 1
    Dernier message: 21/04/2009, 09h33
  5. [XNA] Afficher un modèle et sa (ou ses) texture(s)
    Par Myth_Titans dans le forum XNA/Monogame
    Réponses: 0
    Dernier message: 30/12/2007, 13h42

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