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 :

Comment changer le centre de rotation de mon objet ?


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 20
    Par défaut Comment changer le centre de rotation de mon objet ?
    Bonjour.
    Voila j'ai une scene avec quelques objets. J'ai ajouté les commandes des fleches du clavier pour me deplacer dans ma scene, et la souris pour les axes x et z. Mais voila, ma scene tourne toujours autour du meme centre, et moi je voudrais une camera "libre" ? Vous voyez ce que je veux dire ?


    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Il suffit de ramner à l'origine l'objet (via une translation) avant d'appliquer la rotation. Ensuite tu le remets à sa position précédente.

  3. #3
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 20
    Par défaut
    J'avoue que j'ai pas bien saisie ton explication..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        glTranslatef ( movx, 0.0f, movz);//bouger en avan et sur les cotés..
        glRotatef (-90+mouse_up/3, 1, 0, 0 );//mvt verticaux
        glRotatef (0+mouse_rl/3, 0, 0, 1 ); //mvt horizontaux
        glTranslatef ( 0.0f, 80.0f, -17.0f); //pour etre a hauteur humaine
    En fait, je pense que je vais faire plus court, comment faire une sorte de cameraFPS sans gluLookAt, et sans quartenions (c bien ça le mot ?? ) ?

    Mission impossible pour moi ^^
    Merci !

  4. #4
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 20
    Par défaut
    Bon en fait j'ai remarqué qu'il y avait un topic assez similaire a coté, et j'ai donc trouvé la solutiona une partie de mon probleme en mettant rotation puis translations.

    Maintenant, reste a faire en sorte que lorsque javance, ma vue aille dans la direction de la souris :-/.

    Je reposterais si je rencontre des probleme.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 73
    Par défaut
    Il post ou prémultiplier des matrices de translations avec les matrices de rotations...

    Une doc pour se faire une idée de la chose (c'est une matrice de transformation tres fournie ça, on peut en faire une plus simple)

    An MTransformationMatrix allows the manipulation of the individual transformation components (eg scale, rotation, shear, etc) of a four by four transformation matrix.

    A transformation matrix is composed of the following components:


    Scale pivot point point around which scales are performed [-Sp]
    Scale scaling about x, y, z axes [S]
    Shear shearing in xy, xz, yx [Sh]
    Scale pivot translation translation introduced to preserve existing scale transformations when moving pivot [St]
    Rotate pivot point point about which rotations are performed [-Rp]
    Rotation orientation rotation to orient local rotation space [Ro]
    Rotation rotation [R]
    Rotate pivot translation translation introduced to preserve exisitng scale transformations when moving pivot [Rt]
    Rotation translation in x, y, z axes [T]
    The transformation matrix is then constructed as follows:

    [M] = [Sp] [S] [Sh] [-Sp] [St] [Rp] [Ro] [R] [-Rp] [Rt] [T]

    and is used to transform a point in 3 space, represented by the row vector [P], via the operation

    P' = [P] [M]
    Apres, il faut multiplier certaines matrices avant ou apres, selon qu'on peut appliquer une transformations en relatif Objet ou absolut Monde ...

  6. #6
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 20
    Par défaut
    Merci, j'crois avoir compris certains aspects des translations mais apres plusieurs essais j'vois toujours pas comment faire pour que mon deplacement aille dans la direction de la souris..

    Si quelqu'un aurait une explicationa me fournir, ou bien un bout de code ? A savoir que je voudrais seulement le faire ac glTranslate et glRotate..j'voudrais eviter les vecteurs..

    thx

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 73
    Par défaut
    Citation Envoyé par bibije
    Merci, j'crois avoir compris certains aspects des translations mais apres plusieurs essais j'vois toujours pas comment faire pour que mon deplacement aille dans la direction de la souris..
    Ton énoncé n'est pas tres clair... tu veux que ta caméra se déplace en avant dans la direction vers laquelle elle pointe ?

    Citation Envoyé par bibije
    Si quelqu'un aurait une explicationa me fournir, ou bien un bout de code ? A savoir que je voudrais seulement le faire ac glTranslate et glRotate..j'voudrais eviter les vecteurs..

    thx
    glTranslate et glRotate sont des fonctions de dépanage, ca ne remplace pas une implémentation de matrice de transformation...

  8. #8
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 20
    Par défaut
    en fait je voudrais (comme dans un doom like) que lorsque jappuis sur la fleche du haut mon personnage avance et que lorsque je glisse ma souris vers la droite je me dirrige vers la droite...

    comme dans tout FPS en fait, half, doom etc..

  9. #9
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 125
    Par défaut
    Pff, sans gluLookAt ou sans un arsenal de matrice, ça risque d'etre chaud....

  10. #10
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 20
    Par défaut
    Citation Envoyé par Omfraax
    Pff, sans gluLookAt ou sans un arsenal de matrice, ça risque d'etre chaud....
    Bon et ben j'vais essayer dme faire une ptite class camera pour faciliter les choses..et/ou regarder du coté de gluLookAt...

    J'ai aussi une ptite question qui ne pas trop de rapport mais bon, a quoi sert exactement glLoadIdentity() ? J'ai vu que javais des prob parfois lorsque je le mettais pas,,alors je le mettais sans vraiment savoir pourquoi ; mais je pense qu'il efface les transformation effectué precedement ou qqc comme sa ?

    thx ;-)

  11. #11
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 125
    Par défaut
    C'est exactement ça. Il reinitialise ton repère realtif au même endroit que le repère absolu.

  12. #12
    Membre chevronné
    Avatar de Edouard Kaiser
    Profil pro
    Inscrit en
    Février 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2004
    Messages : 521
    Par défaut
    Précisement elle remet la matrice en cours à l'identité.

Discussions similaires

  1. Comment changer les noms par défaut d'un objet ?
    Par zoltix dans le forum PowerAMC
    Réponses: 1
    Dernier message: 06/01/2011, 02h08
  2. Centre de rotation d'un objet
    Par claubob dans le forum Powerpoint
    Réponses: 3
    Dernier message: 07/02/2010, 12h43
  3. Réponses: 2
    Dernier message: 25/03/2007, 21h49
  4. [UBUNTU] Comment changer la résolution de mon écran ?
    Par makohsarah dans le forum Ubuntu
    Réponses: 9
    Dernier message: 08/08/2006, 21h19
  5. Comment changer mon identifiant ?
    Par mouloudéen dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 4
    Dernier message: 12/07/2006, 23h22

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