La función glColor
define el color de rellenado actual y lleva como parámetros los valores de las
componentes RGB del color deseado y, opcionalmente, un cuarto parámetro con el
valor alpha. Estos parámetros son flotantes y se mueven en el rango [0.0,1.0].
Con ello se pueden componer todos los colores del modo
de video usado en ese instante.
Clásicas:
Iluminación local
Son aquellos en
los que se considera que la intensidad de luz en un punto de la superficie de
un objeto se debe exclusivamente a las Fuentes luminosas.
Cálculos de
iluminación por vértices
Para aplicar
iluminaciona un objeto necesitamos asociar un vector normal a cada vertice del
objeto. Cuando tenemos la normal calculada tenemos que normalizarla, o
sea, dividir ese vector por su propio modulo para que sea unitario, pero
también podemos hacer que se encargue la OpengGl activando la normalización con
el comando glEnable GL_NORMALIZE o desactivarla con glDisable GL_NORMALIZE.
El usar
GL_NORMALIZE dependerá de nuestra aplicación ya que si forzamos a que sea
OpenGl el que las utilice se ralentiza por que le estamos obligando a hacer mas
cálculos de los que debe.
Para definir las
normales en opengl utilizaremos la función glNormal3f(X,Y,Z) por ejemplo para
definir una cara con 4 vértices la definiremos de la siguiente manera:
GlBegin
GL_QUADS
glNormal3f
nX,nY,nZ
glvertex3f x,y,z
glvertex3f x,y,z
glvertex3f x,y,z
glvertex3f x,y,z
glEnd
Es decir, cada
vez que queremos asociar una normal a un vértice usamos glNormal y el vértice/s
que siguen se asocia a esta normal.
Posterior relleno
de triángulos
Rastering. Para
ello se realizan varias fases de procesamiento por Pixel.
-Comprobar si
cada nuevo pixel es visible o no (comprobación de profundidad).
-Interpolación
lineal del color para el nuevo pixel (método de Gouraud).
-Si existe una
textura definida o transparencia, efectuar la modificación de color
correspondiente.
Se trata de la
última fase, en ocasiones la más costosa del proceso, por lo que es la primera
que se suele integrar en el hardware gráfico. En esta etapa se trata de asignar
colores a los pixeles correspondientes al interior de cada triángulo proyectado
que cae dentro del área de visualización. Los colores asignados deben
calcularse por el método de Gouraud, interpolando linealmente entre los colores
de los tres vértices.
Renderizado en
tiempo real
La idea
fundamental del procesado en tiempo real es que todos los objetos deben ser
descompuestos en polígonos. Estos polígonos serán descompuestos a su vez en
triángulos. Cada triangulo será proyectado sobre la ventana bidimensional y
rellenado con los colores adecuados para reflejar los efectos de la
iluminación, texturas, etc. Una vez se han generado los triángulos, en la
pipeline existen dos partes claramente diferenciadas: una primera etapa de
operaciones realizadas sobre cada uno de los vértices, y después de que estos
se proyecten sobre la ventana, entonces comienza una segunda fase de cálculos
realizados para cada pixel cubierto por los triángulos.
Realistas:
iluminación global
Son
aquellos en los que se considera que la intensidad de luz en un punto de la
superficie de un objeto se debe a las fuentes luminosas y al resto de los
elementos existentes en la escena.
Trazado de rayos
El trazado de
rayos computa la interacción de la luz desde un punto de vista determinado y es
particularmente adecuado para superficies reflectantes. Puede utilizarse como
propiedad especifica de un determinado material. Se traza un rayo desde la
posición del observador a través de cada uno de los píxeles del plano de
proyección (una de las ventajas del raytracing es que los rayos que se procesan
son sólo los rayos que parten del observador ), y por cada uno de estos rayos
trazados se busca si interseca con alguno de los objetos que se representan; si
no se encuentra ninguna intersección, para ese pixel, no se sigue el proceso y
se le hace corresponder, por defecto, un color de fondo.
Radiosidad
En el estado
inicial la escena consta de dos tipos de objetos: objetos que emiten luz y
objetos que reciben luz. A partir de aquí, en una primera vuelta, se computa la
luz que recibe cada objeto en una aproximación más exacta, cada parte de un
objeto, según una subdivisión cuya densidad puede precisarse en sucesivas
aproximaciones. Cada una de estas partes, según su grado de reflexividad, su
orientación y su distancia con respecto a las fuentes de luz original, se
convertirá en una segunda vuelta, en un nuevo emisor de energía lumínica, una
fuente de luz secundaria que iluminara a su vez a los objetos que le rodean.
Cálculos de iluminación
por pixel
La iluminación
por píxel en tiempo real es una tecnología revolucionaria ofrecida como
primicia por NVIDIA Shading Rasterizer. La iluminación dinámica a nivel de
píxel libera a los desarrolladores de las restricciones de otros sistemas de
iluminación y pone a su alcance toda una gama de sofisticados efectos. Antes de
que el color final del píxel sea decidido, un cálculo de iluminación debe ser
computado para sombrear a los píxeles basados en alguna luz que puede estar
presente en la escena.
Alto Acabado
Sombreado
Constante o plano. Un cálculo para todo el polígono. Obtenemos una
intensidad que aplicamos a un conjunto de puntos de un objeto (p.ej. todo
un triángulo). Aceleramos el proceso de síntesis. Correcto si se
verifica: Fuente de luz en el infinito. Observador en el infinito. El polígono
representa una superficie plana real del objeto que se modela y no es una
aproximación de un objeto curvo.
Sombreado Constante ó Plano
Un cálculo para
todo el polígono
Los tres
vectores, l, n y v, pueden variar según se va entre puntos sobre una
superficie.
• Para un
polígono plano, n es constante.
• Si se asume un
observador distante, v es constante sobre el polígono.
• Si la fuente de
luz es distante, l es constante.
Si los tres vectores
son constantes, entonces el cálculo de sombreado se lleva a cabo una sola vez
para cada polígono, y se asignará la misma sombra a cada punto en el polígono.
Sombreado plano mostrará
diferencias de sombreado entre los polígonos.
Modelo de Reflexión Phong
El modelo de reflexión de Phong es eficiente y suficientemente
aproximado a la realidad física para producir buenas imágenes, bajo una
variedad de condiciones de luz y propiedades de materiales. Apoya los tres
tipos de interacciones material-luz: ambiente, difusa y especular. Si se tiene
un conjunto de fuentes puntos, con componentes independientes para cada uno de
los tres colores primarios para cada uno de los tres tipos de interacciones
material-luz.
Ray Tracing
En muchas formas, ray tracing es una extensión al enfoque de rendering
con un modelo de iluminación local. Está basado en la observación previa que,
de los rayos de luz saliendo de una fuente, los únicos que contribuyen a la
imagen son aquellos que entran al lente de la cámara sintética y pasan por el
centro de proyección.
Buffer de Profundidad.
El Z-Buffer se
basa en que al generar la posición de un punto en la pantalla la computadora
reserve una zona de memoria especial, llamada Z-Buffer, información relacionada
con la profundidad del punto que ocupa en la escena representada. Cuando el
ordenador representa un nuevo punto consulta el Z-Buffer del píxel que
corresponde en pantalla. Si el valor que ya existe en el píxel es mayor que el
que posee el nuevo punto, el sistema asume que este último es el visible y lo
sustituye en la memoria del Z- Buffer.
Buffer Stencil.
Stencill Buffer es
una memoria intermedia que analiza y actualiza píxeles (con sus operaciones) junto
con “depth buffer” o buffer de profundidad. Añade planos de bits adicionales
para cada píxel además de los bits de color y profundidad.
Stencil buffer es
similar al buffer de profundidad en que los dos son colección de planos de bit
que no se pueden mostrar. Del mismo modo que el buffer de profundidad asocia a
cada píxel de la ventana un valor de profundidad, el stencil buffer asocia su
propio valor a cada píxel mostrado. Cuando el buffer de profundidad esta
activado los valores de profundidad son usados para aceptar o rechazar
fragmentos, del mismo modo los valores de Stencil buffer son usados para
aceptar o rechazar fragmentos.
Buffer de Acumulacion
Normalmente se usa
un buffer de acumulación para unir las 2 imágenes
Fuentes de Luz
La luz puede dejar una superficie mediante dos procesos fundamentales:
- Emisión propia
- Reflexión
Normalmente se
piensa en una fuente de luz como un objeto que emite luz solo mediante fuentes
de energía internas, sin embargo, una fuente de luz, como un foco, puede
reflejar alguna luz incidente a esta del ambiente. Este aspecto no será tomado
en cuenta en los modelos más sencillos.
Fuentes de Luz Distantes
La mayoría de los cálculos de sombreado requieren la dirección de un
punto sobre la superficie a la fuente de luz. Según se mueve a lo largo de la
superficie, se debe recomputar este vector para calcular la intensidad en cada
punto, una computación que es una parte significativa del cálculo del
sombreado. Sin embargo, si la fuente de luz está lejos de la superficie, el
vector no cambiará mucho según se mueve de un punto a otro, al igual que la luz
del sol da en todos los objetos cercanos entre si con el mismo ángulo.
Fuentes de Color
No solamente las fuentes de luz emiten diferentes cantidades de luz en
diferentes frecuencias, pero también sus propiedades direccionales varían con
la frecuencia. Por lo tanto, un modelos físicamente correcto puede ser muy
complejo. Para la mayoría de las aplicaciones, se puede modelar fuentes de luz
en base a tres componentes primarios, RGB, y puede usar cada uno de los tres
colores fuentes para obtener el componente de color correspondiente que un
observador humano vería.
Luz Ambiente
La luz ambiente ilumina por igual todas las zonas en sombra para simular
el efecto de interacción entre objetos que hace que las partes en sombra de los
objetos queden parcialmente iluminadas. En algunos cuartos, las luces se
diseñan y ubican para proveer iluminación uniforme en el cuarto. Tal
iluminación se logra mediante fuentes grandes con difusores cuyo propósito es
esparcir la luz en todas las direcciones. Se puede crear una simulación precisa
de tal iluminación, modelando todas las fuentes distribuidas, y luego
integrando la iluminación de estas fuentes en cada punto de una superficie
reflectora. Hacer tal modelo y generar la escena sería una tarea formidable
para un sistema gráfico, especialmente si se desea ejecución en tiempo real.
Spotlights (direccionales)
Los spotlights se caracterizan por un rango delgado de ángulos por
los cuales se emite luz. Se puede construir un spotlight sencillo de una fuente
de punto limitando los ángulos de donde la luz de la fuente se puede ver. Se
puede usar un cono cuyo ápice está en ps, apuntando en la dirección ls, y cuyo
ancho está determinado por el ángulo θ.
BIBLOGRAFIA
http://informatica.uv.es/iiguia/AIG/web_teoria/tema3.pdf
http://www.azrodin.com/2009/09/generacion-de-sombras-con-stencil-buffer/
http://cannes.itam.mx/Alfredo/Espaniol/Cursos/Grafica/Sombreado.pdf
http://sabia.tic.udc.es/gc/Contenidos%20adicionales/trabajos/3D/modelosIlumionacion/introduccion_intensidad_completa.html