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

Moteurs 3D Discussion :

Rotation parasite en utilisant les quaternions


Sujet :

Moteurs 3D

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Rotation parasite en utilisant les quaternions
    Bonjour à tous,

    J'avais réussi à programmer les déplacement d'un personnage + camera sur un simple terrain pour mon mini-jeu mais là, je suis en train de faire ceux d'un vaisseau et je me rend compte que c'est autre chose vu qu'il n'y a plus simplement la rotation en Y à gérer

    J'ai lu les cours sur les quaternions (enfin, j'ai essayé de suivre à peu près!), et si j'ai bien tout suivi, je devrai faire un truc de ce genre là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    quat_x=Ogre::Quaternion(Ogre::Radian(mouse_y*(-0.002)),Ogre::Vector3::UNIT_X);
    quat_y=Ogre::Quaternion(Ogre::Radian(mouse_x*(-0.002)),Ogre::Vector3::UNIT_Y);
     
     
    	quat_result=quat_x * quat_y;
     
    	vaisseau->rotate(quat_result);
    Ca fonctionne...presque. En fin de compte j'ai bien mes rotations pitch et yaw mais j'ai aussi une rotation roll parasite!
    En fait, plus le pitch est élevé, plus le roll parasite est important (jusqu'à faire demi tour une fois que le pitch est à 180°)

    Franchement, je suis dessus depuis un moment, j'ai regardé sur plein de forum EN et je n'ai pas vraiment trouvé de réponse...je rame

    Si quelqu'un pouvait me mettre sur la bonne voie, ce sera super sympa!

    PS: Je travaille sur Ogre mais j'ai mis mon post ici car je suppose que ça pourrait très bien arrive sur Irrlicht

  2. #2
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Bonjour et bienvenu sur le forum,

    Personnellement je ferais plus simple.
    Je sauvegarderais X et Y dans 2 variables (en radians ou degrés), puis j'ajouterais la rotation à X et Y.
    Pour finir, j’appliquerais directement cette rotation avec un "setRotation".

    Comme cela, pas besoin de quaternion.

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 60
    Points : 74
    Points
    74
    Par défaut rotation parasites
    Ti-R a raison,,,
    je n ai pas ouvert le code source de ogre ,mais faire 10 rotation de 0.1 degrés radian n est pas recommandé;
    si il ajoute une rotation de 0.1 degrés sauve le quaternion puis fait a nouveau une rotation de 0.1 sauve le quaternion et ainsi de suite il y aura forcement une détérioration;

    essaye plutôt de faire ainsi

    sauve le quaternion d origine du vaisseau dans une variable
    sauve la position x et y et la souris

    puis a chaque image re-capture la position de la souris:
    soustrait la position de souris sauvegardée a la position actuelle,
    multiplie le quaternion sauvé par le quaternion généré avec une valeur d angle générée a partir de la différence entre la position de la souris sauvegardé et l actuelle;
    applique la rotation

    en plus en procédant ainsi tu peut annulé tes rotation (avec le bouton droit de la souris par exemple)

Discussions similaires

  1. Rotation d'une poutre par les quaternions
    Par Syens dans le forum Physique
    Réponses: 1
    Dernier message: 26/01/2011, 01h59
  2. Problème avec une caméra utilisant les quaternions
    Par Bakura dans le forum Développement 2D, 3D et Jeux
    Réponses: 17
    Dernier message: 15/12/2007, 19h26
  3. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  4. Merci d'utiliser les TAG
    Par Cian dans le forum Etudes
    Réponses: 0
    Dernier message: 07/08/2003, 17h46
  5. Utiliser les frames
    Par laury dans le forum Composants VCL
    Réponses: 5
    Dernier message: 10/05/2003, 10h14

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