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

OpenGL Discussion :

Melange d'axes de rotation


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 465
    Par défaut Melange d'axes de rotation
    Bonjour,
    J'utilise les quaternions pour faire des rotations dans une scène 3D. Le vecteur upx est horizontal, uy est vers la profondeur de l'écran et upz est vertical. Au début mon objet 3D est horizontal.
    Lorsque je fais une rotation autour de l'axe Z (upx=0, upy=0, upz=1), tout va bien.
    Lorsque je veux faire une rotation autour de l'axe X (upx=1, up=0, upz=0), mon objet devient vertical. Et si j'essaye upx=1, upy=0, upz=1, j'obtient une rotation autour des deux axes au même temps.
    J'ai le même problème en utilisant les matrice de rotation.
    Comment peut-on faire une rotation sur les différents axes en gardant le même vecteur up?

  2. #2
    Membre émérite
    Avatar de Ange_blond
    Homme Profil pro
    Ingénieur développement en 3D temps réel
    Inscrit en
    Mars 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement en 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Par défaut
    Bonjour,

    c'est peut etre la fin de journée et j'ai environ 9h de codage dans les yeux, mais ton résultat me parait bon par rapport à ce que tu explique.

    Pas sûr de comprendre ce que tu cherche à obtenir en fait ...

    Es tu sûr de distinguer le repere local de l'objet et le repere de ta scene/monde ? car une rotation dans l'un ou dans l'autre ça n'a rien à voir...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 465
    Par défaut
    Citation Envoyé par Ange_blond Voir le message
    Bonjour,
    Es tu sûr de distinguer le repere local de l'objet et le repere de ta scene/monde ? car une rotation dans l'un ou dans l'autre ça n'a rien à voir...
    Je suis dans le repère global dont l'origine (0,0,0) est le barycentre de mon modèle.

  4. #4
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 819
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 819
    Par défaut
    Citation Envoyé par Ange_blond Voir le message
    mais ton résultat me parait bon par rapport à ce que tu explique.
    Pareil pour moi... mais je sors de chez l'orthoptiste qui m'a annoncé que j'avais un problème de divergence de près et de convergence de loin, donc faut espérer que tu sois au milieu!

    Je vais me répéter (vu que ce n'est jamais que le troisième sujet que tu ouvres pour des problèmes de rotation si je ne m'abuse ) mais... on peut avoir des screenshots? des images? des schémas? du code (fonctionnel tant qu'à faire)? un truc sur lequel réfléchir intelligemment?
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  5. #5
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 582
    Par défaut
    le résultat final de ta rotation est dépendant de l'ordre dans lequel tu multipliera tes matrices
    il est donc très important de s'assurer que l'ordre appliqué permette d'orienter ta caméra comme tu le souhaite

    je te conseille de tester différents ordres et de voir ce qui change concrêtement

    en faisant (upx=1, upy=0, upz=1) tu actives un axe qui est dirigé équitablement sur x et sur z
    il est donc logique que ta rotation semble se faire autour des 2 axes en même temps

    c'est la même chose que le déplacement d'un objet
    sur (upx=1, upy=0, upz=0) il va se déplacer sur x
    sur (upx=1, upy=0, upz=1) il va se déplacer en diagonale sur x et z
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 465
    Par défaut
    Citation Envoyé par plegat Voir le message

    Je vais me répéter (vu que ce n'est jamais que le troisième sujet que tu ouvres pour des problèmes de rotation si je ne m'abuse ) mais... on peut avoir des screenshots? des images? des schémas? du code (fonctionnel tant qu'à faire)? un truc sur lequel réfléchir intelligemment?
    Voilà deux imprimés écran de mes deux cas d'orientation du vecteur up:
    1) image1 : upx=0, upy=0, upz=1.
    Nom : image1.jpg
Affichages : 141
Taille : 36,2 Ko
    2) image2 : upx=1, upy=0, upz=0.
    Nom : image2.jpg
Affichages : 96
Taille : 22,7 Ko

    Ma question est: est ce qu'on peu faire des rotations sur les différents axes de rotation (X, Y et Z) sans changer le vecteur up de glulookAt?

  7. #7
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 819
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 819
    Par défaut
    Citation Envoyé par choko83 Voir le message
    Ma question est: est ce qu'on peu faire des rotations sur les différents axes de rotation (X, Y et Z) sans changer le vecteur up de glulookAt?
    Oui, ça revient à bouger tes objets dans la scène... c'est la seconde méthode, la première étant de bouger la caméra. La troisième étant de bouger les objets et la caméra, mais c'est vraiment pour ceux qui veulent se compliquer la vie.

    Bon ben... va falloir du code maintenant... comment utilises-tu tes quaternions? N'y aurait-il pas une inversion d'axe quelque part?
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  8. #8
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    J'avoue que je ne comprends pas trop la question....

    Tu prends une feuille de papier (axes X et Y)
    Tu la mets horizontale
    Tu fais une rotation par rapport à Z (qui monte , note qu'en général, Z est la profondeur, X la largeur, Y la hauteur... mais bon...), ca reste bien horizontal.
    Par contre toute rotation autour d'un des autres axes, verticalise la feuille de papier, c'est donc tout à fait normal !

    Si un vecteur ne doit pas changer, alors c'est ce vecteur qu'il faut utiliser comme axe du quaternion ...

Discussions similaires

  1. Axe de rotation
    Par Johan07 dans le forum Mathématiques
    Réponses: 0
    Dernier message: 05/02/2014, 08h59
  2. Définir un axe de rotation avec Transform.createRotateTransform
    Par Pecose dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 11/01/2014, 03h32
  3. Axe,angle rotation + déplacement
    Par Matlabe dans le forum Traitement d'images
    Réponses: 6
    Dernier message: 08/10/2009, 07h38
  4. Réponses: 9
    Dernier message: 30/08/2005, 20h18
  5. [débutant][c++] Axe de rotation caméra
    Par bornibus dans le forum OpenGL
    Réponses: 2
    Dernier message: 28/02/2005, 10h01

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