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 :

[OpenGl] faire translater la camera selon la rotation actuelle


Sujet :

OpenGL

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 204
    Points : 67
    Points
    67
    Par défaut [OpenGl] faire translater la camera selon la rotation actuelle
    Salut tout le monde,
    Premierement, je tiens a preciser que je ne trouve pas de forum approprié pour les questions concernat OpenGl, donc je poste ici!

    j'essaye de creer une camera personnalisé avec OpenGL, donc a l'appui de Z par exemple, je veux qu'elle avance. Mias le probleme c'est que si j'augmente simplement la positionZ, elle se translatera par rapport au monde entier et non pas par rapport a la rotation actuelle.
    J'espere que vous m'aviez compris , sinon ...

    PS:avant avec Ogre, il fallait tout simpelment specifier le deuxieme parametre de translate a TS_LOCAL, mais avec OGL, ça commence a se corser!

  2. #2
    Membre habitué
    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
    Points : 139
    Points
    139
    Par défaut
    Je pense que le mieux c'est d'avoir un genre de vecteur "devant" qui stocke la direction vers laquelle pointe ta caméra (ou à la rigueur un angle si t'aime la trigo, sachant que ça devient vite lourd en 3D...) et t'incrémenter la position de ta caméra avec ce vecteur devant (multiplié par une certaine vitesse).

    Après, ça dépend peut-être de comment tu gères la position de ta caméra. Ce que j'ai décrit marche plutôt bien quand on utilise gluLookAt.
    Si tu utilises des glRotate et glTranslate, comme les transformations se composent, la translation devrait se faire dans la bonne direction (cela dit gluLookAt() est beaucoup plus pratique d'emploi et évite de se tordre la tête avec des histoires de transformations inverses)

    J'espère que ça répond à ta question ?

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 204
    Points : 67
    Points
    67
    Par défaut
    j'utilise bien gluLookAt()!
    je pense que ta reponse est utile, je vais voir ça!

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 204
    Points : 67
    Points
    67
    Par défaut
    bon finalement, voila ce que j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void Camera::Translate(const Vector3D& translation, const TranslationType type)
    {
        if(type == WORLD)
            m_position += translation;
        else{
            m_position += m_left * translation.GetX() + m_position.GetX();
            m_position += m_up * translation.GetY() + m_position.GetY();
            m_position += m_forward * translation.GetZ() + m_position.GetZ() 
        }
     
    }

Discussions similaires

  1. Comment translater la camera en clickant?
    Par Lauvergnat dans le forum DirectX
    Réponses: 1
    Dernier message: 20/03/2008, 20h12
  2. Réponses: 6
    Dernier message: 14/01/2008, 12h45
  3. C++-OpenGL: Faire marcher des cubes (walking cycle) tableau?
    Par corseb-delete dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 15/01/2007, 10h05
  4. [débutant]Faire apparaître X champ selon un nombreX
    Par Hastur dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 06/09/2005, 13h45

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