begin process at 2012 05 29 21:41:21
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

OpenGL

 > 

Probleme de positionenent des lumieres


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

Probleme de positionenent des lumieres

vendredi 13 août 2004 à 10:49:55 | Probleme de positionenent des lumieres

fcoutel

Bonjour,

J'ai recupere le code de Nate Robbins (tutorial de GLUT) sur les lumieres et je ne comprends pas certaines choses.

Il y a une function qui dessine le "world"
world_display(void)
{
GLfloat pos[4];
double length;
float l[3];

cell_vector(pos, light, 4);
l[0] = lookat[3].value - lookat[0].value;
l[1] = lookat[4].value - lookat[1].value;
l[2] = lookat[5].value - lookat[2].value;

invert(modelview, inverse);

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

if (swapped) {
glPushMatrix();
glTranslatef(l[0], l[1], l[2]);
glMultMatrixd(inverse);
glColor3ub(255, 255, 255);
glBegin(GL_LINE_STRIP);
glVertex3f(0.0, 0.0, 0.0);
if (pos[3] == 0) /* 10.0 = 'infinite' light */
glVertex3f(pos[0]*10.0,pos[1]*10.0,pos[2]*10.0);
else
glVertex3f(pos[0], pos[1], pos[2]);
glEnd();
glLightfv(GL_LIGHT0, GL_POSITION, pos);
glPopMatrix();
} else {
glColor3ub(255, 255, 255);
glBegin(GL_LINE_STRIP);
glVertex3f(0.0, 0.0, 0.0);
if (pos[3] == 0) /* 10.0 = 'infinite' light */
glVertex3f(pos[0]*10.0,pos[1]*10.0,pos[2]*10.0);
else
glVertex3f(pos[0], pos[1], pos[2]);
glEnd();
glLightfv(GL_LIGHT0, GL_POSITION, pos);
}

length = normalize(l);

if (world_draw) {
glEnable(GL_LIGHTING);
drawmodel();
glDisable(GL_LIGHTING);
}

glPushMatrix();
glMultMatrixd(inverse);

/* draw the axes and eye vector */
glPushMatrix();
glColor3ub(0, 0, 255);
glBegin(GL_LINE_STRIP);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(0.0, 0.0, -1.0*length);
glVertex3f(0.1, 0.0, -0.9*length);
glVertex3f(-0.1, 0.0, -0.9*length);
glVertex3f(0.0, 0.0, -1.0*length);
glVertex3f(0.0, 0.1, -0.9*length);
glVertex3f(0.0, -0.1, -0.9*length);
glVertex3f(0.0, 0.0, -1.0*length);
glEnd();
glColor3ub(255, 255, 0);
glRasterPos3f(0.0, 0.0, -1.1*length);
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, 'e');
glColor3ub(255, 0, 0);
glScalef(0.4, 0.4, 0.4);
drawaxes();
glPopMatrix();

invert(projection, inverse);
glMultMatrixd(inverse);

/* draw the viewing frustum */
glColor3f(0.2, 0.2, 0.2);
glBegin(GL_QUADS);
glVertex3i(1, 1, 1);
glVertex3i(-1, 1, 1);
glVertex3i(-1, -1, 1);
glVertex3i(1, -1, 1);
glEnd();

glColor3ub(128, 196, 128);
glBegin(GL_LINES);
glVertex3i(1, 1, -1);
glVertex3i(1, 1, 1);
glVertex3i(-1, 1, -1);
glVertex3i(-1, 1, 1);
glVertex3i(-1, -1, -1);
glVertex3i(-1, -1, 1);
glVertex3i(1, -1, -1);
glVertex3i(1, -1, 1);
glEnd();

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glColor4f(0.2, 0.2, 0.4, 0.5);
glBegin(GL_QUADS);
glVertex3i(1, 1, -1);
glVertex3i(-1, 1, -1);
glVertex3i(-1, -1, -1);
glVertex3i(1, -1, -1);
glEnd();
glDisable(GL_BLEND);

glPopMatrix();
glutSwapBuffers();
}

je ne comprends pas les histoires
invert(modelview, inverse);
..
puis
glPushMatrix();
glTranslatef(l[0], l[1], l[2]);
glMultMatrixd(inverse);
..
qu'est ce que cela fait et pourquoi as t'on besoin de faire ca pour placer les lumieres?

Merci!


Cette discussion est classée dans : glvertex3f, gl, length, pos, glvertex3i


Répondre à ce message

Sujets en rapport avec ce message

SDL Opengl lumiere [ par xian240482 ] Alors là, je comprend pas!Voila un mon code (ultra simplifier) et il ne marche pas : Il plante sur le glend() !Si c'est ,comme je le crois, une erreur erreur dans mon premier programme [ par HyperGLUT ] je souhaite d abord faire un grand bonjours a tous ici , je suis tout nouveau sur le forum :).voila je debute dans opengl et le c++ , je me suis procu OPENGL TEXTURE BMP [ par Batman60 ] bonjourvoici mon code compilé sur dev-cppc'est un cube tournant 3D affichant un bmp sur les six facesje voudrais texturer plusieurs bmp sur les six fa OpenGL avec GLUT please help [ par mondrone ] Je viens d'essayer de recopier tel quel un tutorial qu'on m'avait donné sur le net. J'arrive à obtenir ce que je suis censé avoir, pendant environ 1/1 les sous fenetres en glut n'en font qu'a leurs tetes [ par whikie ] Bonjour,je voudrais comprendre le placement des glutSubWindow.Voici les infos que j'ai :glutCreateSubWindow La fonction glutCreateSubWindow crée une Je ne comprends plus rien aux lumieres [ par Ensias ] Salut tous le monde, je viens de debuter Opengl et je gallere avec les lumieres.J'ai cree une petite scene qui comporte 2 cubes, l'un des deux est fix probleme de texture pour creer une explosion [ par elfiosi ] Bonjour a tous,Jai un probleme de texture lorsque jessaie de creer une explosion pour un jeu video. jutilise une image qui represente une etincelle av Problème avec les polygones [ par nisaloncaje ] Bonjour, j'ai le code source suivant : #include #include double a=0,inca=0.1; /* Prototype des fonctions */void affichage();void clavier(unsigned OpenGL dans une fenetre Win32 ou SDL [ par Dante41 ] Alors , je voulais afficher un cube dans ma fenetre donc voila mon code : #include #include #include #include #include #include WNDCLASS BMP Transparante [ par barraq ] Voila j'ai un petit soucis de transparance avec les images BMP J'afficher mes arbres en utilisant le format TGA, mais la transparance ne semble marche


Nos sponsors


Sondage...

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,702 sec (4)

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