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] Problème d'éclairage


Sujet :

OpenGL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut [OpenGL] Problème d'éclairage
    Bonjour.

    J'ai un petit souci avec de l'éclairage...
    J'esssai d'appliquer un matériau sur un cube( jusque la rien de très palpitant). Si j'applique une couleur diffuse qui ne comprend que 1 ou 2 couleurs (R,v,b, RV,RB,VB), le mélange se fait bien dans n'importe quel sens que je tourne ma scène. Mais dès que j'essaie de mettre un matériau avec les 3 composante j'obtiens du blanc...

    Initialisation des lumière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER,GL_TRUE);
     
    	m_Lumiere0.setPosition(0.0f,200.0f,0.0f);
    	m_Lumiere0.setDiffusion(0.9f,0.9f,0.9f);
     
    	m_Lumiere1.setNumero(GL_LIGHT1);
    	m_Lumiere1.setPosition(-200.0f,200.0f,-200.0f);
    	m_Lumiere1.setDiffusion(0.5f,0.5f,0.5f);
    Intialisation du viewport:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	glViewport (0, 0, (GLsizei) w, (GLsizei) h);
    	glMatrixMode (GL_PROJECTION);							//Set up in projection mode
       	glLoadIdentity ();					gluPerspective(45.f,(GLfloat)w/(GLfloat)h,0.01f,100.f);
     
     
        glMatrixMode(GL_MODELVIEW);
    	glLoadIdentity();
    Dessin
    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
    44
    45
    46
    47
    48
    49
     
    		glClear (GL_COLOR_BUFFER_BIT |
    		GL_DEPTH_BUFFER_BIT);
     
            glDisable(GL_TEXTURE_2D);
    		glLoadIdentity();
     
    		//on réduit pour avoir afficher
    		glScalef(0.01,0.01,0.01);
     
     
    GLfloat couleur2[]={1.0f,0.5f,0.5f};
           //on va faire un cube
           glPushMatrix();
           glTranslatef(100.,100.,100.);
     
     
     
                glMaterialfv(GL_FRONT,GL_DIFFUSE,couleur2);
                glBegin(GL_TRIANGLES);
                   glNormal3f(0.0,1.0,0.0);
                    glVertex3f(-10,10,-10);
                    glVertex3f(10,10,10);
                    glVertex3f(-10,10,10);
                    glVertex3f(-10,10,-10);
                    glVertex3f(10,10,10);
                    glVertex3f(10,10,-10);
                 glEnd();
     
                 glBegin(GL_TRIANGLES);
                glNormal3f(1.,0.,0.);
                    glVertex3f(-10,-10,-10);
                    glVertex3f(-10,10,10);
                    glVertex3f(-10,10,-10);
                    glVertex3f(-10,10,10);
                    glVertex3f(-10,-10,-10);
                    glVertex3f(-10,-10,10);
                 glEnd();
     
                 glBegin(GL_TRIANGLES);
                glNormal3f(0.,0.,1.0);
                    glVertex3f(-10,-10,-10);
                    glVertex3f(10,10,-10);
                    glVertex3f(-10,10,-10);
                    glVertex3f(10,10,-10);
                    glVertex3f(-10,-10,-10);
                    glVertex3f(10,-10,-10);
                 glEnd();
           glPopMatrix();
    Donc voila mon code.

    Si quelqu'un pouvez m'indiquer d'ou vient le problème...
    Je suis preneur de toutes explications


    J'essaierai de mettre des images mais la j'ai pas acces à un ftp histoire de les mettre en lign

  2. #2
    Membre averti Avatar de Bob.Killer
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    336
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 336
    Points : 332
    Points
    332
    Par défaut
    oyo

    moi g une idée mais c peu etre pas ça

    si tu as mit ça faut le mettre en commentaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glEnable(GL_COLOR_MATERIAL);
    Pensez aux tutoriels programmation : http://programmation.developpez.com/cours-tutoriels/

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Non j'ai pas mis ça...

    Je comprends pas pourquoi ca marche pas...

  4. #4
    Membre averti Avatar de Bob.Killer
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    336
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 336
    Points : 332
    Points
    332
    Par défaut
    j avais pas vu ... faut tjs prendre les lumière dans l'ordre croissant, tu utilises light1 prend light0 et fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    enable(GL_LIGHT0);
    enable(GL_LIGHTING);
    Pensez aux tutoriels programmation : http://programmation.developpez.com/cours-tutoriels/

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Désolé ça marche pas...
    Mon gros souci ce n'est pas que la scène soit éclairé mais surtout qu'elle soit bien éclairé.

    En effet si je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    GLfloat couleur2[]={1.0f,0.1f,0.5f};
    glMaterialfv(GL_FRONT,GL_DIFFUSE,couleur2);
    Mon cube est d'une jolie couleur blanche.
    Tandis que si je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    GLfloat couleur2[]={1.0f,0.f,0.5f};
    glMaterialfv(GL_FRONT,GL_DIFFUSE,couleur2);
    Mon cube est rose. Le truc c'est qu'à priori les 2 couleurs ne devraient pas trop différée l'une par rapport à l'autre.

    SI quelqu'un connait la solution (problme d'option d'éclairage, de normales,...)

    Merci quand même Bob.Killer

Discussions similaires

  1. Réponses: 10
    Dernier message: 08/06/2009, 11h30
  2. [Cygwin et OpenGL] Problème d'affichage
    Par CandS dans le forum Autres langages
    Réponses: 2
    Dernier message: 28/04/2005, 10h31
  3. [OpenGL] problème de rotation 3D
    Par ReiVon dans le forum OpenGL
    Réponses: 3
    Dernier message: 11/04/2005, 09h47
  4. Réponses: 2
    Dernier message: 29/03/2005, 14h25
  5. [OpenGL] Problème de Vitesse d'éxécution
    Par stick059 dans le forum OpenGL
    Réponses: 9
    Dernier message: 19/11/2004, 13h57

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