Discussion: Lumière et texture

  1. #1
    Membre à l'essai
    Homme Profil pro
    L1 MI
    Inscrit en
    février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : L1 MI

    Informations forums :
    Inscription : février 2014
    Messages : 17
    Points : 14
    Points
    14

    Par défaut Lumière et texture

    Bonjour,

    J'ai un problème, j'utilise un cylindre avec une texture et une sphère pour fermer ce cylindre.
    Je veux que ces deux objets aient la même couleur (enfin que la couleur de fond de la texture soit la même que la sphère) mais voilà le resultat

    Nom : img1.png
Affichages : 35
Taille : 23,2 Ko

    J'applique un material blanc pour ambient et diffuse pour le cylindre texturé pour que la couleur original soit conservée et dans le gris voulu pour la sphère.

    Les normales sont calculés automatiquement par opengl, je ne vois pas pourquoi il y a cette démarcation entre les deux objets au centre.

    Vous avez une idée ?

    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
    56
    57
    58
    59
    60
    61
    int main(int argc,char **argv){
        glutInit(&argc,argv);
        glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
        glutInitWindowPosition(200,200);
        glutInitWindowSize(1366,768);
        glutCreateWindow("");
     
        glClearColor(0.0,0.0,0.0,0.0);
        glShadeModel(GL_FLAT);
        glPointSize(1.0);
     
        // Light initialisation
        GLfloat light_diffuse[] = {1.0, 1.0, 1.0, 1.0};
        GLfloat light_position[] = {0.0, 0.0, 5.0, 0.0};
        glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
        glLightfv(GL_LIGHT0, GL_POSITION, light_position);
        glEnable(GL_LIGHTING);
        glEnable(GL_LIGHT0);
     
        glEnable(GL_DEPTH_TEST);
     
        ...
     
    }
     
     
     
     
     
    void test(){
        GLfloat gray[] = {normal, normal, normal, 1.0};
        GLfloat white[] = {1.0, 1.0, 1.0, 1.0};
     
        glMaterialfv(GL_FRONT, GL_AMBIENT, white);
        glMaterialfv(GL_FRONT, GL_DIFFUSE, white);
     
        GLUquadricObj *quadObj;
     
        // cylinder
        glEnable(GL_TEXTURE_2D);
        glBindTexture(GL_TEXTURE_2D, texObject[2]);
        glPushMatrix();
            glRotatef(180, 0, 1, 0);
            glRotatef(90, 1, 0, 0);
            quadObj = gluNewQuadric();
            gluQuadricTexture(quadObj, 1);
            gluQuadricNormals(quadObj, GLU_SMOOTH);
            gluCylinder(quadObj, radiusHead, radiusHead, heightHead, 24, 24);
            glEndList();
        glPopMatrix();
        glDisable(GL_TEXTURE_2D);
     
        glMaterialfv(GL_FRONT, GL_AMBIENT, gray);
        glMaterialfv(GL_FRONT, GL_DIFFUSE, gray);
     
        // sphere
        glPushMatrix();
            //glColor3f(normal, normal, normal);
            glutSolidSphere(radiusHead, 24, 24);
        glPopMatrix(); 
    }

  2. #2
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 2 077
    Points : 5 886
    Points
    5 886

    Par défaut

    Déjà il faudrait mettre le bon tag , tu as mis OpenGL 3 , alors que tu utilise OpenGL 1 qui est complètement obsolète ! (et j'espere que tu utilise freeglut )
    Je te conseillerai donc de passer réellement sur OpenGL 3 ou 4 !

  3. #3
    Membre à l'essai
    Homme Profil pro
    L1 MI
    Inscrit en
    février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : L1 MI

    Informations forums :
    Inscription : février 2014
    Messages : 17
    Points : 14
    Points
    14

    Par défaut

    J'utilise bien freeglut (freeglut3-dev) sur debian 9.

    Pour ce qui est de la version, je me base en effet sur le cours fournit par ma professeur étant donné que c'est un projet et il se base sur des cours des années 2000..

    Du coup j'ai bien peur de devoir rester en opengl 1.0.

    Des idées sinon ?

  4. #4
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 2 077
    Points : 5 886
    Points
    5 886

    Par défaut

    On regardant votre code je ne sais pas ce que vous apprenez réellement ^^' (il y a des fonction toute faite venant de glut ou de glu ).
    Cela m'arrive d'utiliser OpenGL 1 , mais a part les VA je ne fait jamais de lumière sur OpenGL 1 ( pour la gestion des lumières il est plus intéressant a gérer a partir de OpenGL 2).
    Donc non aucune idée pour ma part .

  5. #5
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    avril 2004
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : avril 2004
    Messages : 3 530
    Points : 6 441
    Points
    6 441

    Par défaut

    Bonjour,

    Citation Envoyé par Hairah Voir le message
    Les normales sont calculés automatiquement par opengl, je ne vois pas pourquoi il y a cette démarcation entre les deux objets au centre.
    Ben justement parce que tu as deux objets...
    La jonction entre les deux est mal gérée parce qu'il n'y a pas de jonction. D'où superposition de faces au mieux, intersection au pire... et un affichage crénelé comme tu as.
    Vu que tu es en GL_FLAT, les normales sont calculées par élément, ce qui n'arrange pas la chose...

    Tu peux peut-être atténuer le phénomène en orientant correctement ta sphère pour que la jonction se fasse sur "l'équateur" de la sphère... mais pas sûr que ça fonctionne.
    Après, ce n'est pas hyper sorcier de programmer un suppositoire pour bien gérer ce que tu veux afficher...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    août 2006
    Messages
    3 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2006
    Messages : 3 503
    Points : 6 881
    Points
    6 881

    Par défaut

    Citation Envoyé par plegat Voir le message
    Après, ce n'est pas hyper sorcier de programmer un suppositoire pour bien gérer ce que tu veux afficher...
    La tête de Bender n'est qu'un demi suppositoire ^^
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    22 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2008
    Messages : 22 485
    Points : 155 391
    Points
    155 391
    Billets dans le blog
    10

    Par défaut

    Bonjour,

    Sinon, vous utilisez blender pour faire votre objet, puis vous l'importez dans votre programme OpenGL. C'est bien plus proche d'une réalité du monde du travail.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  8. #8
    Membre à l'essai
    Homme Profil pro
    L1 MI
    Inscrit en
    février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : L1 MI

    Informations forums :
    Inscription : février 2014
    Messages : 17
    Points : 14
    Points
    14

    Par défaut

    J'ai déjà essayé de tourner ma sphère ça n'a malheureusement pas fonctionné.

    Le problème c'est qu'il y a plusieurs endroits où j'ai des jonctions avec des objets différents, ce qui fait que je n'aurai pas que des demi suppositoires même si ce n'est pas sorcier ça me fait faire pas mal de modifications.

    Malheureusement, nous ne devons pas utiliser blender ou autre logiciel de modélisation 3D.

    J'ai trouvé une résultat satisfaisant mais pas parfait, j'applique la couleur sous forme de texture à la sphère.


    Merci à tous

Discussions similaires

  1. Tutoriel OpenGL Moderne - textures de lumière
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 15/06/2014, 17h48
  2. WebGL : Ajouter une texture spéculaire afin d'améliorer les effets de lumière
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 14/08/2013, 22h52
  3. Besoin de lumières sur les VBO et le texturing s.v.p.
    Par la_tupac dans le forum OpenGL
    Réponses: 17
    Dernier message: 31/08/2010, 19h34
  4. Changer l'image d'une texture
    Par alltech dans le forum DirectX
    Réponses: 5
    Dernier message: 21/08/2002, 02h31

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