begin process at 2012 05 29 07:57:02
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Linux

 > 

OpenGL

 > 

Lumiere ambiente


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Lumiere ambiente

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ée 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 coté visible d'une face d'un cube [ par nicotwo ] Bonjour, Je suis actuellement en train d'apprendre à faire de la 3D avec directX 10 à l'aide des tutoriels du SDK. Étant au tutoriel 4, j'ai fait une Detection de clique de souris sur une face en opengl [ par Rayn3d ] Bonjour a tous, Voila j'ai un souci, j'ai creer une espece de menu en opengl, avec 3 face texture (que l'on peut faire tourner en maintenant le bouton Cube rotatif sur commande en OpenGL [ par Yoshiji ] Bonjour, Tout d'abord, je suis sous windows Seven 64, codant sous Code::Blocks. J'ai un projet à faire dans le cadre de mes études : Un cube en C en Recherche programmeur c++ (pCube) [ par brett87 ] Bonjour à tous, dans le cadre de la reprise du développement de pCube (mod du jeu cube), nous recherchons un programmeur. Présentation du projet : pC probleme de rotation [ par zizu89 ] bjr tous le monde [^^happy13] j'ai un projet en opengl d'un rubiks cube j'ai commencé la creation des cube et je voulais tout d'abord le faire tourne erreur : windows bloque mon app [ par biyob0 ] Bonjour voila j'ai écrie un programme qui permet de réaliser des opérations de base sur les fractions le code : [code=cpp] # include # include 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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales