tengo que poner la iluminación en una imagen de OpenGL pero no saben cómo poner un punto de luz de iluminación correcta como en la siguiente imagen:iluminación de OpenGL y brillante
Por ahora lo había intentado modo diferente de la iluminación, pero el resultado es el siguiente :(
os adjunto el código que he utilizado para mi resultado. lo que está mal?
float specref[] = { 1.0f, 1.0f, 1.0f, 1.0f };
// Light values and coordinates
float ambientLight[] = { 0.3f, 0.3f, 0.3f, 1.0f };
float diffuseLight[] = { 0.7f, 0.7f, 0.7f, 1.0f };
float specular[] = { 1.0f, 1.0f, 1.0f, 1.0f};
float lightPos[] = { 0.0f, -150.0f, -150.0f, 1.0f };
glEnable (GL_LIGHTING) ;
glLightfv(GL_LIGHT0,GL_AMBIENT, ambientLight);
glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuseLight);
glLightfv(GL_LIGHT0,GL_SPECULAR,specular);
glLightfv(GL_LIGHT0,GL_POSITION,lightPos);
glEnable(GL_LIGHT0);
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR,specref);
glMateriali(GL_FRONT_AND_BACK,GL_SHININESS,128);
glEnable (GL_COLOR_MATERIAL) ;
glClearColor (1.0, 1.0, 1.0, 1.0);
glColor3f(0.0,0.0,0.0);
Edición 04/11/2011 0.39 CET
adjunto también es mi función de visualización() llamada por glutDisplayFunc (pantalla);
void display(void)
{
[...]
//Draw polygons in 3d
glColor3f(0.0,1.0,1.0);
glBegin(GL_QUADS);
for(i=0;i<NVERT-1;i++) {
for (j=0;j<NVERT-1;j++) {
glVertex3f((GLfloat)((sb[i*NVERT+j]).x()),
(GLfloat)((sb[i*NVERT+j]).y()),
(GLfloat)((sb[i*NVERT+j]).z()));
glVertex3f((GLfloat)((sb[i*NVERT+j+1]).x()),
(GLfloat)((sb[i*NVERT+j+1]).y()),
(GLfloat)((sb[i*NVERT+j+1]).z()));
glVertex3f((GLfloat)((sb[(i+1)*NVERT+j+1]).x()),
(GLfloat)((sb[(i+1)*NVERT+j+1]).y()),
(GLfloat)((sb[(i+1)*NVERT+j+1]).z()));
glVertex3f((GLfloat)((sb[(i+1)*NVERT+j]).x()),
(GLfloat)((sb[(i+1)*NVERT+j]).y()),
(GLfloat)((sb[(i+1)*NVERT+j]).z()));
}
}
glEnd();
glFlush();
}
En la práctica con pantalla escribo las pequeñas áreas que componen la figura 2 ° que Representé (I omite el algoritmo para el cálculo de los puntos de cada zona porque se lo trabajo).
Mi objetivo es tener un resultado similar a la figura 1 para el rayo y la representación de la figura, pero sólo el resultado obtenido en la figura 2.
No sé cómo poner correctamente la luz y cómo para configurar mi figura para tener este render (como espejo).
Publicar un ejemplo completo, mínimo que demuestra el problema. – genpfault
podrían ser varias cosas. Supongo que no tienes ninguna norma, pero supongo. Necesitamos un ejemplo mínimo como señala @genpfault. – larsmoa
¿Es la primera imagen lo que quiere lograr y la segunda lo que tiene en este momento? – NickLH