Cita de: Prompt en 09 de Julio de 2009, 02:52:14 PM
yo veo el video bien, nose, sigues teniendo algun problema?
Vamos a ver. Lo que pretendo es que una luz sea direccional y apunte al centro, bien, la otra posicional, bien, y la última direccional pero que la dirección vaya cambiando y que ilumine también hacia las paredes pero no lo consigo.
Lo que hago es lo siguiente.
Declaro luzrdir como un vector de 3 elementos (lo he mirado y en este caso no hay cuarto parámetro, aunque por si acaso he probado con cuatro parámetros pero tampoco resulta),
Código [Seleccionar]
GLfloat luzrdir[]={0,0,1}; // dirección de la luz roja
uso el mismo método para calcular la dirección que para calcular la posición y normalizo el vector por que creo que en algún sitio he leído que el vector debe estar normalizado (también lo he hecho sin normalizar el vector y el resultado es el mismo), es decir,
Código [Seleccionar]
luzrdir[0]=GLfloat(cos(tm *0.0005f)); // tm= tiempo transcurrido desde el inicio de la escena
luzrdir[1]=GLfloat(sin(tm *0.0005f));
luzrdir[2]=GLfloat(sin(tm *0.0005f));
NormalizarVector(luzrdir,luzrdir);
Nota: La funcion NormalizarVector aunque se vea rara funciona bien, no es el problema, lo he comprobado.
y después de las correspondientes rotaciones y translaciones y de dibujar la escena salvo las "luces",
Código [Seleccionar]
glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION,luzrdir);
también he probado antes de dibujar la escena pero haga lo que haga parece no tener ningún efecto sobre la dirección de la luz, siempre apunta al centro, y se me han acabado las ideas.
Se que las rotaciones y las traslaciones también afectan a las luces, quizás tenga algo que ver con eso, quizás si me planteo la escena de otra forma vea algún cambio.
De todas formas ya he empezado con otra cosa, llevo demasiado tiempo con esto, más adelante volveré con ello, aunque si tienes alguna idea lo probaré.
Gracias por tu interés.