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 :

Retour à l'horizontal


Sujet :

OpenGL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 55
    Points : 34
    Points
    34
    Par défaut Retour à l'horizontal
    Bonjour,
    Après un grand nombre de transformations (dont de nombreuses rotations dans tous les sens) de la matrice modelview, j'aimerais me repositionner à l'horizontal, mais en restant au point ou je suis arrivé. Comment faire?
    nicoenz
    http://www.medieval-fantasy-exp.com/ (ouvert à toute proposition)

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Et les autres angles, tu veux les conserver aussi ? Ou seulement la position ?

    Tu peux faire un gluLookAt en reprenant la position actuelle pour te remettre droit. Ou bidouiller directement la matrice si tu peux déterminer les deux autres axes facilement.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 55
    Points : 34
    Points
    34
    Par défaut
    Le but de l'opération est de rester à la même position, mais de réinitialiser l'angle pour tracer un segment à l'horizontal. Malheureusement, gluLookAt calcule par rapport à l'angle actuel (je viens de tester, merci quand même).

    Voilà ce qui se passe dans mon programme (je dessine un arbre) :

    1. J'initialise la matrice

    2. J'opère un grand nombre de rotations et de translations les une derrière les autres et je trace des cylindres entre chaques points (branches). (ça marche)

    3. J'aimerais tracer à l'endroit où je suis arrivé un polygone (feuille) sur le plan horizontal.

    Il faudrait soit que je puisse réinitialiser l'angle, soit que je puisse récupérer les coordonnées du point que j'ai atteint au moment où je veux tracer la feuille.

    Bien sûr, je pourrais recalculer les coordonnées de ce point au fur et à mesure, mais étant donné qu'il peut y avoir plusieurs milliers de rotations/translations ça prendrait beaucoup de ressources et par ailleurs, ça serait d'autant plus stupide que c'est probablement ce que fait opengl (en hardware). Il doit exister un moyen de retrouver les coordonnées du points d'arrivé. Probablement une opération sur la matrice.
    nicoenz
    http://www.medieval-fantasy-exp.com/ (ouvert à toute proposition)

  4. #4
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    en remettant la partie rotation/scale de la matrice à l'identité ca doit marcher. par contre, il va falloire le faire à la main
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  5. #5
    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 : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Récupérer les 3 premières composantes de la 4ème colonne de la matrice model-view devrait faire l'affaire, pour récupérer la position actuelle.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 55
    Points : 34
    Points
    34
    Par défaut
    Amusant, je venais d'en arriver à la même conclusion par des tests
    En tout cas merci. Je vais essayer de mettre ça en pratique .
    A+
    nicoenz
    http://www.medieval-fantasy-exp.com/ (ouvert à toute proposition)

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 55
    Points : 34
    Points
    34
    Par défaut
    Voilà, donc ça marche. Voici comment je fais :

    // je sauvegarde la matrice initiale dans matrix0

    // je fais mes traitements

    // en dessous je restaure mes angles
    glGetFloatv(GL_MODELVIEW_MATRIX,matrixP);
    matrix0[12] = matrixP[12];
    matrix0[13] = matrixP[13];
    matrix0[14] = matrixP[14];
    glLoadMatrixf(matrix0);

    Merci pour votre aide. J'espère que cette solution est aussi optimale que possible car l'opération est exécutée un très grand nombre de fois !
    nicoenz
    http://www.medieval-fantasy-exp.com/ (ouvert à toute proposition)

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Réponses: 3
    Dernier message: 01/12/2006, 20h02
  3. [Listbox] ScrollBar Horizontal
    Par haleem dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/04/2005, 07h53
  4. Retour chariot dans un TMemo ?
    Par Vincent PETIT dans le forum C++Builder
    Réponses: 7
    Dernier message: 27/08/2002, 18h55
  5. URGENT: retour de string
    Par Pinggui dans le forum CORBA
    Réponses: 4
    Dernier message: 15/07/2002, 09h47

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