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 :

Ombrage en tout ou rien


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Par défaut Ombrage en tout ou rien
    Bonjour,

    Cela fait un moment que je cherche et que je ne trouve pas la raison pour laquelle chaque face de ce que j'affiche dans ma scene est soit totalement a l'ombre, soit totalement éclairé !

    J'ai vérifier mes normales qui semblent correctes, et j'initialise ma lumiere comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    glEnable(GL_LIGHTING);
     
    GLfloat direction[] = {1333., 1000., -300., 0.};
    GLfloat ambient[] = { 0., 0., 0., 1.0 };
    GLfloat diffuse[] = { 1.0, 1.0, 1.0, 1.0 };
    GLfloat specular[] = { 1.0, 1.0, 1.0, 1.0 };
    glEnable(GL_LIGHT0);
    glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
    glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
    glLightfv(GL_LIGHT0, GL_SPECULAR, specular);
    glLightfv(GL_LIGHT0, GL_POSITION, direction);
    Ce qui ne me parait pas faux. Est ce que j'aurais oublié de vérifier un truc ?

  2. #2
    Membre très actif
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Par défaut
    salut;
    Je me souvien pas très bien d'OpenGL,
    Je pense que tu devrais voir du coté de l'intensité de la lumière spéculaire
    et essaye de modifier les valeurs de couleurs que t'a mis dans les tableaux, et tester

  3. #3
    Membre chevronné
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Par défaut
    Salut,

    il faudrait un peu plus de code pour pouvoir t'aider, mais vérifie:

    - Les normales: sont-elles correctes ET normalisées? Si elle ne sont pas normalisées, utilises-tu ?

    - Les matériaux: quand tu utilises l'éclairage, ca remplace les couleurs assignées par glColor* en mode non éclairé: utilises-tu des matériaux? si non, il faut activer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glEnable(GL_COLOR_MATERIAL
    ) pour pouvoir utiliser glColor* en mode éclairé

    - As tu activé les textures? Par exemple si glEnable(GL_TEXTURE_2D) est activé mais que tu n'as pas de texture pour tes objets, ca fout la pagaille

    - Utilises-tu les shaders? Si oui le probleme peut bien entendu venir du code de tes shaders

    Voilà pour le début!

  4. #4
    Membre éclairé Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Par défaut
    Bon Je vais répondre dans l'ordre :

    1 - Oui mes normales sont aussi normalisée (je n'utilise pas glEnable(GL_NORMALIZE) par contre)
    Je me demande si les vecteurs normales subissent les modifications due a un pushMatrix() par contre. En effet, mes objets sont modelisés de taille 1 et ensuite je les adapte avec un scale.

    2 - Oui j'utilise glEnable(GL_COLOR_MATERIAL) avant d'afficher mon objet.

    3 - Oui j'utilise des textures.

    4 - Non je n'utilise pas de shaders, je ne sait pas encore le faire.

    Voici le code que j'utilise pour mon affichage au cas ou ca pourrait aider

    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
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, textureId);
    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
    glEnableClientState(GL_NORMAL_ARRAY);
     
    glVertexPointer(3, GL_FLOAT, sizeof(GL_FLOAT)*9, data);
    glTexCoordPointer(3, GL_FLOAT, sizeof(GL_FLOAT)*9, data+3);
    glNormalPointer(GL_FLOAT, sizeof(GL_FLOAT)*9, data+6);
     
    glEnable(GL_COLOR_MATERIAL);
    // Ici je definit les différentes couleurs pour mon materiaux
    glDrawElements(GL_TRIANGLES, nbFaces*3, GL_UNSIGNED_INT, faceList);
    glDisable(GL_COLOR_MATERIAL) ;
     
    glDisableClientState(GL_VERTEX_ARRAY);
    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
    glDisableClientState(GL_NORMAL_ARRAY);
     
    glDisable(GL_TEXTURE_2D);
    Des que j'aurais le temps je regarderais un peu du coté de mon spéculaire mais j'y crois pas trop, j'avais déja essayer.

    Merci beacoup pour votre aide !

  5. #5
    Membre chevronné
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Par défaut
    Je me demande si les vecteurs normales subissent les modifications due a un pushMatrix() par contre. En effet, mes objets sont modelisés de taille 1 et ensuite je les adapte avec un scale.
    Les normales subissent les effets d'un glScale!! Il faut donc activer GL_NORMALIZE (qui d'après mon expérience n'est pas un si gros facteur de ralentissement que ca)

    3 - Oui j'utilise des textures.
    Je pense qu'il faut avant tout essayer avec les normales, mais au cas-où désactive les textures et assure-toi que l'éclairage est OK

    sinon je ne pense pas que les parametres spéculaires soient en cause, mais bon on est jamais à l'abri d'une surprise en programmation...

  6. #6
    Membre éclairé Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Par défaut
    Bon... j'ai essayer GL_NORMLIZE et rien ne change :/

    J'ai désactivé les textures et fait un screenshot pour vous montrer :



    En rouge, ce sont les normales qui ont l'air bonne visuellement et on voit bien les problemes de lumières.

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

Discussions similaires

  1. [Débutant] Processus tout garder rien supprimer
    Par RKYDA dans le forum VB.NET
    Réponses: 2
    Dernier message: 01/07/2012, 20h29
  2. aide: lle code de la transformation 'tout ou rien'
    Par fdidiwa dans le forum Langage
    Réponses: 6
    Dernier message: 09/02/2011, 10h20
  3. Conception: Comment modéliser le tout ou rien?
    Par bigcortex dans le forum Débuter
    Réponses: 4
    Dernier message: 25/11/2008, 16h57
  4. Implémentation d'une jointure "rien=tout"
    Par lafeuil dans le forum Langage SQL
    Réponses: 3
    Dernier message: 15/03/2006, 16h26
  5. "tout et rien"
    Par alexei dans le forum Contribuez
    Réponses: 32
    Dernier message: 28/07/2005, 14h21

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