Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Lumiere ambiente [ Linux / OpenGL ] (faucheuse)

mardi 27 mai 2008 à 15:55:58 | Lumiere ambiente

faucheuse

Bonjour ami(e)s programmeurs et programmeuzes ,

Je débute en Opengl et dans le but de comprendre l'eclairage (ambient, spots...) j'ai commencé a faire un petit programme.
J'ai tout d'abord créer un petit cube, qui, grâces aux coordonnées de ses points, ne tourne pas tout a fait sur l'axe y (il est un peu décalé).

J'ai ensuite mis en place une lumiere ambiente :
    GLfloat ambientColor[] = {0.2f, 0.2f, 0.2f, 1.0f}; //Color(0.2, 0.2, 0.2)
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientColor);

Et a mon grand etonnement, mon cube n'est pas éclairé de la meme facon selon la face que l'on voit, or j'ai lu plusieurs fois lu que la lumiere ambiante éclaire tout les objets de la meme maniere, mais j'ai du comprendre de travers ^^.

Est ce que lma lumiere ambiente est émise depuis le centre de l'écran (de la scène).

En fait, mon cube étant décalé de l'axe y, seul la face faisant front au centre de la scene est éclairer, puis la lumiere baisse doucement jusqu'a presque totalement noire, puis revient petit a petit sur la meme face.

Bref j'espere avoir ete claire (je ne pense pas puisque cette histoire m'embrouille les neurones XD), je reviens des que je peux poster mon code.


mardi 27 mai 2008 à 15:58:36 | Re : Lumiere ambiente

faucheuse

#include <iostream>
#include <stdlib.h>

#include <gl\glut.h>

using namespace std ;

void Clavier(unsigned char KeyPress, int x, int y)
{
    switch (KeyPress)
    {
        case 27 : exit(0) ;
    }
}

void InitRendering(void)
{
    glEnable(GL_DEPTH_TEST) ;
    glEnable(GL_COLOR_MATERIAL) ;
    glEnable(GL_LIGHTING) ;
    glEnable(GL_LIGHT0) ;
    glEnable(GL_LIGHT1) ;
    glEnable(GL_NORMALIZE) ;
}

void Resize(int w, int h)
{
    glViewport(0,0,w,h) ;

    glMatrixMode(GL_PROJECTION) ;
    glLoadIdentity() ;
    gluPerspective(45.0, (double)w/(double)h, 1.0, 200.0) ;
}

float _angle = 10.0 ;
void Affichage()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) ;
    glMatrixMode(GL_MODELVIEW) ;
    glLoadIdentity() ;

    glTranslatef(0.0f, 0.0f, -10.0f) ;
    
    // Ajoute une lumière ambiante
    GLfloat AmbientColor[] = {0.2f, 0.2f, 0.2f, 1.0f} ; // couleur (2.0, 2.0, 2.0)
    glLightModelfv(GL_LIGHT_MODEL_AMBIENT, AmbientColor) ;
    
    //Positonne un spot


    glPushMatrix() ;
    glRotatef(_angle, 0.0f, 1.0f, 0.0f) ;

    glBegin(GL_QUADS) ;

    //devant
    glColor3f(0.0f, 1.0f, 0.0f) ;
    glVertex3f(1.0f, 1.0f, 0.0f) ;
    glVertex3f(1.0f, -1.0f, 0.0f) ;
    glVertex3f(-1.0f, -1.0f, 0.0f) ;
    glVertex3f(-1.0f, 1.0f, 0.0f) ;
    
    //derrière
    glColor3f(1.0f, 0.0f, 0.0f) ;
    glVertex3f(1.0f, 1.0f, -2.0f) ;
    glVertex3f(1.0f, -1.0f, -2.0f) ;
    glVertex3f(-1.0f, -1.0f, -2.0f) ;
    glVertex3f(-1.0f, 1.0f, -2.0f) ;
    
    //droite
    glColor3f(0.0f, 0.0f, 1.0f) ;
    glVertex3f(1.0f, 1.0f, -2.0f) ;
    glVertex3f(1.0f, -1.0f, -2.0f) ;
    glVertex3f(1.0f, -1.0f, 0.0f) ;
    glVertex3f(1.0f, 1.0f, 0.0f) ;

    //gauche
    glColor3f(1.0f, 1.0f,1.0f) ;
    glVertex3f(-1.0f, -1.0f, -2.0f) ;
    glVertex3f(-1.0f, 1.0f, -2.0f) ;
    glVertex3f(-1.0f, 1.0f, 0.0f) ;
    glVertex3f(-1.0f, -1.0f, 0.0f) ;


    glEnd() ;
    glPopMatrix() ;

    glutSwapBuffers() ;
}

void update(int valeur)
{
    _angle += 1 ;
    if (_angle > 360)
    {
        _angle -= 360 ;
    }

    glutPostRedisplay() ;
    glutTimerFunc(25, update, 0);
}

int main(int charc, char** charv)
{
    glutInit(&charc, charv) ;
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH) ;
    glutInitWindowSize(700, 700) ;
    glutCreateWindow("Essayons de comprendre l'éclairage avec Faucheuse ^^") ;

    InitRendering() ;
    glutKeyboardFunc(Clavier) ;
    glutReshapeFunc(Resize) ;
    glutDisplayFunc(Affichage) ;
    glutTimerFunc(25, update, 0);

    glutMainLoop() ;
    return 0 ;
}


voila voila, pourrioez vous m'expliquer pourquoi l'eclairage baisse svp?

merci d'avance

mercredi 28 mai 2008 à 10:46:26 | Re : Lumiere ambiente

faucheuse

J'ai trouvé pourquoi : en fait comme on peut le voir, j'initialise deux lumieres : glEnable(GL_LIGHT0) et glEnable(GL_LIGHT1).

Je pensais que seulement les initialiser ne les affichait pas mais apperement si.
Quand je les desactive je n'ai plus aucune lumiere apart la lumiere ambiante.



Cette discussion est classé dans : cube, lumiere, face, 2f, ambiente


Répondre à ce message

Sujets en rapport avec ce message

Cube 3D + couleur + lumiere [ par jojomillenium ] Bonjour, J'ai fait un cube en 3D unicolor, mon probleme c'est qu'en perspective je ne distingue pas les arretes (vous voyez ce que je veux dire?) J'ai Opengl: fonctions add substract [ par acx01b ] Bonjour, je n'ai pas un niveau excellent en Opengl donc je m'en remets à vous pour me conseiller: j'aimerais essayer d'implémenter un logique de "a Face transparente [ par bizzard4 ] BonjourJ'explique mon problème. J'ai fait un cube à la main avec 36 vertex. J'ai mit une couleur différente sur chaque face mais j'ai bizarement j'ai directx mesh face a la direction [ par sam20 ] Salut a tous.Voila mon pb.J'affiche la mesh et je lui donne une position ainsi qu'une direction.Je voudrai orienter ma mesh vers la direction.x,y,z =p VBO+TEXTURE [ par alpha ] Slt donc aprés avoir passé une bonne partie de ma journée à essayer d'afficher un simple cube texturé (correctement) à l'aide des VBO's -> conclusion: Etudiant cherche développeur a interviewer [ par zocario ] Bonjour a tous, je suis en première année de licence informatique à l'université joseph fourrier sur grenoble et je cherche a interviewer (par email, Code pour steph [ par SmallToad ] Voici le code, 222 lignes. ca va etre moin lour que sur le chat, .#include #include #include #include #include PB remplissage 3D [ par MangaII ] Hello tout le monde !J'ai un petit soucis ! j'ai un cube (3D), avec des points a l'intérieur (BCP, environ 10000). Et ces points sont répartie dans un opengl et devc++ >> lumiere et fichier jpeg [ par D4rkRe4per ] hello tlmj'aurai 2 questions a poser concernant l'OpenGL.Travaillant avec Dev c++, j'aurai aimé savoir comment créer une lumiere. (par exemple pour la Probleme de transparence [ par Sebaplus ] Salut, j'ai un problème avec la transparence: lorsque je regarde la face transparente à travers une face opaque, je la vois qu'en meme.Pourtant je des


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,234 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.