Salut,
j' aurais besoin d' aide pour placer une spot light car je n' y arrive pas , en effet la light ne semble pas du tout placé à la position que j' indique dans ma scene
dans la classe light , j initialise un certain nombre de variables à l' initialisation du code :
ensuite, a chaque frame , je dessine la scene (pseudo code )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Amb1 = Vector4(0,0,0,1); // Vector4 est une classe simple pour stocker les x,y,z,et w Dif1 = Vector4(1,0,0,1); // diffuse Spe1 = Vector4(0,0,1,1); // specular Pos1 = Vector4(0,2,0,1); // position de la light // je la veut au point 0,2,0 Dir1[0] = 0; // direction de la light == vers le bas sur l' axe y Dir1[1] = -1; Dir1[2] = 0;
et ma fonction place_lights() :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 void Draw() { clear_buffer(); // glClear (...) place_camera(); // gluLookAt(...) place_lights(); // voir plus bas dessine_mes_objets(); swap_buffers(): }
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 glEnable(GL_LIGHT1); glEnable(GL_LIGHTING); glLightfv (GL_LIGHT1 , GL_AMBIENT , (float*)&Amb1 ); glLightfv (GL_LIGHT1 , GL_DIFFUSE , (float*)&Dif1 ); glLightfv (GL_LIGHT1 , GL_POSITION , (float*)&Pos1 ); glLightfv (GL_LIGHT1 , GL_SPECULAR , (float*)&Spe1 ); glLightfv (GL_LIGHT1 , GL_SPOT_DIRECTION , Dir1 ); float spot_cutoff = 45.0f; float const_att = 1.5f; float spot_exp = 2.0f; glLightfv(GL_LIGHT1,GL_SPOT_CUTOFF,&spot_cutoff); glLightfv(GL_LIGHT1,GL_SPOT_EXPONENT,&spot_exp); glLightfv(GL_LIGHT1,GL_CONSTANT_ATTENUATION,&const_att);
Donc voila ma scene n' est pas du tout eclairé comme je le souhaite , car je pensais que en faisant ainsi j' aurais une lumiere plus intense sur mon sol en dessous du point (0,2,0) mais c est pas le cas !
Sinon ma light0 est une light directionnelle et fonctionne tres bien
Donc si qqun pourrait m" expliquer ce qui va pas dans mon code ca serait super cool
Merci d' avance
Partager