Luces que no son extensas, como las reales, sino inextensas, puntuales. Y, por aadidura, se relacionan con los objetos como mnadas aisladas, sin tener en cuenta la interaccin entre ellos. Esto explica lo artificioso de muchas de las tcnicas que se describirn ms adelante y que buscan compensar estas limitaciones. Las insuficiencias de los mtodos de iluminacin local se han superado en parte por medio de sistemas de iluminacin global que permiten tomar en cuenta la interaccin entre objetos. Las dos tcnicas principales son el trazado de rayos (ray tracing) y la radiosidad (radiosity).
Calculos de iluminacin por vrtices
Para poder aplicar iluminacin necesitamos asociar a cada vrtice de nuestro objeto un vector normal asociado. Cuando tenemos la normal calculada tenemos que normalizarla, o sea, dividir ese vector por su propio modulo para que sea unitario, pero tambin podemos hacer que se encargue la OpengGl activando la normalizacin,
glEnable GL_NORMALIZE o desactivarla con, glDisable GL_NORMALIZE El usar GL_NORMALIZE depender de nuestra aplicacin ya que forzando a que sea OpenGl que las utilice se ralentiza ya que le estamos hacer mas clculos de los que debe. Para definir las normales en opengl utilizaremos la funcin glNormal3f(X,Y,Z) por ejemplo para definir una cara con 4 vrtices 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 definir una normal a un vrtice usamos glNormal y el vrtice/s que siguen se asocian a esta normal. La luz de tipo SMOOTH el polgono que definamos tendr un color definido par cada vrtice, asociando las normales a los vrtices OpenGL puede hacer los clculos de los colores a cada uno del vrtice y despus hace una interpolacin de colores con este tipo de luz se acerca bastante al realismo pero a un la podemos mejorar. Posterior relleno de triangulos Rellenado de los tringulos (rastering). Para ello se realizan varias fases de procesamiento por Pixel. Comprobar si cada nuevo pixel es visible o no (comprobacin de profundidad). Interpolacin lineal del color para el nuevo pixel (mtodo de Gouraud). Si existe una textura definida o transparencia, efectuar la modificacin de color correspondiente. Se trata de la ltima fase, en ocasiones la ms costosa, del proceso, por lo que es la primera que se suele integrar en el hardware grfico. En esta etapa se trata de asignar colores a los pixels correspondientes al interior de cada tringulo proyectado que cae dentro del rea de visualizacin. Los colores asignados deben calcularse por el mtodo de Gouraud, interpolando linealmente entre los colores de los tres vrtices.
Renderizado en Tiempo real La idea fundamental del procesado en tiempo real es que todos los objetos deben ser descompuestos en polgonos. Estos polgonos sern descompuestos a su vez en tringulos. Cada tringulo ser proyectado sobre la ventana bidimensional y rellenado con los colores adecuados para reflejar los efectos de la iluminacin, texturas, etc. Una vez se han generado los tringulos, en la pipeline existen dos partes claramente diferenciadas: una primera etapa operaciones realizadas sobre cada uno de los vrtices, y despus de que stos se proyecten sobre la ventana, entonces comienza una segunda fase de clculos realizados para cada pixel cubierto por los tringulos. Realistas: Iluminacin global Son sencillos y rpidos pero proporcionan imgenes muy simples, que no representan adecuadamente el modo en que la luz ilumina los objetos y los espacios. Esto no quiere decir que no sean tiles para un gran nmero de casos, y es muy importante calibrar adecuadamente que es lo que se necesita, pues puede muy bien ocurrir que un clculo local proporcione imgenes relativamente esquemticas pero ms adecuadas para la representacin de un proyecto. Los mtodos principales que existen en la actualidad pueden considerarse como desarrollos, con diferentes variantes, de los dos mtodos principales que surgieron en la dcada de los 1980, ray tracing (introducido por T.Whitted en 1980) y radiosity (hacia 1984 por varios autores). Una base torica ms firme para los algoritmos y mtodos de GI (Global Illumination), vino con la publicacin, por Kajiya, en 1986 de la rendering equation, que puede encontrarse en un manual especializado Trazado de Rayos El trazado de rayos computa la interaccin de la luz desde un punto de vista determinado y es particularmente adecuado para superficies reflectantes. Puede utilizarse como propiedad especfica de un determinado material. Radiosidad Est basado en principios generales que se pueden encontrar en un manual general sobre rendering. En el estadio 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 o, en una aproximacin ms exacta, cada parte de un objeto, segn una subdivisin cuya densidad puede precisarse en sucesivas aproximaciones. Cada una de estas partes, segn su grado de reflexividad, su orientacin y su distancia con respecto a las fuentes de luz original, se convertir, en una segunda vuelta, en un nuevo emisor de energa lumnica, una fuente de luz secundaria que iluminar a su vez a los objetos que le rodean.
Casi todos los modelos de iluminacin necesitan conocer la normal de cada superficie para calcular su color. El primero, llamado mtodo de Gouraud, efecta una interpolacin a partir de los colores calculados por los vrtices del polgono, en los que se conoce la normal. El segundo llamado mtodo de Pong, interpola la normal en el punto en estudio a partir de las normales en los vrtices, calculando a continuacin el color con la ayuda de esta normal segn el modelo de iluminacin elegido. Clculos de iluminacin por pixel
Iluminacin por fragmento (por pixel) puede ser elaborada en hardware de grficos moderno como un proceso de post-rasterizacin por medio de un programa de shader. Pixel Shader (PS) como un pequeo programa que procesa fragments (algo as como pixelscon ms datos) y que se ejecuta en la GPU. Al crear un PS, se crea una funcin de procesado de fragmentos que manipula datos de fragmentos. Frecuentemente necesitan datos del VS, llegando incluso a veces a ser conducidos por ste. Por ejemplo, para calcular una iluminacin por pixel, el PS necesita la orientacin del tringulo, la orientacin del vector de luz y en algunos casos la orientacin del vector de vista.
Alto Acabado Sombreado Constante o plano. Un clculo para todo el polgono. Obtenemos una intensidad que aplicamos a un conjunto de puntos de un objeto (p.ej. todo un tringulo). Aceleramos el proceso de sntesis. Correcto si se verifica: Fuente de luz en el infinito. Observador en el infinito. El polgono representa una superficie plana real del objeto que se modela y no es una aproximacin de un objeto curvo. Sombreado Constante o Plano
Obtenemos una intensidad que aplicamos a un conjunto de puntos de un objeto *Aceleramos el proceso de sntesis *Correcto si se verifica. * Fuente de luz en el infinito *Observador en el infinito Un clculo para todo el polgono
Obtenemos una intensidad que aplicamos a un conjunto de puntos de un objeto (p.ej. todo un tringulo) Aceleramos el proceso de sntesis Correcto si se verifica Fuente de luz en el infinito Observador en el infinito El polgono representa una superficie plana real del objeto que se modela y no es una aproximacin de un objeto curvo. Interpolacin de Intensidades (Gouraud) Se basa en la interpolacin de intensidad o color Considera que facetas planas vecinas proceden deaproximar una superficie curva (salvo que se declare una arista real entre ambas) *Elimina en gran medida las discontinuidades de iluminacin * Es sencilla, pero produce peores resultados en objetos con brillos especulares que el mtodo de Phong *Implementado en OpenGL Calcula normales al polgono
La iluminacin cte. no produce buenos resultados en superficies curvas (aprox. por facetas planas).
Evaluar la ecuacin de iluminacin en cada punto de una superficie genrica es muy costoso. Posible solucin: aproximar mediante facetas planas e interpolar dentro de cada polgono. Hay que evitar producir una apariencia faceteada (bandas de Mach; respuesta del ojo humano).
Sombreado de Phong
Se basa en la interpolacin de la direccin de la normal, calculada de la misma forma que antes. Igual que en Gouraud, se interpola a lo largo de cada lnea de barrido, entre los puntos inicial y final, interpolados a su vez de los valores de los vrtices de la arista. Captura mejor los brillos especulares en el medio de facetas planas (Gouraud los puede omitir). Produce mejores resultados, a un coste computacional mayor (hay que incrementar la direccin de la normal en tres direcciones, normalizarla y calcular la ecuacin de sombreado encada punto) Si el coeficiente de reflexin especular es pequeo, los resultados no difieren tanto (se pueden combinar objetos sombreados por ambos mtodos en una escena). Ray Tracing
En muchas formas, ray tracing es una extensin al enfoque de rendering con un modelo de iluminacin local. Est basado en la observacin previa que, de los rayos de luz saliendo de una fuente, los nicos que contribuyen a la imagen son aquellos que entran el lente de la cmara sinttica y pasan por el centro de proyeccin. Buffer de Profundidad.
El Z-Buffer se basa en que al generar la posicin de un punto en la pantalla la computadora reserve una zona de memoria especial, llamada Z-Buffer, informacin relacionada con la profundidad del punto que ocupa en la escena representada. Cuando el ordenador representa un nuevo punto consulta el Z-Buffer del pxel que corresponde en pantalla. Si el valor que ya existe en el pxel 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 pxeles (con sus operaciones) junto con depth buffer o buffer de profundidad. Aade planos de bits adicionales para cada pxel adems de los bits de color y profundidad. Stencil buffer es similar al buffer de profundidad en que los dos son coleccin de planos de bit que no se pueden mostrar. Del mismo modo que el buffer de profundidad asocia a cada pxel de la ventana un valor de profundidad, el stencil buffer asocia su propio valor a cada pxel 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. Fuentes de Luz
La luz puede dejar una superficie mediante dos procesos fundamentales: * Emisin propia * Reflexin Normalmente se piensa en una fuente de luz como un objeto que emite luz solo mediante fuentes de energa 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 ms sencillos. Fuentes de Luz Distantes
La mayora de los clculos de sombreado requieren la direccin de un punto sobre la superficie a la fuente de luz. Segn se mueve a lo largo de la superficie, se debe recomputar este vector para calcular la intensidad en cada punto, una computacin que es una parte significativa del clculo del sombreado. Sin embargo, si la fuente de luz est lejos de la superficie, el vector no cambiar mucho segn 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 tambin sus propiedades direccionales varan con la frecuencia. Por lo tanto, un modelos fsicamente correcto puede ser muy complejo. Para la mayora 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 vera.
Luz Ambiente
La luz ambiente ilumina por igual todas las zonas en sombra para simular el efecto de interaccin entre objetos que hace que las partes en sombra de los objetos queden parcialmente iluminadas. En algunos cuartos, las luces se disean y ubican para proveer iluminacin uniforme en el cuarto. Tal iluminacin se logra mediante fuentes grandes con difusores cuyo propsito es esparcir la luz en todas las direcciones. Se puede crear una simulacin precisa de tal iluminacin, modelando todas las fuentes distribuidas, y luego integrando la iluminacin de estas fuentes en cada punto de una superficie reflectora. Hacer tal modelo y generar la escena sera un tarea formidable para un sistema grfico, especialmente si se desea ejecucin en tiempo real. De manera alternativa, se puede ver el efecto deseado de las fuentes: lograr un nivel de luz uniforme en el cuarto. Esta iluminacin uniforme se llama luz ambiente. Si se sigue este segundo enfoque, se puede postular una intensidad ambiente en cada punto del ambiente. Por lo tanto, iluminacin ambiente se caracteriza por una intensidad Ia, que es idntica en cada punto de la escena. 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 direccin ls, y cuyo ancho est determinado por el ngulo .