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 :

Problème de décalage lors d'une rotation


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur d'étude et réalisation
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'étude et réalisation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Par défaut Problème de décalage lors d'une rotation
    Bonjour,

    J'essaie d'effectuer une rotation autour d'un point pivot de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
            [...]
    	Quaternion	key_quat,		// quaternion from key press
    				temp_quat;		// temp quaternion
     
    	key_quat.FromEuler((float)-m_Anglex, 0.0f, -(float)m_Angley);
     
     
    	temp_quat = m_CameraQuat;				// sauvegarde l'ancien quaternion globale
    	m_CameraQuat = temp_quat * key_quat;	//calcul le nouveau quaternion
     
    	CAxe3D axis;		// temp axis angle representation
    	double angle;
     
    	m_CameraQuat.GetAxisAngle(axis, angle);		// recupere l'angle et les axes de rotation a partir du quaternion global
     
     
    	float ax, ay, az;
    	// recupere les valeurs de l'Axe3D
    	ax = axis.getX();
    	ay = axis.getY();
    	az = axis.getZ();	
    	angle = angle *180/M_PI;
     
    	double deltaX =  m_CentreRotation.getX() - m_CameraPosition.getX();
    	double deltaY =  m_CentreRotation.getY() - m_CameraPosition.getY();
    	double deltaZ =  m_CentreRotation.getZ() - m_CameraPosition.getZ();
     
    	//glTranslatef(-(GLfloat)m_CameraPosition.getX(),-(GLfloat)m_CameraPosition.getY(),-(GLfloat)m_CameraPosition.getZ()); 
     
    	glTranslatef((GLfloat)m_CameraPosition.getX() + m_CentreRotation.getX(),(GLfloat) m_CentreRotation.getY() + m_CameraPosition.getY(),(GLfloat)m_CentreRotation.getZ() + m_CameraPosition.getZ()); 
    	glRotatef((GLfloat)angle, (GLfloat) ax, (GLfloat) ay, (GLfloat) az);	// Appel la methode de rotaion d'openGL
    	glTranslatef(-(GLfloat)m_CameraPosition.getX() - m_CentreRotation.getX(), -(GLfloat)m_CameraPosition.getY() - m_CentreRotation.getY(), -(GLfloat)m_CameraPosition.getZ() - m_CentreRotation.getZ()); 
     
    	// Translation qui recadre la camera pour le zoom si il y en a un 
    	glTranslatef((GLfloat)m_CameraPosition.getX(),(GLfloat)m_CameraPosition.getY(),(GLfloat)m_CameraPosition.getZ());
    Cette méthode est appelée à chaque transformation sur la scène objet. Le problème est que lorsque je fais ma rotation par rapport à un point autre que l'origine je vais bien tourner autour mais avec un décalage (le pivot ne reste pas à sa position d'origine). Je ne sais pas si je suis très clair en fait..
    Si vous avez des questions pour plus de précisions je suis prêt à vous répondre, ça ne peut que l'aider.

    Merci d'avance

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 46
    Par défaut
    Vous avez résolu votre problème de coordonnées ou c’est toujours le même déguisé? S'il est résolu, merci de prendre le temps de poster sur votre ancien sujet ce qui vous a permis de vous en sortir, que cela puisse servir à d'autres.

    Pour ce qui est de ce problème là, effectivement j'aimerais des précisions sur ce que vous appelez "décalage". Pour moi c'est encore une histoire de repère (les salauds!).

    -> Voulez vous dire que vous désirez effectuer plusieurs rotations autour d'un même point différent de l'origine?


    -Omalab

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur d'étude et réalisation
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'étude et réalisation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Par défaut
    J'ai déjà mis ce qui m'a permis de le résoudre

    Pour ce problème,oui c'est cela je désire plusieurs rotation, a chaque mouvement de la souris un nouvel angle est calculé puis la méthode ci dessus est appelé. Je sais que le problème vient des translate, on en a en effet parlé sur l'autre discussion mais je ne vois pas pourquoi ce décalage en fait.

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 145
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    Je vous conseille de gérer vous même les matrices, car là, vous reposez sur la matrice ModelView (globale) de OpenGL, ce que je pense, est légèrement dangereux.
    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
    Homme Profil pro
    Ingénieur d'étude et réalisation
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'étude et réalisation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Par défaut
    Oui j'y ai pensé, quand vous dites "gérer vous même", c'est que je dois stocker ma matrice modelview au début puis effectuer les calculs sur ma matrice puis faire un load avant le dessin ?

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 145
    Billets dans le blog
    150
    Par défaut
    Oui, c'est de faire vous même complètement les calculs de matrice (notamment les multiplications).
    Sinon, je pense qu'il manque un glPushMatrix/glPopMatrix pour isolé les calculs.
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de dependances lors d'une installation
    Par mcdelay dans le forum SUSE
    Réponses: 1
    Dernier message: 27/02/2008, 20h37
  2. Problème d'encodage lors d'une recherche
    Par cysedbs dans le forum Langage
    Réponses: 3
    Dernier message: 05/12/2007, 19h53
  3. [HTML-JS] problème de décalage lors d'un redimensionnement
    Par cybersplash dans le forum Balisage (X)HTML et validation W3C
    Réponses: 13
    Dernier message: 26/03/2007, 18h04
  4. Problème d'accent lors d'une requête
    Par escape dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 05/12/2006, 13h48
  5. [JDOM] Problème d'iterateur lors d'une suppression
    Par romuluslepunk dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 07/01/2006, 15h00

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