Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Contenido (I)
Introduccin. Los modelos de iluminacin. Rendering. Determinacin de superficies visibles. Mtodos de rendering de los polgonos. Iluminacin en OpenGL
Tipos de iluminacin Caracteristicas de las fuentes de lus Vectores normales Colocar luces Atenuacin con la distancia rea de cobertura
Luces y lmparas
Contenido (II)
Propiedades de los materiales Efectos de la iluminacin Focos de luz Sombras Conclusiones
Luces y lmparas
Introduccin I
Actuacin de la luz al chocar con una superficie. Cmo representa OpenGL la luz y sus fenmenos. Uso de la luz para construir escenas. Modelos de renderizado ms usados. Uso de la iluminacin en OpenGL. Especificacin de los materiales de la escena.
Luces y lmparas 4
Introduccin II
Efectos de iluminacin que se pueden conseguir con OpenGL. Modelos de iluminacin y reflexin. Luz incidente = luz reflejada + luz dispersa + luz absorbida + luz transmitida. Parmetros: distancia entre la fuente de luz y el objeto, rugosidad de la superficie, tipo de material, ngulo de incidencia de la luz, longitud de onda de la luz incidente.
Luces y lmparas 5
Luz especular.
luz especular
Luces y lmparas
Luz difusa.
Es la que la superficie de un objeto refleja en todas las direcciones debido a la iluminacin directa. Es la responsable del color del objeto. Es una caracterstica propia de los objetos mates.
Luces y lmparas 8
Mtodo de la normal.
Luces y lmparas
16
Activar la iluminacin
Para activar/desactivar la iluminacin, OpenGL propone las siguientes primitivas: glEnable(GL_LIGHTING); glDisable(GL_LIGHTING); Con estas funciones se le indica a OpenGL que realice los clculos correspondientes para el uso de las fuentes de luz y de las propiedades de los materiales.
Luces y lmparas 20
Tipos de iluminacin
Hay tres tipos de iluminacin en OpenGL:
Iluminacin plana: evala slo un color para todos los puntos de un polgono
glShadeModel(GL_FLAT);
Iluminacin suave:efecta clculos de color para cada uno de los puntos del polgono.
glShadeModel(GL_SMOOTH);
Para definir las fuentes de luz tenemos que decirle a OpenGL cules son las propiedades de cada una de nuestras luces.
GLvoid glLightfv(GLenum light, GLenum pname, const GLfloat *params);
Luces y lmparas 22
Luces y lmparas
23
Luces y lmparas
25
No recomendable
Luces y lmparas
27
La posicin se indica con un array de valores: Glfloat posicin={0.0, 0.0, 100.0, 1.0); Los rayos de la luz se asumen paralelos. Podemos mover una luz a gusto por una escena.
Luces y lmparas 28
Luces y lmparas
30
rea de cobertura(I)
Hace referencia al rea que abarca el haz de luz que surge de la fuente. Podemos definir los siguientes parmetros:
GL_SPOT_CUTOFF para definir un "cono" de luz. GL_SPOT_DIRECTION para restringir la direccin de la luz emitida. GL_SPOT_EXPONENT que regula la prdida de intensidad de la luz a medida que nos alejamos del centro del cono.
Luces y lmparas
32
GL_DIFFUSE GL_AMBIENT
( R, G, B, 1.0 ) ( R, G, B, 1.0 )
GL_AMBIENT_AND ( R, G, B, 1.0 ) _ DIFFUSE GL_EMISSION GL_SPECULAR GL_SHININESS Luces y lmparas ( R, G, B, 1.0 ) ( R, G, B, 1.0 ) [ 0, 128 ]
34
Luces y lmparas
35
Por otro lado tenemos que asignar al material las propiedades adecuadas de brillo:
GlMaterialfv(GL_FRONT,GL_SPECULAR,espec); GlMateriali(GL_FRONT,GL_SHININESS,128);
Luces y lmparas
36
Luces y lmparas
37
Sombras (I)
Es una de las partes de la iluminacin que mayor realismo aporta a nuestras escenas. En general vamos a tener muy diversos tipos de sombras, y diversas formas de aplicarlos, pero slo nos vamos a centrar en dos tcnicas y su aplicacin mediante el buffer plantilla.
Luces y lmparas 40
Sombras (II)
Sombras proyectadas.
Es la tcnica ms sencilla, y consiste en calcular una matriz de proyeccin sobre el plano sobre el que queremos dibujar la sombra. Una vez calculada esta matriz, si la multiplicamos por la matriz del modelo, y procedemos a dibujar nuestras figuras, las estaremos dibujando sobre ese plano. Por tanto una vez dibujada nuestra escena, desactivamos la iluminacin, proyectamos y dibujamos nuestras figuras teniendo en cuenta que hay que elegir un color adecuado porque van a ser las sombras.
Luces y lmparas 41
Sombras (III)
Sombras Volumtrica
La tcnica anterior es muy sencilla, pero solo nos sirve para dibujar esas sobras proyectadas sobre planos. Si tenemos una composicin de figuras en las que unas proyectan sombras sobre otras, con la tcnica anterior no las podremos representar. Para evitar esto vamos a utilizar una tcnica que consiste en calcular las sombras como interseccin de volmenes.
Luces y lmparas 42
Sombras (IV)
Sombras Volumtricas: el buffer plantilla.
El funcionamiento de este buffer es muy sencillo:
Cada pxel tiene asignado un valor en este buffer. Adems, hay una operacin de comparacin definida para el buffer. Si el valor de plantilla de un pxel satisface la condicin de comparacin este se dibuja, si no, no se dibuja. Tambin tenemos una operacin de modificacin de este valor, que se aplica sobre los pxel que satisfacen la condicin.
Luces y lmparas 43
Sombras (V)
El algoritmo ser como sigue
Calculamos el volumen de la sombra, y lo dibujamos de tal manera que modifique el valor de todos los pxeles asignndoles un valor reconocible para nosotros posteriormente como sombreado. Dibujamos nuestra escena. Desactivamos la luz, asignamos el color de nuestra sombra activamos es test del buffer, de tal manera que solo se dibuje en las regiones donde el valor del buffer sea el que hemos asignado a nuestra sombra. Volvemos a dibujar nuestra escena y ya tendremos las sombras.
Luces y lmparas 44
Conclusiones
El captulo de iluminacin es uno de los ms interesantes de la programacin grfica, porque es uno de los que ms nos va a permitir dotar de fotorrealismo a las escenas que estemos modelando, pero exige un gran dominio del resto de temas. Existen una serie de tcnicas que ayudan a conseguir ese fotorrealismo.No hemos querido profundizar mucho en ellas, ya que en la mayora de los casos nos saldramos de lo que es el carcter introductorio a lo que es OpenGl y a lo que es la programacin grfica.
Luces y lmparas 45