ILUMINACIÓN LOCAL
· Cálculos de iluminación por vértices
OpenGL calcula la iluminación en cada vértice, y obtiene una terna rgb que se usará para dar color a los polígonos (si se visualiza como sólido) o aristas (si se visualiza como alambre). El valor obtenido en cada vértice es la suma de cinco componentes:
- Emisión (E)
- Luz ambiental global (A1)
- Luz ambiental específica del polígono (A2)
- Reflexión difusa (D)
- Reflexión especular (S)
La formula final es la suma de todos los términos anteriores:
I = E + A1 + A2 + D + S
OpenGL calcula el valor de I para cada vértice del modelo, y usa esos colores para asignar un color a todos los pixels en los que se proyecta cada triángulo (se detalla como en la sección de sombreado).
En general, I depende de las características de las fuentes de luz definidas y las características del material asignado a los polígonos que se dibujen. OpenGL admite varias fuentes de luz, pudiéndose variar las características de cada una de ellas independientemente. La función glEnablepermite activar o desactivar la iluminación, así como activar o desactivar cada fuente de luz individualmente.
En adelante, una terna RGB o color es un conjunto de tres valores reales entre cero y uno, ambos incluidos. OpenGl permite especificar color con cuatro componentes, siendo la cuarta (llamada alpha) usada para manejar transparencias. En esta práctica, la componente alpha será siempre 1.
· Renderizado en tiempo real
Renderizado (
render en inglés) es un término usado en
jerga informática para referirse al proceso de generar una imagen desde un modelo. Este término técnico es utilizado por los animadores o productores audiovisuales y en programas de
diseño en 3D.
En términos de visualizaciones en una
computadora, más específicamente en
3D, la renderización es un proceso de
cálculo complejo desarrollado por un ordenador destinado a generar una imagen
2D a partir de una escena
3D. La traducción más fidedigna es
interpretación, aunque se suele usar el término inglés. Así podría decirse que en el proceso de renderización la
computadora interpreta la escena en tres dimensiones y la plasma en una imagen
bidimensional.
La renderización se aplica en la
computación gráfica, más comúnmente a la
infografía. En infografía este proceso se desarrolla con el fin de imitar un
espacio 3D formado por
estructuras poligonales, comportamiento de luces, texturas, materiales (
agua,
madera,
metal,
plástico,
tela, etcétera) y
animación, simulando ambientes y estructuras físicas verosímiles. Una de las partes más importantes de los programas dedicados a la infografía son los
motores de renderizado, los cuales son capaces de realizar técnicas complejas como
radiosidad,
raytrace (trazador de rayos), canal alfa, reflexión, refracción o iluminación global.
Cuando se trabaja en un
programa de diseño
3D por
computadora, normalmente no es posible visualizar en tiempo real el acabado final deseado de una escena 3D compleja ya que esto requiere una potencia de cálculo demasiado elevada, por lo que se opta por crear el entorno 3D con una forma de visualización más simple y técnica y luego generar el lento proceso de renderización para conseguir los resultados finales deseados. El tiempo de
render depende en gran medida de los parámetros establecidos en los materiales y luces, así como de la configuración del programa de renderizado.
Normalmente cada aplicación de 3D cuenta con su propio motor de renderizado, pero cabe aclarar que existen
plugins que se dedican a hacer el cálculo dentro del programa utilizando fórmulas especiales. En el caso de los
videojuegos, normalmente se utilizan imágenes prerendereadas para generar las texturas y así ayudar al
procesador de la consola a trabajar en el entorno virtual con mucha más fluidez.
ILUMINACIÓN GLOBAL
· Trazado de rayos
El método de trazado de rayos (propuesto por Whitted como mejora del método de Ray Casting es una alternativa elegante y sencilla que permite calcular de una forma unificada la reflexión y la refracción de la luz, sombras, eliminación de superficies ocultas y otros efectos necesarios para conseguir escenas fotorrealistas. De este método surgieron aproximaciones más completas que resolvían de forma más exacta la ecuación de render, basándose en los mismos principios de trazado de los caminos que sigue la luz. Por esta razón, prestaremos especial atención a la descripción de este método.
La idea básica del trazado de rayos es seguir el camino de la luz desde las fuentes emisoras de fotones hasta que llegan a la posición del observador. La simulación del camino natural de la luz presenta el principal inconveniente de que la mayoría de los rayos nunca llegan al observador (o plano de imagen), lo que resulta computacionalmente prohibitivo. Este es el esquema de trazado de rayos hacia delante (forward RayTracing).
Para evitar trazar un número alto de rayos que no llegarán al plano imagen, y como solución sencilla a la discretización del espacio continuo en píxeles, se emplea el trazado de rayos hacia atrás (backward RayTracing), donde los rayos parten del plano imagen hasta alcanzar los objetos de la escena. La Figura 1 muestra un esquema general de los componentes básicos que forman un trazador de rayos hacia atrás.
Figura 01. Esquema de funcionamiento del RayTracing.
Una de las principales características del método de RayTracing es el cálculo recursivo de la contribución de la luz debido a la reflexión y refracción que se produce en ciertas superficies. Así, definimos cuatro tipos de rayos:
- Rayos Primarios o Visuales (V): Son los rayos que parten de la cámara virtual, pasando por cada uno de los píxeles en el plano de imagen. Para cada elemento de la escena se comprueba si el rayo visual intersecta con alguno de ellos, quedándonos con el punto de intersección más cercano de toda la lista de objetos.
- Rayos de Sombra (S): Parten del punto de intersección con el objeto y tienen dirección hacia las fuentes de luz. De nuevo se realiza una prueba de intersección del rayo con todos los objetos de la escena para ver si hay algún objeto que corte su trayectoria, en cuyo caso el punto de origen del rayo estaría en sombra.
- Rayos Reflejados (R): Si el objeto donde intersectó el rayo tiene propiedades de reflexión de tipo espejo, se generará un nuevo rayo reflejado en ese punto. Este rayo se construirá típicamente en un procedimiento recursivo, pasando a comportarse como un rayo primario en la siguiente iteración del algoritmo.
- Rayo Transmitidos (T): En el caso de objetos en mayor o menor grado transparentes, y de forma análoga al tratamiento para los rayos reflejados, se generará un rayo transmitido. De igual forma, este nuevo rayo se comportará como un rayo primario en la siguiente iteración del algoritmo.
· Radiosidad
El transporte de la
luz sólo se puede modelar de forma óptima considerando que cada fuente luminosa emite un número enorme de
fotones, que rebotan al chocar contra una superficie describiendo una cantidad de trayectorias imposibles de simular en un computador.
Una de las técnicas empleadas en el cálculo de la radiosidad es el
método de Montecarlo para resolver este problema mediante números aleatorios y de forma estadística.
El auge de la radiosidad y otros métodos eficientes de renderización han posibilitado un auge en la
infografía, siendo muy habitual encontrar por ejemplo películas que aprovechan estas técnicas para realizar
efectos especiales.
· Cálculos de iluminación por pixel
· Alto acabado
SOMBREADO CONSTANTE O PLANO
· Un cálculo para todo el polígono
INTERPOLACIÓN DE INTENSIDADES (GOURAUD).
· Calcula normales al polígono
· Calcula normales a vértices
· Calcula intensidad para el vértice
· Interpola intensidades
INTERPOLACIÓN DE NORMALES (PHONG).
· Calcula normales al polígono
· Calcula normales a vértices
· Interpola Normal para el pixel
· Calcula intensidad para el
En el algoritmo Ray Casting se determinan las superficies visibles en la
escena que se quiere sintetizar trazando rayos desde el observador (
cámara) hasta la escena a través del
plano de la imagen. Se calculan las intersecciones del rayo con los diferentes objetos de la escena y aquella intersección que esté más cerca del observador determina cuál es el objeto visible.
Recortado de caras traseras esto se utiliza para poder determinar con exactitud de la visibilidad del objeto.
Buffer de Profundidad esta aplicación es para que la imagen se vea de una forma profunda a través de sus líneas.
Buffer de Transparencia se utiliza cuando se colocan imágenes y en su interior hay otra y tiene que haber una trasparencia para que se pueda ver a través de él.
Buffer de Stenci se suele utilizar en dos etapas: uno se escribe en él, procesando los vértices de algún objeto o varios y dos se procesan los vértices de otros objetos utilizando el stencil como filtro de pixeles.
Buffer de acumulación es muy útil para el visualizado, consiste en promedia sobre el buffer de acumulación varias imágenes.
FUENTES DE LUZ
Fuentes de Color no solamente las fuentes de luz emiten cantidad de luz en diferentes frecuencias, pero también sus propiedades direccionales varían con la frecuencia. Por lo tanto, un modelo 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 componentes de color correspondiente que un observador humano vería.
Se describe una fuente una función de intensidad o luminancia de tres componentes:
Cada uno de los componentes es la intensidad de los componentes rojo, verde y azul independientes. Como las computadoras involucran tres cálculos similares pero independientes, se presentan ecuaciones escalares sencillas, con el mantenimiento de que pueden representar cualquiera de los tres colores.
Luz Ambiente
En algunos cuartos, as luces se diseña 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 de 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 una de la superficie reflectora. Hacer tal modelo y generar la escena sería una tarea formidable para un sistema gráfico, especialmente si se desea la ejecución en tiempo real.
Spotlights (direccionales) se caracterizan por un rango delgado por los cuales se emiten luz. Se puede construir un spothight 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 esta en ps, apuntando en la dirección Is, y cuyo ancho está determinado por un ángulo ɵ, como se muestra en la siguiente imagen
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 lun. Según se mueve a los largo de la superficie, se debe re computar 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 la luz está lejos de la superficie, el vector no cambiara mucho según se mueve de un punto a otro, al igual que la luz del sol da en todos los objetos cercanos a este si con el mismo ángulo.
Intensidad Completa la intensidad completa exclusivamente por efectos de iluminación es la siguiente: