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