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 :

Materiaux (AMBIENT DIFFUSE et SPECULAR)


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Ekinoks
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    687
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 687
    Par défaut Materiaux (AMBIENT DIFFUSE et SPECULAR)
    Salut !
    Je suis en train de définir le type de matériaux pour des objets mais seulement j'ai un petit soucie :^/
    GL_AMBIENT et GL_DIFFUSE ne changent rien quelles que soient les valeurs
    Seul GL_SPECULAR a des effets sur le comportement des objets par rapport à la lumière reçu.

    Comment cela ce fait t'il ?

    Merci

  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
    a priori, si tu a l'impression que ca ne change rien, c'est probablement que tu a mal parametré tes lumieres
    GL_AMBIANT va te definir la couleur minimum d'un objet. si tu met du noir, ca ne changera effectivement rien, si tu met du blanc, les objets seront totalement blanc et on ne vera plus les effets des autres composantes.
    GL_DIFFUSE depend de la distance (si c'est une lumiere avec attenuation) et de l'orientation des faces. il faut donc envoyer les normales du modèle pour que cette composante soit visible

    voila c'est tout pour l'instant, j'espere que ca t'aura aidé.
    * 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 éclairé Avatar de Ekinoks
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    687
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 687
    Par défaut
    Salut et merci pour ta réponse =)

    Effectivement lorsque je chance les caractéristiques des mes lumières avec GL_AMBIANT ou GL_DIFFUSE, l'éclairage de la scène change. Seulement lorsque je chance ces caractéristiques sur du Matériel aucune changement.
    J'ai carrément pris un exemple de scène qui a été donné avec glut, si je change mat_ambient ou mat_diffuse, il n'y a aucune changement dans la scène :

    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
    50
    51
    52
    53
    54
    55
    ...
    ...
    const GLfloat light_ambient[]  = { 0.5f, 0.5f, 0.5f, 1.0f };
    const GLfloat light_diffuse[]  = { 1.0f, 1.0f, 1.0f, 1.0f };
    const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
    const GLfloat light_position[] = { 2.0f, 5.0f, 5.0f, 0.0f };
     
    const GLfloat mat_ambient[]    = {  1.0f,  1.0f,  1.0f, 1.0f };  // n’impote quelle valeur
    const GLfloat mat_diffuse[]    = {  1.0f,  1.0f,  1.0f, 1.0f };  // n’impote quelle valeur
    const GLfloat mat_specular[]   = { 1.0f, 1.0f, 1.0f, 1.0f };
    const GLfloat high_shininess[] = { 100.0f };
     
    /* Program entry point */
     
    int 
    main(int argc, char *argv[])
    {
        glutInit(&argc, argv);
        glutInitWindowSize(640,480);
        glutInitWindowPosition(10,10);
        glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
     
        glutCreateWindow("FreeGLUT Shapes");
     
        glutReshapeFunc(resize);
        glutDisplayFunc(display);
        glutKeyboardFunc(key);
        glutIdleFunc(idle);
     
        glClearColor(1,1,1,1);
        glEnable(GL_CULL_FACE);
        glCullFace(GL_BACK);
     
        glEnable(GL_DEPTH_TEST);
        glDepthFunc(GL_LESS);
     
        glEnable(GL_LIGHT0);
        glEnable(GL_NORMALIZE);
        glEnable(GL_COLOR_MATERIAL);
        glEnable(GL_LIGHTING);
     
        glLightfv(GL_LIGHT0, GL_AMBIENT,  light_ambient);
        glLightfv(GL_LIGHT0, GL_DIFFUSE,  light_diffuse);
        glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
        glLightfv(GL_LIGHT0, GL_POSITION, light_position);
     
        glMaterialfv(GL_FRONT, GL_AMBIENT,   mat_ambient);
        glMaterialfv(GL_FRONT, GL_DIFFUSE,   mat_diffuse);
        glMaterialfv(GL_FRONT, GL_SPECULAR,  mat_specular);
        glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess);
     
        glutMainLoop();
     
        return EXIT_SUCCESS;
    }
    J’aurais aussi une deuxième question... pour étendre une lumière il suffit de faire "glDisable(GL_LIGHTING);"
    Comment faire pour désactiver les fonctions glMaterialfv faite plus haut ?

    Merci

  4. #4
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Bonjour,

    si tu veux être sûr de bien voir les changements de couleurs de ta matière :
    - met que GL_LIGHT0 sans changer ses paramètres par défaut.
    - Pas d'autres lumières.
    - C'est le GL_EMISSION qui va rellement changer la couleur de ta matière.
    - GL_AMBIENT va (de mémoire) faire varier la couleur dans les zones de pénombre.

    Une fois que ça marche, affine en ajoutant les autres lumières nécessaires.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  5. #5
    Membre éclairé Avatar de Ekinoks
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    687
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 687
    Par défaut
    effectivement, GL_EMISSION change la couleur de mon objet =)
    par contre, toujours rien au niveau de GL_AMBIENT et GL_DIFFUSE :^/

  6. #6
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Bonour,

    Citation Envoyé par Ekinoks
    par contre, toujours rien au niveau de GL_AMBIENT et GL_DIFFUSE :^/
    C'est normal, les variations sont minime et je dirai même selon les cas imperceptible.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

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

Discussions similaires

  1. Réponses: 43
    Dernier message: 12/01/2007, 11h17
  2. Materiaux et listes openGL
    Par Glenstryder dans le forum OpenGL
    Réponses: 1
    Dernier message: 29/01/2005, 15h04
  3. [CR] A-t-on le droit de diffuser l'activeX Crystal ?
    Par Perihan dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 26/11/2004, 15h39
  4. selection a la souris en fonction du materiaux
    Par sylvain_bos dans le forum DirectX
    Réponses: 28
    Dernier message: 09/07/2004, 17h50

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