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 :

Mouvement dans la direction du model


Sujet :

XNA/Monogame

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Mouvement dans la direction du model
    Bonjour a tous

    Je suis étudiant 4eme année info et je teste le XNA par pur plaisir ( façon de parler en fait ^^ )

    Bref, je tente de faire un jeu tout con pour le moment, ou je fait bouger un vaisseau 3D dans un espace "libre".
    J'arrive à le faire bouger "sans" problème avec une vue à la lylat wars ( pour ceux qui connaissent ).

    Mon problème vient quand je tente de faire bouger le vaisseau dans un environnement vraiment libre. En gros, le faire tourner et le faire avancer.
    J'arrive à le faire tourner, mais pas à le faire avancer dans la direction ou il s'est tourné, là il avance tout droit. ( je sais pas si je suis clair :/ )



    Si vous auriez des pistes à me donner sur le sujet ou des liens interessant je suis tout a fait preneur

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 360
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 360
    Points : 20 376
    Points
    20 376
    Par défaut
    Salut,

    -pour déplacer le vaisseau, il faut que tu calcules les nouvelles coordonnées de ton vaisseau avec des transformations trigonométriques.
    -il faut modifier la vue de la caméra et lui faire faire des rotations ( calcul sur les matrices projection et vue)

    Pour déplacer le vaisseau je peux t'envoyer un morceau de code fait avec SDL

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 855
    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 855
    Points : 218 551
    Points
    218 551
    Billets dans le blog
    118
    Par défaut
    Bonjour,
    Citation Envoyé par Mat.M Voir le message
    Salut,

    -pour déplacer le vaisseau, il faut que tu calcules les nouvelles coordonnées de ton vaisseau avec des transformations trigonométriques.
    -il faut modifier la vue de la caméra et lui faire faire des rotations ( calcul sur les matrices projection et vue)

    Pour déplacer le vaisseau je peux t'envoyer un morceau de code fait avec SDL
    XNA propose tout un tas de fonctions pré implémenté pour modifier des matrices ... faire des rotations appliqué les transformations.
    On trouve tout cela dans la class Matrix. Y a même des Quaternion.
    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.

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Les quaternion, j'avais commencé à regarder mais ca me semblait barbare au plus haut point :/

    Donc en gros d'après ce que je comprend faut que je modifie la matrice du vaisseau ?

    *réflexion à haute voix*
    La matrice contient la position et l'orientation du vaisseau, donc en appliquant les transformations et rotation du vaisseau à la matrice, du coup ca "change" la position des axes x-y-z et donc on avancera en changeant z "à chaque fois"...

    c'est ca ou je suis à l'ouest ?

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 855
    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 855
    Points : 218 551
    Points
    218 551
    Billets dans le blog
    118
    Par défaut
    Chaque objet à une matrice attaché à lui (même si des fois on utilise la même pour tous, en l'ayant changer pour chaque objet (houla ... cette parenthèse est à passer si vous ne comprenez pas mon point de vue))
    Une matrice définie:
    - Une mise à l'échelle (Scaling)
    - Une rotation
    - Une translation

    Pour faire apparaitre un objet à une position x y z , avec une rotation u v w ... il faut donc faire en sorte que cette matrice contienne l'information(Translation X Y Z ; Rotation U V W).
    XNA donne des fonctions pour crée très rapidement des matrices ce qui aide énormément.
    De plus, il y a une gestion des quaternions (voir la FAQ Mathématique de ce site), car les quaternions sont le moyen le plus sur de faire des rotations sur un objet
    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.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Points : 22
    Points
    22
    Par défaut
    je ne connais pas XNA, mais je dirais que pour faire avancer ton vaisseau, il te faut établir un vecteur direction, dont les composantes
    seraient calculé à partir de la matrice d'orientation de ton vaisseau.

    genre (en speudo code) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Matrix rotation = vaisseau_matrix
    rotation.setPosition(0,0,0) 
    Vector dir(movex, movey, movez)
    dir.Vec3TransformCoord( vaisseau_matrix )
    position_vaisseau = position_vaisseau + dir

  7. #7
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 360
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 360
    Points : 20 376
    Points
    20 376
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Bonjour,

    XNA propose tout un tas de fonctions pré implémenté pour modifier des matrices ... faire des rotations appliqué les transformations.
    On trouve tout cela dans la class Matrix. Y a même des Quaternion.
    oui je sais bien mais je crois qu'il y a erreur...
    les matrices c'est bon pour faire une rotation de l'objet sur lui-même PAS sur son mouvement et les différentes positions.

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 855
    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 855
    Points : 218 551
    Points
    218 551
    Billets dans le blog
    118
    Par défaut
    Bah... je viens de regarder des videos de Lylat Wars ... et le vaisseau tourne sur lui meme pour moi... tout le reste du jeu est de la triche ... c'est limite si ce n'est pas en 3D


    Apres, pour le cas que vous dites, oui il faudrait mieux un vecteur de direction
    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.

  9. #9
    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
    Je te conseil d'étudier le code de cet exemple :

    http://create.msdn.com/en-US/educati...le/chasecamera

  10. #10
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 255
    Points : 445
    Points
    445
    Par défaut
    Salut Yoann,

    Un simple tuto ici:
    http://rbwhitaker.wikidot.com/basic-matrices

    Ce wiki a des tutos très bien faits.

    Essaie d'abord les matrices basiques avant de passer aux Quaternion.

    Salutations.

  11. #11
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci à tous de vos réponses

    -fabiani
    Je me sert déjà de ce tuto qui est effectivement très bon, il m'a éclairé sur pas mal de point mais j'avoue que des fois mon anglais me fait légèrement défaut ^^


    - Yodaime
    Trouvé aussi ^^, mais je perd le fils a un moment dans le code ( faut que je m'y replonge ^^ )



    Merci à tous pour les conseils des autres personnes aussi, je vous tiendrais au courant de mes avancées, mais cette semaine je vais pas avoir beaucoup de temps pour m'y remettre ( projet Flex en cours à l'école ^^ )

Discussions similaires

  1. WritableRaster + récupérer données dans une "direction"
    Par anaxa_gore dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 13/07/2007, 15h24
  2. Réponses: 7
    Dernier message: 01/05/2007, 21h55
  3. Réponses: 3
    Dernier message: 14/03/2007, 09h24
  4. Réponses: 2
    Dernier message: 20/12/2006, 16h12
  5. probleme mouvement dans un paysage
    Par nonoRedDevils dans le forum OpenGL
    Réponses: 24
    Dernier message: 24/06/2004, 12h12

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