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

DirectX Discussion :

changement de titre : Translation selon une orientation


Sujet :

DirectX

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 38
    Points : 27
    Points
    27
    Par défaut changement de titre : Translation selon une orientation
    La question à été abordée plusieurs fois mais je n'ai pas compris la methode pour solutionner ce probleme. (il va donc falloir être le plus simple et comprehensible possible, merci )

    alors j'ai une souris à 6 degres de liberté qui me permet de controler des objets 3D dans un monde. Je peux donc les faire tourner sur eux memes et les faire avancer. Mon problème c'est que les objets "rotatent" autour des axes de leurs repères à eux, mais ne translatent que selon les axes du monde (du repere world). Moi je voudrais qu'ils effectuent tous ces mouvements par rapport à leur repère. En gros si je tourne le vaisseau vers "le bas", je veux qu'il avance ensuite selon l'orientation que je lui ai donné et pas selon un axe unique Z commun à tous les objet et au repere world.

    j'espere que vous pourrez m'apporter votre aide...

    J'ai essayé de sauvegarder "l'ancienne position" de l'objet dans une matrice et d'afficherla nouvelle par rapport à celle ci mais ca n'a pas vraiment marché.

    merci

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Je pense que le plus simple est de stocker le repère local de ton objet (3 axes) et d'effectuer les translations selon ces 3 axes plutôt que par rapport au repère global.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 38
    Points : 27
    Points
    27
    Par défaut
    et comment ferais-tu (en code ou pseudo code) ?

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    La meilleure solution est peut-être de stocker l'orientation de l'objet avec des coordonnées sphériques (2 angles), ainsi pour retrouver tes axes (et donc tes directions pour les translations) il suffit de prendre du cos ou du sin de ces angles. Pour ce qui est des formules exactes je te laisse les trouver sur le net, moi je confonds toujours l'ordre des sin et des cos.
    Et bien sûr tu mets tes angles à jour à chaque fois que tu effectues une rotation de l'objet.

    ...Evidemment ce n'est pas la seule solution, peut-être que quelqu'un a mieux

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 38
    Points : 27
    Points
    27
    Par défaut
    En fait ca revient à poser la question suivante ( à moins bien sur que j'ai fait une conn... ):
    Pourquoi DirectX fait il les rotations selon le repere local à l'objet et les translation suivant le repere world.
    C'est pas possible j'ai surement fait qqch de mal.

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    En fait DirectX ne fait rien, c'est toi en construisant et multipliant tes matrices qui décide tout ça. DirectX lui ne fait que manger ta matrice world et multiplier les vertices que tu lui envoies par celle-ci.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 38
    Points : 27
    Points
    27
    Par défaut
    oui j'ai dit une connerie mais je suis un peu paumé... lol
    c ca : http://www.ulg.ac.be/geothalg/cours1C/node91.html (en bas de page) ?
    ca a pas l'air simple à adapter mais bon je vais regarderca cet aprem

    sinon j'ai vu ça dans le SDK : ID3DXMatrixStack::TranslateLocal
    une idée de ce que ca fait ?

    merci

  8. #8
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    oui j'ai dit une connerie mais je suis un peu paumé... lol
    c ca : http://www.ulg.ac.be/geothalg/cours1C/node91.html (en bas de page) ?
    ca a pas l'air simple à adapter mais bon je vais regarderca cet aprem
    C'est ça oui. En fait il n'y a rien de bien compliqué, l'important est de retenir les formules de passage sphérique -> cartésien (en bas de la page).

    sinon j'ai vu ça dans le SDK : ID3DXMatrixStack::TranslateLocal
    une idée de ce que ca fait ?
    C'est bien expliqué dans la doc : ça effectue une translation dans le repère local de l'objet (en multipliant la translation par la matrice de transformation précédente). Ca ne fera pas ce que tu souhaites, car ça déplacera toujours selon les 3 axes du repère global.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 38
    Points : 27
    Points
    27
    Par défaut
    bon euh... je vais surement dire encore une connerie mais je capte pas grand chose la...
    Les coordonnées sphériques permettent de localiser un objet dans un espace avec le rayon r, et les deux angles theta et µ.
    Mais pour l'orientation... j'ai déja mal à la tête...

  10. #10
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Les vecteurs de ta base doivent être normalisés, càd que ton rayon vaut 1. Ou alors tu prends directement la valeur de ton déplacement.

Discussions similaires

  1. changement valeur liste deroulante selon une autre
    Par popo38 dans le forum Langage
    Réponses: 4
    Dernier message: 28/06/2011, 19h11
  2. [debutant][JTable] Trier selon une colonne
    Par yupa dans le forum Composants
    Réponses: 3
    Dernier message: 08/08/2005, 11h05
  3. Réponses: 2
    Dernier message: 01/05/2005, 14h43
  4. Réponses: 5
    Dernier message: 23/02/2005, 09h43
  5. Changement de l'icone d'une appli sous kdevelop
    Par vedder dans le forum Linux
    Réponses: 3
    Dernier message: 06/02/2003, 14h16

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