4.1 RELLENO DE POLÍGONOS
Polígono es una figura básica dentro de las representaciones y tratamiento de imágenes bidimencionales y su utilización es muy interesante para modelar objetos del mundo real.
En un sentido amplio, se define como una región del espacio delimitada por un conjunto de lineas (aristas) y cuyo interior puede estar rellenado por un color o patrón dado.
CASOS DE RELLENO SEGÚN SU COMPLEJIDAD
El caso mas sencillo de relleno es el triangulo.
Luego sigue el relleno de polígonos convexos de N-lados.
Relleno de polígonos cóncavos.
MÉTODO DE RELLENO DE POLÍGONOS CON COLOR
- SCAN-LINE
- INUNDACIÓN
- FUERZA BRUTA
- PATRÓN
SCAN-LINE
Fila a fila van trazando lineas de color entre aristas.
- para scan-line que cruce el polígono se busca en la intersección entre las lineas de barrido y las aristas del polígono.
- Dichas intersecciones se ordenan y se rellenan a pares.
LINEA DE BARRIDO
Es valido para polígonos cóncavos como convexos. Incluso para si el objeto tiene huecos interiores.
Funcionan en el trozo de lineas horizontales, denominadas lineas de barridos, que intersectan un numero de veces, permitiendo a partir de ella identificar los puntos que se consideran interiores al polígono.
INUNDACIÓN
- Empieza en un interior y pinta hasta encontrar la frontera del objeto.
- Partimos de un punto inicial (x,y), un colo de relleno y un color de frontera.
- El algoritmo va testeando los píxeles vecinos a los ya pintados, viendo si son frontera o no.
- No solo sirven para polígonos, sino para cualquier área curva para cualquier imagen AE se usan los programas de dibujo.
FUERZA BRUTA
- Calcula una caja contenedora del objeto.
- Hace un barrido interno de la caja para comprobar c/pixel este dentro del polígono.
- Con polígonos simétricos basta con que hagamos un solo barrido en una sección y replicar los demás pixeles.
- Requiere aritmética punto-flotante, esto lo hace preciso y costoso.
RELLENO MEDIANTE UN PATRÓN
Un patrón viene definido por el área rectangular en el que cada punto tiene determinado color o novel de gris. Este patrón debe repetirse de modo periódico dentro de la región a rellenar. Para ello debemos establecer una relación entre los puntos del patrón y los pixeles de la figura. En definitiva debemos determinar la situación inicial del patrón respecto a la figura de tal forma que podamos establecer una correspondencia entre los pixeles interiores al polígono y los puntos del patrón.
ALTERNATIVAS PARA LA SITUACIÓN INICIAL DEL PATRÓN
Considerar la región a rellenar en toda la pantalla y por lo tanto el patrón se citua en el origen de esta (esquina superior izquierda).
EJEMPLO DE SCAN-LINE
- Encontrar las intersecciones de los scanlines en el polígono.
- Almacenar las intersecciones en alguna estructura de datos ET (edge table), de manera ordena ascendiente en Y y en X en buckets.
- Rellenar los spans usando la estructura.
- Usar algún criterio de paridad para saber cuando un intervalo debe ser rellenado o no.
4.2 Modelos básicos de iluminación.
Luz ambiental:
Corresponde al modelo en el cual cada objeto se presenta con una intensidad intrínseca. Se puede considerar este modelo, que no tiene una fuente de luz externa,
como la descripción de un mundo ligeramente irreal de objetos no reflejantes y autoluminosos.
como la descripción de un mundo ligeramente irreal de objetos no reflejantes y autoluminosos.
Un modelo de iluminación se puede expresar con una ecuación de iluminación
de variables asociadas con el punto en el objeto que se sombrea.
La ecuación de iluminación que expresa este sencillo modelo es:
de variables asociadas con el punto en el objeto que se sombrea.
La ecuación de iluminación que expresa este sencillo modelo es:
I = Ki
Donde I es la intensidad resultante y el coeficiente Ki es la intensidad
intrínseca del objeto.
intrínseca del objeto.
En un lugar de Autoluminosidad hay una fuente luminosa difusa no direccional, producto de reflexiones múltiples de la luz en las superficies presente en el ambiente.
Esto se conoce como luz ambiental. Si suponemos que la luz ambiental afecta de la misma forma a todas las superficies desde todas las direcciones, nuestra ecuación se convierte en:
Esto se conoce como luz ambiental. Si suponemos que la luz ambiental afecta de la misma forma a todas las superficies desde todas las direcciones, nuestra ecuación se convierte en:
I = Ia * Ka
Donde,
Ia es la intensidad de la luz ambiental (constante para todos los objetos); y,
Ka es la cantidad de luz ambiental reflejado por la superficie de un objeto,
su valor está entre 0 y 1 y se conoce como el Coeficiente de Reflexión
Ambiental. Este valor es una propiedad material no una propiedad física.
su valor está entre 0 y 1 y se conoce como el Coeficiente de Reflexión
Ambiental. Este valor es una propiedad material no una propiedad física.
Reflexión difusa:
En este caso se requiere una fuente luminosa puntual cuyos rayos emanan uniformemente en todas las direcciones a partir de un único punto. La brillantez de
un objeto varia de una parte a otra, dependiendo de la dirección y la
distancia de éste con respecto a la fuente luminosa.
un objeto varia de una parte a otra, dependiendo de la dirección y la
distancia de éste con respecto a la fuente luminosa.
Reflexión Lambertiana:
Se trata de superficies que aparecen con la misma brillantez desde todos los ángulos de observaciones, pues reflejan la luz con igual intensidad en todas las
direcciones.
direcciones.
En segundo lugar, se debe considerar la cantidad de luz que ve el observador.
Las superficies lambertianas tienen la propiedad de que la cantidad de luz que reflejan hacia el observador en un área diferencial dA es directamente proporcional al coseno del ángulo entre la dirección al observador y el vector normal N, esto es independiente del material.
Las superficies lambertianas tienen la propiedad de que la cantidad de luz que reflejan hacia el observador en un área diferencial dA es directamente proporcional al coseno del ángulo entre la dirección al observador y el vector normal N, esto es independiente del material.
I = Ip * Kd * cos φ = Ip * Kd * (N • L),
N y L son vectores normalizados, N normal a la superficie en el punto a
calcular y L apuntando a la fuente de luz.
calcular y L apuntando a la fuente de luz.
Ip es la intensidad de la fuente luminosa puntual.
Kd es el coeficiente de reflexión difusa del material, el cual es una constante
entre 0 y 1 y varía de un material a otro.
entre 0 y 1 y varía de un material a otro.
El ángulo φ debe estar entre 0º y 90º para que tenga efecto directo en el punto sombreado (superficie autocluyente).
Reflexión especular:
La reflexión especular se puede observar en cualquier superficie brillante.
En un espejo perfecto α = 0, sólo en la dirección del vector R se puede ver la reflexión de la luz (reflecto perfecto). En este caso el vector V representa la
dirección del observador.
dirección del observador.
Modelo de Phong:
Phong Bli-Tong desarrolló un modelo de iluminación para reflectores imperfectos.
El modelo supone que la máxima reflectancia especular ocurre cuando α es cero y decrece rápidamente conforme aumenta α. Esta caída rápida se aproxima por cosnα, donde n es el exponente de reflexión especular del material.
El modelo supone que la máxima reflectancia especular ocurre cuando α es cero y decrece rápidamente conforme aumenta α. Esta caída rápida se aproxima por cosnα, donde n es el exponente de reflexión especular del material.
La cantidad de luz incidente que se refleja especularmente depende del
ángulo de incidencia θ. Si W(θ) es la fracción de luz reflejada especularmente,
el Modelo de Phong queda:
ángulo de incidencia θ. Si W(θ) es la fracción de luz reflejada especularmente,
el Modelo de Phong queda:
I = Ia * Ka + fatt * Ip * [Kd * cosθ + W(θ) * cosnα]
Si se utilizan vectores normalizados (R y V), si Ks, que corresponde al coeficiente de reflexión especular del material, reemplaza a W(θ, conservando su valor, el que varía entre 0 y 1, seleccionándolo empíricamente para producir resultados atractivos y si, además, se consideran los componentes de un modelo de colores (Odλ) de la luz difusa, entonces el modelo de Phong queda:
Iλ = Iaλ * Ka * Odλ + fatt * Ipλ * [Kd * Odλ * (N•L) + Ks * (R•V)n]
donde
Odλ Componente difuso perteneciente a la longitud de onda λ.
Iaλ Componente λ de la iluminación ambiental
Ipλ Componente λ de la iluminación puntual que produce reflexión difusa y especular.
Fuentes Luminosas Múltiples:
Si se suman m fuentes luminosas, los términos de cada una de ellas deben agregarse a la fórmula, quedando esta como:
Iλ = Iaλ * Ka * Odλ + Σ i=1,n (fatti * Ipλi * [Kd * Odλ * (N•Li ) + Ks (Ri•V)n])
4.3 TECNICAS DE SOMBREADO
Clásicas: Modelo de 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.
Renderizado en Tiempo Real
La renderización es el proceso de generar una imagen desde un modelo, y se suele
aplicar 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, canal alfa, reflexión, refracción o iluminación global.
aplicar 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, canal alfa, reflexión, refracción o iluminación global.
Cuando se trabaja en un programa de diseño 3D asistido por ordenador,
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 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.
Realistas: Modelo de 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.
de un objeto se debe a las fuentes luminosas y al resto de los elementos existentes en la escena.
Trazado de rayos
Consiste en que –teniendo la posición y atributos físicos de cada uno de los objetos a
iluminar, así como la situación, intensidad y tipo de fuentes de luz que iluminan los
objetos, junto con la posición del observador y la del plano de proyección de la imagen
(la pantalla), y el modo de iluminación o cálculo del color en un punto de la superficie
de un objeto- 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.
Si el rayo se encontrara con un objeto, se analizan los atributos físicos que
tiene asignado el objeto y se resuelve según la modelización de la iluminación,
calculando su color en el punto del objeto donde interseca el rayo.
iluminar, así como la situación, intensidad y tipo de fuentes de luz que iluminan los
objetos, junto con la posición del observador y la del plano de proyección de la imagen
(la pantalla), y el modo de iluminación o cálculo del color en un punto de la superficie
de un objeto- 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.
Si el rayo se encontrara con un objeto, se analizan los atributos físicos que
tiene asignado el objeto y se resuelve según la modelización de la iluminación,
calculando su color en el punto del objeto donde interseca el rayo.
Radiosidad
El método de radiosidad, consiste en que las reflexiones de la luz sobre los objetos se tratan como reflexiones difusas ideales de tal manera que la modelización de los efectos ópticos, como la de los espejos, por ejemplo, no se realiza. Este método hace aquello que no realiza el trazado de rayos. Para este método, los materiales de los objetos tienen superficies mate que no producen reflexiones espectaculares, por lo que la parte de energía que les llega, y que no haya sido absorbida por la superficie, se refleja por igual a lo largo de toda esta superficie del objeto.
Cálculos de iluminación por pixel
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.
Sombreado Plano o Constante
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.
Sombreado Gouraud
En el sombreado Gouraud, se define la normal en un vértice como el promedio normalizado de las normales de los polígonos que comparten el vértice.
Desde la perspectiva de OpenGL, el sombreado Gouraud es sencillo. Se necesita solamente asignar correctamente las normales de vértices. Sin embargo, existe un problema, encontrar las normales para promediar. Si el programa es lineal, especificar una lista de vértices (y otras propiedades), no se tiene la información necesaria de cuales polígonos comparten un vértice. Lo que se requiere es una estructura de datos para representar un "mesh". Atravesar esta estructura de datos puede generar los vértices con las normales promediadas. Tal estructura de datos debe contener, de manera mínima, polígonos, vértices, normales, y propiedades de los materiales.
Sombreado Phong
Phong propuso que, en lugar de interpolar intensidades de los vértices, se interpole normales a lo largo del polígono. Para un polígono que comparte lados y vértices con otros polígonos.
Se puede computar normales en los vértices interpolando sobre las normales de los polígonos que comparten el vértice. Luego, se puede usar interpolación bilineal, para interpolar las normales sobre el polígono.
Una vez obtenidas las normales en cada punto, se puede hacer cálculos de sombreado independientes. Normalmente, este proceso se combinará con la rasterización del polígono.
Sombreado Phong producirá imágenes mas suaves que con el sombreado Gouraud, pero a un costo computacional mayor.
En una escena, los objetos se tapan a sí mismos y entre sí, quedando siempre partes ocultas al observador.
Las partes ocultas deben ser eliminadas de posteriores operaciones: proceso de visibilidad.
El proceso de visibilidad es complejo, por lo que existen numerosas soluciones.
Técnicas implicadas:
- Cálculo de normales
- Ordenación
- Algoritmos de visibilidad
- Aceleración por coherencia
Técnicas de aceleración
o Eliminación de caras traseras
o Coherencia
o Contenedores
Algoritmo fundamental en el espacio de la imagen: trazado de visuales (ray casting)
Algoritmos más conocidos:
Z- Buffer
Prioridad en lista
Scan- Line
El z-buffering, o el buffer de profundidad es la parte de la memoria de nuestra tarjeta gráfica encargada de la visibilidad de nuestros gráficos 3D según las coordenadas de sus pixeles, con lo que se puede gestionar qué elementos de una escena renderizada son visibles y cuales permanecerán ocultos según sus posiciones en el eje Z (distancia a cámara).
En definitiva lo que se hace es comparar las profundidades de ambos gráficos para representar el objeto más cercano al observador. La profundidad elegida se guardará en el z-buffering reemplazando a la anterior.
Transparencias
La implementación de la transparencia en un programa OpenGL no suele ser sencilla. Podemos combinar los colores de los objetos para una escena simple que contenga unas pocas superficies opacas y transparentes utilizando el valor de mezcla alpha para especificar el grado de transparencia y procesando las superficies según su orden de profundidad. Pero las operaciones de mezcla de color OpenGL ignoran los efectos de refracción, y el manejo de superficies transparentes en escenas complejas con una diversidad de condiciones de iluminación o con animaciones puede resultar muy complicado.
Stencill Buffer es una memoria intermedia que analiza y actualiza píxeles (con sus operaciones) junto con buffer de profundidad. Añade planos de bits adicionales para cada píxel además de los bits de color y profundidad.
Stencil Buffer se puede pensar que simplemente etiqueta los píxeles en la interpretación o renderización de la escena en la pantalla para controlar las siguientes interpretaciones. Los pasos son siguientes:
1. Dada una escena con una sombra fija. Los píxeles de la escena se podrían considerar con “dentro” de la sombra o “fuera”. Asumimos que podemos etiquetar cada píxel apropiadamente.
2. Cuando los píxeles ya son etiquetados, actualizamos los píxeles etiquetados como “dentro” de la sombra. Y renderizamos la escena con la fuente de luz desactivada.
3. Después actualizamos los píxeles etiquetados como “fuera” de la sombra.Activamos la luz y renderizamos otra vez.
Buffer de acumulación
El buffer de acumulación sirve para capturar el buffer de color en un fotograma y aplicarle acumulaciones del color de otro fotograma/s. Esto básicamente sirve para simular el efecto de estela que deja un objeto cuando se mueve muy rápidamente en el encuadre de la cámara.
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.
Se considerarán cuatro tipos básicos de fuentes, que serán suficientes para generar las escenas más sencillas:
1. Luz ambiente
2. Fuentes de punto
3. Spotlights (Luces direccionales)
4. Luces distantes
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.
Se describe una fuente mediante 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 el modelo de iluminación es local, las partes que no están iluminadas por una fuente de luz se verían totalmente negras. Para evitar esto, se supone que hay una iluminación uniforme que es el promedio de la luz reflejada por los objetos, a la que llamamos ambiental.
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. De manera alternativa, se puede ver el efecto deseado de las fuentes: lograr un nivel de luz uniforme en el cuarto. Esta iluminación uniforme se llama luz ambiente.
CONCLUSIÓN:
Estas técnicas son muy importantes en la realidad virtual, y simulación ya
que ese tipo de escenarios lo que queremos visualizar es que nuestro escenario se vea lo
mas real y parecido a la realidad posible.
para llevar a cabo que un objeto tenga algo de realismo necesitamos aparte de la iluminación un tipo de sombreado para que nuestro objeto tenga mas vida y sea lo mas acercado a la realidad
BIBLIOGRAFÍA:
http://www.acta.es/medios/articulos/informatica_y_computacion/055061.pdf
https://sites.google.com/site/tgcutn/Clases/unidad-4---texturas-e-iluminacion
http://graficacionporcomputadora.blogspot.mx/2013/05/41-relleno-de-poligonos.html
http://books.google.com.mx/books?id=ObHAZY484-EC&pg=PA88&dq=iluminacion+y+sombreado+graficacion+relleno+de+poligonos&hl=es-419&sa=X&ei=ol6FUd6ANImg9QTl5IDoBA&ved=0CDQQ6AEwAA#v=onepage&q=iluminacion%20y%20sombreado%20graficacion%20relleno%20de%20poligonos&f=false
No hay comentarios:
Publicar un comentario