Está en la página 1de 45

LUCES LMPARAS

Realizado por: Mercedes Snchez Marcos Almudena Sardn Garca

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

Los modelos de iluminacin I


El fenmeno de iluminacin y reflexin indica cmo la luz interacta con un slido. Clasificacin de la luz:
Luz incidente. Luz de reflexin.
Luz difusa.
Luz difusa global. Luz difusa local.

Luz especular.

Luz de refraccin. Luz de transmisin.


Luces y lmparas 6

Los modelos de iluminacin II


Los diferentes tipos de iluminacin producen distintos efectos de brillo y color (reflectancia). El ngulo entre los rayos de luz y la perpendicular de la superficie determina en que medida la superficie aparecer brillante a los ojos del espectador. La perpendicular de una superfice plana es la lnea qu sale con un ngulo de 90 grados (normal). Una superficie plana aparecer ms brillante cuando su perpendicular apunte directamente hacia el foco de luz. La superficie no reflejar luz cuando est ms de 90 grados de los rayos de luz, ni tampoco cuando est mirando al lado opuesto del foco luminoso. El modelo bsico de iluminacin considera slo las reflexiones I ntensidad = luz am biente + luz difusa +

luz especular

Luces y lmparas

Los modelos de iluminacin III


Luz ambiental.
Es la luz indirecta, por ejemplo la que se ve en un da nuboso. Es el resultado de la reflexin mltiple de todos los objetos en la escena. En teora no produce sombras en el mundo real, pero en caso de producirlas sern suaves.

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

Los modelos de iluminacin IV


Luz especular.
Procede de un nico punto de luz, es decir de una sola direccin. Es una luz con alta intensidad que una superficie brillante refleja a lo largo de la direccin del espejo. Es la que produce el efecto espejo. Tiene el color de la fuente de luz. La reflexin especular depende de la posicin del observador.
Luces y lmparas 9

Los modelos de iluminacin V


Modelo de Phong (I).
La luz en un punto tiene tres componentes y es igual a la suma de las tres luz difusa + luz especular + luz ambiental. El modelo de Phong consiste en modelar el efecto de la luz especular. Lo hace de la forma: I esp=k sI lcosn=k sI l(VR)n n es el parmetro de reflexin especular. Si la superficie es ms brillante, n es mas grande
Luces y lmparas 10

Los modelos de iluminacin VI


Modelo de Phong (II).
La componente difusa toma el color de la superficie. El rayo reflejado (componente especular) toma el color de la fuente de luz. I d = I i k d cos Si slo se consideran la componente difusa y la especular el objeto queda como si estuviera iluminado por un flash. Para evitarlo se usa la componente ambiental. Ig=Iaka En la componente ambiental se engloban las otras componentes.
Luces y lmparas 11

Los modelos de iluminacin VII


Modelo bsico de iluminacin.
Considerando el modelo de Phong se puede definir el modelo bsico de iluminacin de la siguiente forma: I =I ambiente+I difusa+I especular=k aI a+k dI l(N L)+k sI l(N H)n De la misma forma, se puede definir el modelo bsico de iluminacin si se dispone de n fuentes de luz: I =I ambiente+I difusa+I especular=k aI a+I I{k d(N L l)+k s(N H l)n }

Modelo bsico de iluminacin con n fuentes de luz.

Atenuacin de la intensidad a lo largo de la distancia de la luz.


Para tener en cuenta que los objetos ms cercanos son ms brillantes que los ms lejanos se usa un trmino de atenuacin. El modelo bsico con atenuacin de distancia y fuentes mltiples: I =k aI a + f(d l)I I { k d(N L l) + k s (N H l)n } Donde f es una funcin de atenuacin emprica.
Luces y lmparas 12

Rendering. Determinacin de superficies visibles I


Una parte importante de la generacin de grficos realistas es la identificacin de las partes de una escena que son visibles desde un punto de vista determinado. Distintos planteamientos:
Mtodos de deteccin de superficie visible.
Imagen-espacio. Objeto-espacio.

Mtodos de eliminacin de superficies ocultas.


Luces y lmparas 13

Mtodo de la normal.

Rendering. Determinacin de superficies visibles II


Se aplica en figuras planas. Permite ocultar la mitad de las superficies que hay en escena. Se basa en calcular la normal a todas las superficies. Las normales cuya proyeccin en la direccin de visin sean positivas son superficies ocultas y las negativas visibles. Se calcula haciendo el producto escalar del vector de visin por el vector normal de cada cara. Si un objeto es polidrico, las caras son totalmente visibles o totalmente ocultas. Si hay varios objetos se realiza el algoritmo para todos los objetos. Los que hace el algoritmo es eliminar la cara posterior de los objetos.
Luces y lmparas 14

Mtodo de buffer con profundidad. Buffer Z.


Es un mtodo de espacio-imagen. Se mantiene una base de datos que corresponde a cada pixel de la pantalla de visin. La base de datos contiene informacin sobre la profundidad de la coordenada visual z para cada parte de un objeto que ocupe una posicin determinada de pixel. Para cada pixel (x,y) de la imagen, el punto con menor coordenada z es visible. El mtodo del Z-Buffer es infalible para todas las escenas 3D, no importa cul sea su complejidad. Sin embargo, es de memoria intensiva.
Luces y lmparas 15

Rendering. Determinacin de superficies visibles III

Algoritmo del pintor.

Rendering. Determinacin de superficies visibles IV


Se basa en pintar primero el fondo. Sobre este fondo, se dibuja la siguiente figura. Si sobre esa figura va otra, se dibujara encima. Este mtodo tiene un inconveniente cuando las superficies se oscurecen alternativamente.

Luces y lmparas

16

Rendering. Determinacin de superficies visibles V


Mtodo de traza de rayos.
Se aplica la definicin del algoritmo de superficie oculta (mtodo de imagen-espacio). Para cada pixel se traza un rayo. Si no intercepta ningn objeto se le da el color de fondo. Si intercepta un objeto, se le da el color del primer objeto interceptado. Es un mtodo es muy lento, pero tiene la ventaja de dar imgenes muy realistas. Por ejemplo, usando varias fuentes de luz, se obtienen unos resultados muy buenos, casi fotogrficos.
Luces y lmparas 17

Mtodos de rendering de los polgonos I


Sombreado con intensidad constante.
Consiste en calcular una nica intensidad para cada polgono. Una vez calculada la intensidad de cada polgono, se visualizan todos los puntos del mismo polgono con una nica intensidad. Es muy rpido y preciso si las luces y el observador estn lejos. Presenta el inconveniente de que hay discontinuidad de intensidad entre los polgonos. Este mtodo es el ms ineficiente y menos usado de los tres.
Luces y lmparas 18

Mtodos de rendering de los polgonos II


Mtodo de sombreado de Gouraud (Gouraud Shading).
El mtodo consiste en calcular la intensidad de los pixeles a lo largo de la lnea de escaneo por interpolacin. Elimina la discontinuidad de la intensidad entre los polgonos que presentaba el mtodo anterior.

Mtodo de sombreado de Phong (Phong Shading).


En lugar de interpolar las intensidades, lo que hace es interpolar las normales para cada punto de la superficie. Con este mtodo es con el que se consiguen resultados mas realistas, pero tiene el inconveniente de que necesita realizar entre 6 y 7 veces mas clculos que para el mtodo de Gouraud.
Luces y lmparas 19

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);

Iluminacin de Phong: OpenGL no implementa PHONG directamente


Luces y lmparas 21

Caractersticas de las fuentes de luz(I)


OpenGL soporta hasta 8 luces por escena. Las luces llevan asociado un nombre:
GL_LIGHT0, GL_LIGHT1, GL_LIGHT2

Para activar y desactivar una luz se utiliza:


glEnable(GL_LIGHT0); glDisable(GL_LIGHT0);

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

Caractersticas de las fuentes de luz(II)

Luces y lmparas

23

Vectores Normales a la superficie (I)


Para iluminar una superficie (plano) necesitamos informacin sobre su vector normal asociado. En OpenGL es necesaria la definicin de un vector normal para cada uno de los vrtices de nuestra geometra. Una vez calculada la normal tenemos que normalizar, es decir, dividir ese vector por su propio mdulo para que sea unitario. OpenGL utilizar la normal asociada a cada vrtice para evaluar la luz que incide sobre ste.
Luces y lmparas 24

Vectores Normales a la superficie (II)


Para definir normales con OpenGL:
glBegin(GL_POLYGON ); glNormal3f(CoordX, CoordY, CoordZ); glVertex3f ( ... ) ; glVertex3f ( ... ) ; glVertex3f ( ... ) ; glVertex3f ( ... ) ; ... glEnd( ) ;

Luces y lmparas

25

Vectores Normales a la superficie (III)


En este caso cada vrtice tiene su normal:
glBegin ( GL_POLYGON ) ; glNormal3f ( CoordX, CoordY, CoordZ ) ; glVertex3f ( ... ) ; glNormal3f ( CoordX, CoordY, CoordZ ) ; glVertex3f ( ... ) ; glNormal3f ( CoordX, CoordY, CoordZ ) ; glVertex3f ( ... ) ; glNormal3f ( CoordX, CoordY, CoordZ ) ; glVertex3f ( ... ) ; ... glEnd( ) ;
Luces y lmparas 26

Vectores Normales a la superficie (IV)


Se puede indicar a OpenGL que realice el clculo de la normal automticamente:
glEnable(GL_NORMALIZE); glDisable(GL_NORMALIZE);

No recomendable

Luces y lmparas

27

Colocar las luces


Para colocar la luz se utiliza:
GLvoid glLightfv (GLenum light, GL_POSITION, const GLfloat *params);

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

Atenuacin con la distancia (I)


Es la atenuacin que sufre la luz a medida que se desplaza.

Para modelar esto contamos con tres parmetros a definir:


GL_CONSTANT_ATTENUATION. En la formula es "a". GL_LINEAR_ATTENUATION. En la formula es "b". GL_QUADRATIC_ATTENUATION. En la formula es c".
Luces y lmparas 29

Atenuacin con la distancia (II)


Para pasarle los valores a OpenGL se usa la funcin de siempre:
GLvoid glLightfv ( GL_LIGHT5, GL_CONSTANT_ATTENUATION, 0.8 ) ; GLvoid glLightfv ( GL_LIGHT5, GL_LINEAR_ATTENUATION, 0.5 ) ; GLvoid glLightfv ( GL_LIGHT5, GL_QUADRATIC_ATTENUATION, 0.1 ) ;

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.

Pasamos estos parmetros a OpenGL con la funcin:


glLightfv(GL_LIGTH0, GL_SPOT_DIRECTION, direccin);

Glfloat direccin={0.0, 0.0, 1.0}


Luces y lmparas 31

rea de cobertura (II)

Luces y lmparas

32

Propiedades de los materiales (I)


Para cada polgono de la escena hay que definir un material de forma que su respuesta a la incidencia de luz vare segn sea el caso. Se definen cinco caractersticas para un material:
Reflexin difusa Reflexin especular Reflexin ambiental Coeficiente de brillo Coeficiente de emisin
Luces y lmparas 33

Propiedades de los materiales (II)


Para indicar las caractersticas de los materiales se utiliza:
GLvoid glMaterialfv(GLenum face, GLenum pname, const GLfloat *params);

Los parmetros de la funcin son:


Glenum face Glenum pname const GLfloat *params

GL_FRONT GL_BACK GL_FRONT_AN D_BACK

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

Efectos de la iluminacin (I)


Se basan en la componente especular.

Luces y lmparas

35

Efectos de la iluminacin (II)


Para conseguir los efectos de la luz especular hay que realizar lo siguiente:
Por un lado tenemos que activar la iluminacin especular recurriendo a las primitivas de OpenGL:
Espec[] = 1.0f,1.0f,1.0f,1.0f}; GlLight(GL_LIGHT0,GL_SPECULAR,Espec);

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

Focos de luz (I)


Tenemos dos tipos de luz: Luz propia es proporcionada por un foco de luz bien situado, del cual conocemos su ubicacin, y que emite sus rayos de luz de forma radial o divergente. Luz impropia emite sus rayos de luz desde una ubicacin muy distante, de forma que podemos considerar sus rayos como paralelos entre si

Luces y lmparas

37

Focos de luz (II)


Colocacin de un foco de luz.
Para colocar una fuente de luz en OpenGL:
glLightfv (GL_LIGHT0, GL_POSITION,LightPos);

Si queremos le podemos dar el efecto foco


Se configura el ngulo del cono de luz.
glLight (GL_LIGHT0, GL_SPOT_CUTOFF, 60.0f);

Configura el brillo del mismo.


glLight (GL_LIGHT0, GL_SPOT_EXPONENT, 100.0f);
Luces y lmparas 38

Focos de luz (III)


Para ver como los focos de luz interaccionan en una escena hay que hablar de:
iluminacin local: cmo se comporta cada superficie al ser iluminada de forma individual. iluminacin global: iluminacin de un determinado objeto en una escena, teniendo en cuenta los rayos provenientes varias fuentes de luz y varios objetos.
Luces y lmparas 39

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

También podría gustarte