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 :

une croix dans l'espace


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Décembre 2006
    Messages : 166
    Par défaut une croix dans l'espace
    Bonjour je voudrais pouvoir dessiner une croix dans l'espace (x,y,z) qui soit toujours de la même taille à l'écran (que ma caméra recule ou pas) et ne tourne pas (un peu comme les textes 2D dans un espace 3D)

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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    il suffit de faire comme pour les text 2d : tu passe en mode orthogonal et tu dessine ta croix en 2D
    * 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

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Décembre 2006
    Messages : 166
    Par défaut
    ??? là, moi pas comprendre...
    quand je marquais texte 2D c'etait en exemple de fonction (visuellement) mais j'ai pas dit que je savais le faire

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 21
    Par défaut
    dans ta fonction paint/display tu change de projection le temps de dessiner tes informations

    exemple rapide

    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
    37
    38
    39
    40
    41
    42
    43
     
     
    /*Fonction qui affiche la scène*/
    void display ()
    {
     
        glMatrixMode(GL_VIEWMODEL);
        glLoadIdentity();
     
        /*Tu dessines ta scène comme tu le sens*/
     
        /*Tu sauvegardes ta matrice de modélisation*/
        glPushMatrix();
     
            /*Tu passes sur la matrice de projection pour te mettre en mode 2D     pour afficher du texte, des boite de dialoges, etc*/
            glMatrixMode(GL_PROJECTION);
            /*Tu sauvegardes d'abord ta projection actuelle*/
            glPushMatrix();
     
                /*Tu fais un projection 2D*/
                glLoadIdentity();
                glOrtho(0.0,EcranLargeur,0.0,EcranHauteur);
     
                /*Tu te mets dans la matrice VIEWMODEL pour afficher tes infos*/
                glMatrixMode(GL_VIEWMODEL);
                glLoadIdentity();
     
                /*Tu affiche tes informations glVertex2D/glBitmap*/
     
     
                /*Et si jamais tu veux afficher encore des trucs sur la scène en glPerspective*/
     
                /*Tu te remets en mode projection ...*/
                glMatrixMode(GL_PROJECTION);
                /*...et tu récupère la matrice perspective telle qu'elle était avant*/
            glPopMatrix();
     
            /*Tu te remet en mode viewmodel ...*/
            glMatrixMode(GL_VIEWMODEL);
            /*...et tu récupère la matrice viewmodel telle qu'elle était avant*/
        glPopMatrix();
     
    }
    Vala le code est pas garanti j'ai pas de compiler sous la main et je fais souvent des étourderis dont GL_VIEWMODEL et GL_MODELVIEW que je ne retiens jamais.
    Pour les questions éventuelles je ne repasse pas avant un moment désolé.

  5. #5
    Membre émérite
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Par défaut
    Ensuite il faudra bien utiliser une fonction pour transformer un vecteur 2D - 3D et vice-versa qui aidera à placer ce qui est ortho vers 3D et inversement.
    Il y a gluProject() et gluUnproject() pour cela.

    edit: Et aussi la dernière façon, si besoin est, que ce sois spécialement un objet 3D mais toujours de même taille: calculer la distance entre la caméra et le dit objet, ensuite appliquer cette distance à l'objet, bien sûr en la divisant pour avoir la bonne taille.
    Utile pour un déplaceur d'objets qui indique les axes, dans un logiciel de modélisation par exemple.
    Toujours avec les mêmes fonctions de transformation 2D – 3D.

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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    Citation Envoyé par Happy Voir le message
    Ensuite il faudra bien utiliser une fonction pour transformer un vecteur 2D - 3D et vice-versa qui aidera à placer ce qui est ortho vers 3D et inversement.
    Il y a gluProject() et gluUnproject() pour cela.

    edit: Et aussi la dernière façon, si besoin est, que ce sois spécialement un objet 3D mais toujours de même taille: calculer la distance entre la caméra et le dit objet, ensuite appliquer cette distance à l'objet, bien sûr en la divisant pour avoir la bonne taille.
    Utile pour un déplaceur d'objets qui indique les axes, dans un logiciel de modélisation par exemple.
    Toujours avec les mêmes fonctions de transformation 2D – 3D.
    heu... quand tu est en mode ortho, tu n'a pas besoin de faire des gluProject/UnProject, tout est directement affiché en espace ecran...
    * 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

  7. #7
    Membre émérite
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Par défaut
    Faut pas comprendre de coté, je disais d'utiliser gluProject/UnProject quand on dois afficher un objet ortho à la même position d'un objet 3D, vu que ce dernier changeait de taille suivant la position de la caméra.

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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    Citation Envoyé par Happy Voir le message
    Faut pas comprendre de coté, je disais d'utiliser gluProject/UnProject quand on dois afficher un objet ortho à la même position d'un objet 3D, vu que ce dernier changeait de taille suivant la position de la caméra.
    ha oui, vu comme ca, je comprend mieux
    mais comme à priori, il veut que ca croix reste au milieu de l'ecran, ca ne lui servira pas à grand chose
    * 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

Discussions similaires

  1. [Turbo Pascal] Afficher une sphère dans l'espace
    Par bazore dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 27/03/2010, 13h58
  2. Limiter une surface dans l'espace
    Par azertyuio dans le forum Mathématiques
    Réponses: 0
    Dernier message: 01/03/2010, 18h50
  3. [XL-2003] insérer une croix dans un nombre aléatoire de cases
    Par macgivre67 dans le forum Excel
    Réponses: 1
    Dernier message: 28/09/2009, 19h54
  4. Tracer une fonction dans un espace R3
    Par Giansolo dans le forum MATLAB
    Réponses: 2
    Dernier message: 30/10/2008, 10h32
  5. [OpenSceneGraph] Position d'une caméra dans l'espace
    Par Invité(e) dans le forum OpenSceneGraph
    Réponses: 2
    Dernier message: 28/08/2008, 10h58

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