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

Langage C++ Discussion :

[C++/Opengl] Problème de gestion de caméra


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 3
    Par défaut [C++/Opengl] Problème de gestion de caméra
    Alors,voila, j'ai Créer une fonction qui en fonction de la position relative de la souris, va faire une mise a jour du point de vue de la caméra, je commence par inverser le vecteur entre le point de vue de la caméra et sa position, ensuite je met a jour les angles, et je calcule les nouvelles coordonnées sphérique, le problème c'est que je pense que sa marche, mais la caméra fais des rotation beaucoup plus grande que prévu mais dès que la sensibilité est réduite, plus rien ne bouge.
    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
     
    void Window::Rotate(int angleX, int angleY, int sensibility)
    {
        double x = _cam->GetLook_x() - _cam->GetPos_x();
        double y = _cam->GetLook_y() - _cam->GetPos_y();
        double z = _cam->GetLook_z() - _cam->GetPos_z();
        double module = sqrt(pow(x,2)+pow(y,2)+pow(z,2));
        double teta = acos(z/module);
        double beta = acos(x/sqrt(pow(x,2)+pow(y,2)));
        if(y < 0) beta = 2*M_PI-beta;
        teta += angleY/6;
        beta += angleX/6;
        x = module*sin(teta)*cos(beta);
        y = module*sin(teta)*sin(beta);
        z = module*cos(teta);
        _cam->SetLook_x(x + _cam->GetPos_x());
        _cam->SetLook_y(y + _cam->GetPos_y());
        _cam->SetLook_z(z + _cam->GetPos_z());
       // le commentaire est une gestion de la caméra tournant sur x,    qui lui marche très bien
       /* double cam_to_look_x = _cam->GetLook_x() - _cam->GetPos_x();
        double cam_to_look_y = _cam->GetLook_y() - _cam->GetPos_y();
        double mod = sqrt(pow(cam_to_look_x,2)+pow(cam_to_look_y,2));
        double _teta = acos(cam_to_look_x/mod)*180/M_PI;
        double sin_y = asin(cam_to_look_y/mod)*180/M_PI;
        if(sin_y < 0) _teta *= -1;;
        _teta += teta*sensibility;
        _teta2 = _teta;
        cam_to_look_x = cos(_teta*M_PI/180)*mod;
        cam_to_look_y = sin(_teta*M_PI/180)*mod;
        _cam->SetLook_x(cam_to_look_x + _cam->GetPos_x());
        _cam->SetLook_y(cam_to_look_y + _cam->GetPos_y());*/
    }
    Donc voyez vous un problème dans la gestion concernant la rotation x ou y, je suis en galère depuis quelques jours la

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 3
    Par défaut sujet résolu
    J'ai trouvé d'ou venait le problème, ne convertissant pas les angles de base en degrés, je rajoutais des angles en degrés, ce qui fesait des angles complétement faux ^^
    il suffisait de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    teta += angleY*M_PI/180; // this/6 ou this*sensibility
    beta += angleX*M_PI/180; // ''

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

Discussions similaires

  1. Problème de gestion de plusieurs caméras
    Par TheCamel dans le forum OpenCV
    Réponses: 0
    Dernier message: 02/02/2011, 18h18
  2. [OpenGL] Problème de Vitesse d'éxécution
    Par stick059 dans le forum OpenGL
    Réponses: 9
    Dernier message: 19/11/2004, 13h57
  3. problème de gestion de fenêtre
    Par clemsouz dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/11/2004, 14h35
  4. Problème de gestion fichiers
    Par glutock dans le forum ASP
    Réponses: 2
    Dernier message: 08/04/2004, 11h55
  5. [TFrame] Problème de gestion du OnMouseDown avec une Frame
    Par xherault dans le forum Composants VCL
    Réponses: 5
    Dernier message: 23/05/2003, 15h35

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