‐ i ‐
Resumen GC: Temas 6 y 7 Indice de Contenidos
Capítulo 1: Representación de Objetos Tridimensionales....................................................................................... 3
1.1. Superficies Poligonales ............................................................................................................................... 4 Codificación Poligonal .................................................................................................................................. 5 Ecuación del plano......................................................................................................................................... 6
Capítulo 2: Métodos de Detección de Superficies Visibles................................................................................... 11
Clasificación de los Algoritmos de detección de Superficies Visibles ........................................................ 11
2.1. Detección de Caras Posteriores (Back-Face). .......................................................................................... 12
2.2. Método del Buffer de Profundidad (Z-Buffer) ........................................................................................... 14
Capítulo 3: Modelos de Iluminación ..................................................................................................................... 19
Fuentes de luz .............................................................................................................................................. 19
3.1. Modelos Básicos de Iluminación............................................................................................................... 22 Luz Ambiente .............................................................................................................................................. 23 Reflexión Difusa .......................................................................................................................................... 23 Reflexión Especular ..................................................................................................................................... 24
3.2. Sombreado de Polígonos ........................................................................................................................... 27 Sombreado de Intensidad Constante (Flat). ................................................................................................. 28 Sombreado por Interpolación Gouraud........................................................................................................ 29 Sombreado por interpolación. Phong........................................................................................................... 30
‐ ii ‐
Indice de Tablas Figura 1: Modelo tridimensional de un cubo.......................................................................................................4 Figura 2: Tablas de información asociadas a la figura 1 .....................................................................................5 Figura 3: Diversas interpretaciones de un cubo ..................................................................................................6 Figura 4: Sistemas Dextrógiro y Levógiro ..........................................................................................................7 Figura 5: Sentido de las normales para el cubo de la figura 1.............................................................................7 Figura 6: Cálculo vectorial de la Normal ..........................................................................................................10 Figura 7: Ejemplo de caras visibles e invisibles................................................................................................13 Figura 8: Cara no visible desde el observador...................................................................................................13 Figura 9: La superficie S1 tiene la mayor profundidad (z), siendo visible su píxel (x,y) ..................................14 Figura 10: Coordenadas de pixeles adyacentes ...................................................................................................16 Figura 11: Posiciones de intersección sobre sucesivas scanlines en la arista izquierda ......................................17 Figura 12: Rayos divergentes de una fuente de luz puntual ...............................................................................20 Figura 13: Fuente de luz distribuida....................................................................................................................20 Figura 14: Reflexión Difusa (Ley de Lambert) ...................................................................................................24 Figura 15: Reflexión Especular (Modelo de Phong) ...........................................................................................24 Figura 16: Esferas sombreadas según el modelo de Phong.................................................................................27 Figura 17: Sombreado constante .........................................................................................................................28 Figura 18: Suavizado de Gouraud. Interpolación de Intensidades ......................................................................29 Figura 19: Cálculo del vector normal en un vértice ............................................................................................30 Figura 20: Suavizado de Phong. Interpolación de Normales ..............................................................................31 Figura 21: Diversos sombreados de polígonos....................................................................................................32
Capítulo 1 Representación de Objetos 3D
‐ 3 ‐
Capítulo 1 Representación de Objetos Tridimensionales
as escenas gráficas pueden contener multitud de objetos de distinto tipo: árboles, flores, nubes, rocas, agua, paneles de madera, papel, mármol, cristal, plástico, por sólo mencionar algunos de ellos. Por lo
tanto no nos debe sorprender que no sea únicamente un método el que se emplee para describirlos, sino que debamos acudir a varios para describir las distintas características de cada uno de los objetos que compondrán parte de nuestra escena. Y para la producción de escenas realistas necesitamos emplear las representaciones que mejor se ajusten al objeto y así obtener mayor precisión en su descripción. Las superficies por polígonos y cuádricas proporcionan una descripción precisa para objetos euclídeos, tales como poliedros y elipsoides; las superficies splines y las técnicas de construcción son adecuadas para el diseño de alas de avión, ruedas, y otras estructuras formadas por superficies curvas; los métodos procedurales, tales como los fractales y los sistemas de partículas, nos permiten representar con precisión nubes, hierba y otros objetos naturales; los métodos de modelado basados en física usan sistemas de fuerzas que interactúan que pueden ser empleados para describir el manejo de objetos no rígidos; las codificaciones con árboles octrees se utilizan para codificar el interior de los objetos, tales
L
Resumen Representación de Objetos 3D
‐ 4 ‐
como aquellos obtenidos con imágenes médicas; y otras técnicas de visualización aplicadas a conjuntos discretos de datos para crear una representación visual de la información. Los esquemas de representación de objetos sólidos se dividen a menudo en dos categorías, aunque no todas las representaciones caen estrictamente en una de estas dos categorías. Las representaciones por frontera describen los objetos como un conjunto de superficies que separan el objeto del entorno. Y las representaciones por enumeración espacial (por división del espacio) que se emplean para describir las propiedades del interior de los objetos. Con este método se parte la región espacial que contiene al objeto en un conjunto de pequeños sólidos contiguos, que no se solapan, usualmente cubos.
1.1. Superficies Poligonales El método más común para representar las fronteras de un objeto gráfico tridimensional es un conjunto de superficies poligonales que encierran el interior del objeto. Muchos sistemas gráficos almacenan la descripción de todos los objetos como superficies poligonales. De esta manera se puede simplificar y acelerar el proceso de Rendering ya que todas las superficies son descritas con ecuaciones lineales. Por este motivo, esta representación es conocida a menudo como “objetos gráficos estándar”.
Figura 1: Modelo tridimensional de un cubo
z
y
x
1.01.0
0.50.5 A
B
D
CH
F
E
G
a4 a0
a11
a10
a3a7 a2
a9
a8 a5
a1
a6
Capítulo 1 Representación de Objetos 3D
‐ 5 ‐
Codificación Poligonal La representación del objeto va a estar formada por tres listas diferentes de datos: una lista de vértices, donde cada uno de ellos almacenará las coordenadas (x, y, z) de un punto del espacio tridimensional; una lista de aristas, formada por los segmentos de línea o aristas que van a formar los lados del objetos, la información que contendrán será los vértices origen y destino de las arista; y por último, una lista de polígonos, donde se recogen las aristas que forman dicho polígono, o en su defecto los vértices que lo forman. Veamos la información que contendrían dichas listas si quisiéramos representar el cubo de la figura 1: Tabla de Vértices Tabla de Aristas Tabla de Polígonos A (0.0, 0.0, 0.0) a0 A, B P0 a0, a3, a2, a1 B (1.0, 0.0, 0.0) a1 B, C P1 a1, a6, a9, a5 C (1.0, 1.0, 0.0) a2 C, D P2 a2, a7, a10, a6 D (0.0, 1.0, 0.0) a3 D, A P3 a3, a4, a11, a7 E (0.0, 0.0, 1.0) a4 A, E P4 a0, a5, a8, a4 F (1.0, 0.0, 1.0) a5 B, F P5 a9, a10, a11, a8 G (1.0, 1.0, 1.0) a6 C, G H (0.0, 1.0, 1.0) a7 D, H a8 E, F a9 F, G a10 G, H a11 H, E
Figura 2: Tablas de información asociadas a la figura 1
En principio se podría pensar que la información de los polígonos no es necesaria, pero nos daría objetos sujetos a múltiples interpretaciones, como se muestra a partir del cubo anterior:
Resumen Representación de Objetos 3D
‐ 6 ‐
Figura 3: Diversas interpretaciones de un cubo
Requicha [REQU,80] proporcionó una lista de propiedades deseables que un esquema de representación de sólidos debía cumplir. Se ha de buscar por tanto un modelo de representación que no sea ambiguo, cuando un modelo no es ambiguo se dice también que es completo. Una representación es única si el objeto sólido a representar admite sólo una codificación posible, el modelo de fronteras del ejemplo anterior no es único, puesto que la elección de las aristas a la hora de codificar los polígonos podría haber sido otra distinta y sin embargo representamos el mismo cubo. Una representación es precisa si permite que un objeto sea representado sin emplear una aproximación. Idealmente un modelo de representación no debería permitir la representación de objetos imposibles. También es deseable que la representación sea compacta para ahorrar espacio en su codificación. Por último una representación debe permitir que se puedan emplear algoritmos eficientes para calcular las propiedades físicas deseadas, y lo más importante para nosotros, para crear imágenes.
Ecuación del plano Otro detalle que hay que tener en cuenta, que es muy importante, es el orden en el que damos el conjunto de aristas o vértices a la hora de codificar un polígono, tenemos dos sentidos posibles a elegir, el sentido positivo o dextrógiro o el sentido negativo o levógiro, por notación
Capítulo 1 Representación de Objetos 3D
‐ 7 ‐
matemática empleada en las transformaciones que se vieron en el tema 2, donde se elegía el sentido positivo, se empleará el sistema dextrógiro:
Figura 4: Sistemas Dextrógiro y Levógiro
El orden que elijamos a la hora de dar los vértices de los polígonos va influir en el sentido que tomará su normal (la dirección será la misma). O lo que es lo mismo indicará desde qué lado es visible el polígono. Lo cual indica que si un polígono se desea ver por ambos lados deberemos, bien codificarlo como dos polígonos distintos con los mismos vértices pero en sentido inverso uno del otro, bien introduciendo información en la codificación que señale que el polígono es visible desde sus dos lados.
Figura 5: Sentido de las normales para el cubo de la figura 1
A
B
C
D
r N
P=(A, D, C, B) Sistema Positivo
o Dextrógiro
C
A
B
Dr N
P=(A, B, C, D) Sistema Negativo
o Levógiro
P4
P2
P5
P3 P1
P0
Resumen Representación de Objetos 3D
‐ 8 ‐
En vistas a aplicar procedimientos de rendering con ocultación de líneas, identificación de superficies visibles, etc., necesitamos calcular las ecuaciones del plano a partir de las tablas con las que codificamos el modelo tridimensional de un objeto.
La ecuación del plano se expresa de la siguiente forma:
Ax + By +Cz + D = 0 ec. 1
Donde las coordenadas (x, y, z) son cualquier punto del plano, y los coeficientes A, B, C y D son constantes que describen las propiedades espaciales del plano. Podemos obtener los coeficientes A, B, C y D resolviendo un conjunto de tres ecuaciones del plano empleando los valores de tres puntos no colineales (es decir, que no están en la misma recta). Para ello seleccionamos tres puntos consecutivos del polígono (x1, y1, z1), (x2, y2, z2) y (x3, y3, z3) y resolvemos el siguiente conjunto simultáneo de ecuaciones de plano lineales para los ratios A/D, B/D y C/D.
AD
xk +BD
yk +CD
zk = −1, k = 1,2,3 ec. 2
La solución de este conjunto de ecuaciones se puede obtener en forma de determinantes, usando la regla de Cramer, como:
A =1 y1 z1
1 y2 z2
1 y3 z3
B =x1 1 z1
x2 1 z2
x3 1 z3
c. 3
C =x1 y1 1x2 y2 1x3 y3 1
D = −x1 y1 z1
x2 y2 z2
x3 y3 z3
Capítulo 1 Representación de Objetos 3D
‐ 9 ‐
Expandiendo los determinantes, podemos escribir los coeficientes de la siguiente forma:
A = y1(z2 − z3 ) + y2 (z3 − z1 ) + y3(z1 − z2 )
B = z1(x2 − x3 ) + z2 (x3 − x1 ) + z3(x1 − x2 )
C = x1 (y2 − y3 ) + x2 (y3 − y1 ) + x3 (y1 − y2 ) ec. 4
D = −x1(y2 z3 − y3 z2 ) − x2 (y3 z1 − y1z3 ) − x1 (y1 z2 − y2 z1)
Una alternativa al cálculo de D es emplear uno de los vértices del polígono, por ejemplo, el primero (x1, y1, z1), y como ya conocemos A,B y C de la ecuación 4, despejar D de la siguiente forma:
D = −Ax1 − By1 −Cz1 ec. 5
Una vez calculada la ecuación del plano sabemos que la normal a dicho plano tiene como coordenadas cartesianas las componentes (A, B, C), y debido a que el objeto 3D lo representamos encerrando su interior mediante polígonos, emplearemos la normal del polígono para determinar que puntos están dentro y cuáles fuera, al mismo tiempo que sabemos cual es la cara exterior (la visible por el observador) y la interior (o no visible), como anticipábamos en los sistemas levógiro y dextrógiro. La normal al plano corresponde al producto vectorial definido por dos vectores formados por tres puntos no coliniales:
Resumen Representación de Objetos 3D
‐ 10 ‐
Figura 6: Cálculo vectorial de la Normal
Así tenemos que:
si Ax + By + Cz + D < 0 , el punto (x, y, z) está dentro de la superficie, y
si Ax + By + Cz + D > 0 , el punto (x, y, z) está fuera de la superficie.
(V2 − V1)
(V2 − V1)
V1
V2
V3
r N = (V2 − V1) × (V3 − V1)
Capítulo 2 Métodos de Detección de
Superficies Visibles
‐ 11 ‐
Capítulo 2 Métodos de Detección de Superficies Visibles
no de los mayores problemas en la generación y visualización de gráficos realistas es identificar aquellas partes de la escena que son visibles desde la posición de observación elegida. Hay varias
aproximaciones que podemos emplear para solucionar este problema, y numerosos algoritmos que han sido diseñados para la identificación de objetos visibles para diferentes tipos de aplicaciones. Algunos métodos requieren más memoria, otros más tiempo de procesamiento, y algunos se aplican sólo a tipos especiales de objetos. La decisión a la hora de elegir uno depende de la complejidad de la escena, el tipo de objetos a visualizar, y el equipo disponible y si vamos a generar escenas estáticas o animadas.
Clasificación de los Algoritmos de detección de Superficies Visibles
Hay métodos que operan en espacio objeto, y métodos que operan en espacio imagen. En los primeros se trabaja con el modelo de representación de los objetos 3D, es decir manipulamos los objetos en sí, mientras que en los segundos, operamos sobre la imagen que vamos a generar, por ejemplo, los píxeles del raster que forman la pantalla.
U
Resumen de Lección Métodos de Detección de Superficies Visibles
‐ 12 ‐
2.1. Detección de Caras Posteriores (Back-Face).
Uno de las primeras consideraciones que podemos hacer, que se puede aplicar con independencia del algoritmo de ocultación de superficies elegido, es eliminar aquellas caras que están de espaldas al observador, en el ejemplo que se ve en la figura 5, el polígono P0 no sería visible desde la posición del observación elegida. Para saber qué caras son visibles empleamos sustituimos el punto en la ecuación del plano y examinamos su signo, si es negativo está dentro:
Ax + By + Cz + D < 0 ec. 6
Cuando un punto interior está a largo de una línea visual a la superficie. El polígono debe ser una cara posterior (nos encontramos dentro de dicha cara y no podemos verla desde nuestra posición de observación).
Podemos simplificar este test si consideramos el vector normal r N de la
superficie poligonal, que tiene coordenadas cartesianas (A, B, C). En general si
r V es un vector en la dirección de observación desde la posición
del ojo (o cámara), no es visible desde el observador si:
r N ⋅
r V > 0 ec. 7
Más aún, si la descripción del objeto se ha proyectado y la dirección de observación es paralela al eje z (que es lo más usual y se ajusta al modelo de cámara que proponemos), entonces
r V =(0,0,Vz) y por tanto:
r N ⋅
r V = Vz C ec. 8
de esta forma sólo necesitamos considerar el signo de C, la componente z del vector normal
r N .
Capítulo 2 Métodos de Detección de
Superficies Visibles
‐ 13 ‐
En un sistema positivo o dextrógiro un polígono es invisible desde el observador si C es menor que cero. Así en general podemos etiquetar los polígonos como posteriores cuando se cumpla:
C ≤ 0 ec. 9
Figura 7: Ejemplo de caras visibles e invisibles
La siguiente figura muestra un ejemplo de una cara posterior:
Figura 8: Cara no visible desde el observador
r N = (A, B,C)
r V
Posición del Observador
-x x
z
-z
C>0, cara visible
C<0, cara invisible
Resumen de Lección Métodos de Detección de Superficies Visibles
‐ 14 ‐
2.2. Método del Buffer de Profundidad (Z-Buffer) Una aproximación muy común dentro de los métodos que operan en el espacio imagen es la del método del buffer de profundidad, en el cual se comparan las profundidades en la posición de cada píxel sobre el plano de proyecciones. Este procedimiento se llama también método Z‐Buffer, debido a que se almacena la profundidad de cada píxel en una matriz que contiene su z. En la siguiente figura se ilustra su funcionamiento:
Figura 9: La superficie S1 tiene la mayor profundidad (z), siendo visible su píxel (x,y)
Cada superficie de la escena se procesa por separado, y cada punto una vez a través de dicha superficie. Este método se aplica usualmente a escenas que contienen únicamente superficies poligonales, debido a que las profundidades se pueden calcular muy rápidamente y es un método fácil de implementar. Aunque también se puede aplicar a superficies no planares. Podemos implementar el algoritmo de profundidad (Z‐Buffer) en coordenadas normalizadas, por lo que los valores de z varían en el rango entre 0 en el plano de recortado posterior y zmax en el plano de recortado
z
x
y
(x,y)S3
S2
S1
Capítulo 2 Métodos de Detección de
Superficies Visibles
‐ 15 ‐
frontal. El valor de zmax podrá ser 1 (para el caso del cubo unitario) o el valor más grande que pueda almacenar el sistema. Como indica el nombre del método, se requieren varios buffer, en concreto dos, uno que almacene las profundidades (o z) de los pixeles, llamado z‐buffer, y otro que almacene los valores de intensidad de cada píxel en pantalla, llamado frame‐buffer. Inicialmente el valor del z‐buffer se establece a 0 y el del frame‐buffer a intensidad de fondo. Cada superficie que aparece en la tabla de polígonos es procesada, un scanline cada vez, calculando la z en cada píxel de posición (x, y). La profundidad calculada es comparada con el valor previamente almacenado en el z‐buffer en dicha posición. Si la profundidad es mayor que el valor almacenado en el z‐buffer, el valor de la nueva profundidad es almacenado y la intensidad de la superficie en esa posición se calcula (con los métodos de iluminación que se explican en el capítulo 4) y coloca en la posición (x, y) del frame‐buffer. Podemos resumir el algoritmo de la siguiente manera:
1. Inicializar el z‐buffer y el frame buffer para todas la posiciones (x, y):
z‐buffer(x, y) = 0, frame‐buffer(x, y) = intensidadfondo
2. Para cada posición en cada superficie poligonal, comparar los valores de profundidad con los previamente almacenados para determinar la visibilidad.
• Calcular la profundidad z para cada (x, y) del polígono. • Si z>z‐buffer(x, y) entonces
z‐buffer(x, y) = z, frame‐buffer(x, y) = intensidadsuperf (x, y)
donde intensidadfondo es la intensidad del fondo de la escena y donde intensidadsuperf (x, y) es la intensidad de la superficie en la posición (x, y).
Resumen de Lección Métodos de Detección de Superficies Visibles
‐ 16 ‐
Los valores de profundidad para una superficie en la posición (x, y) son calculados con la ecuación del plano para cada superficie:
z =−Ax − By − D
C ec. 10
Recordemos que como sólo consideramos aquellos polígonos que tengan una C superior a 0, no se producirá una división por 0. Para cualquier scanline (figura 10) las posiciones horizontales adyacentes a lo largo de la línea difieren en 1, y en un valor vertical de y también de 1. Si la profundidad de la posición (x, y) resulta ser z, entonces la profundidad z’ de la siguiente posición (x+1, y) a lo largo del scan se obtiene con la ecuación 5 como:
′ z =−A(x +1) − By − D
C ec. 11
o como:
′ z = z −AC
ec. 12
Figura 10: Coordenadas de píxeles adyacentes
El ratio ‐A/C es una constante para cada superficie, por lo tanto sucesivos valores de profundidad a lo largo de un scanline son obtenidos con sólo una suma.
x x+1
y-1
y
eje x
eje y
Capítulo 2 Métodos de Detección de
Superficies Visibles
‐ 17 ‐
En cada scanline comenzamos el calculando la profundidad en la arista izquierda del polígono que intersecta con dicha scanline. Sucesivos cálculos de la profundidad de posiciones a lo largo del scanline se efectúan con la ecuación 12. Primero determinaremos la extensión del polígono en el eje y y procesaremos la superficie desde la mayor scanline hasta la menor como se muestra. Comenzando en el vértice superior podemos calcular recursivamente x posiciones hacia abajo sobre la arista izquierda como x’ = x‐1/m, donde m es la pendiente de la arista (figura 11). La profundidad bajando por la arista se obtienen recursivamente como:
′ z = z −A / m+ B
C ec. 13
Si estamos procesando una arista vertical, la pendiente es infinita y el cálculo se reduce a:
′ z = z +BC
ec. 14
Figura 11: Posiciones de intersección sobre sucesivas scanlines en la arista izquierda
x x’
scan line y
scan line y+1
Capítulo 3 Modelos de Iluminación
‐ 19 ‐
Capítulo 3 Modelos de Iluminación
as visualizaciones realistas de una escena se obtienen generando proyecciones perspectiva de los objetos y aplicando efectos naturales de luz a las superficies visibles. Un modelo de
iluminación o modelo de sombreado, es empleado para calcular la intensidad de la luz que deberíamos ver en un punto dado de la superficie del objeto. Los algoritmos de rendering de superficies emplean el cálculo de las intensidades del modelo de iluminación para determinar la intensidad de luz para todos los pixeles proyectados para varias superficies de la escena.
Fuentes de luz
Cuando observamos un objeto no luminoso opaco, vemos la luz reflejada por las superficies de dicho objetos. La luz reflejada es la suma de todas las contribuciones de las fuentes de luz y otras superficies reflectantes de la escena. A veces nos referimos a las fuentes de luz como fuentes emisoras de luz; y las superficies reflectantes, tales como las paredes de una habitación, son llamadas fuentes de luz reflectante. El modelos más simple de emisor de luz es una fuente de luz puntual. Los rayos de la fuente de luz puntual divergen en trayectorias radiales desde la posición de dicha fuente.
L
Resumen Modelos de Iluminación
‐ 20 ‐
Figura 12: Rayos divergentes de una fuente de luz puntual
Esta es una aproximación razonable para fuentes de luz que son relativamente pequeñas comparadas con el tamaño de los objetos de la escena. Una fuente de luz cercana, tal y como es un foco fluorescente, se modela con más precisión con una fuente de luz distribuida. En este caso los efectos de la iluminación no se pueden aproximar de forma realista con una fuente de luz puntual, porque el área de la fuente de luz no es pequeña comparada con los objetos de la escena. Un modelo preciso para las fuentes de luz distribuida es considerar los efectos acumulados de iluminación de los puntos sobre la superficie de la fuente de luz.
Figura 13: Fuente de luz distribuida
Capítulo 3 Modelos de Iluminación
‐ 21 ‐
Cuando la luz incide en una superficie opaca, parte de esta luz es reflejada y parte absorbida. La cantidad de luz reflejada por la superficie depende del tipo de material. Cuando esa reflexión se produce en todas las direcciones hablamos de reflexión difusa y cuando dicha reflexión se produce en una única dirección hablaremos de reflexión especular, que es la que produce los brillos.
Resumen Modelos de Iluminación
‐ 22 ‐
3.1. Modelos Básicos de Iluminación
El proceso de iluminación de objetos en un escenario 3D pretende simular los siguientes efectos: • Fuentes de luz. • iluminación Ambiente. • Reflexiones difusa y especular. • Refracciones. Vamos a considerar dos tipos de reflexiones: • reflexión difusa (que es la que hace que una cara esté más o menos
iluminada). • reflexión especular (que es la que provoca los brillos)
Luz
Difusa Especular
Luz
θθ
Capítulo 3 Modelos de Iluminación
‐ 23 ‐
Luz Ambiente El modelo de iluminación más simple es el que considera únicamente la luz ambiente que se representa mediante la siguiente ecuación: I I ka a= ec. 15
donde ka representa la constante de intensidad ambiente, y Ia es la intensidad de la luz ambiente.
Reflexión Difusa La luz difusa es constante para cada superficie de la escena, independientemente de la dirección de proyección (es decir de la posición del observador). Este tipo de luz sigue la ley de Lambert, donde cada cara se ilumina según el ángulo que forma la normal de la superficie poligonal a iluminar con la dirección del vector que va desde la luz a dicha superficie. Normalmente en las escenas no se considera únicamente la luz ambiente, sino que al menos se considera una fuente de luz, usualmente una fuente de luz puntual en la posición del observador.
I I kp d= cosθ
θr N
r L
Punto de luz, intensidad Il*
Resumen Modelos de Iluminación
‐ 24 ‐
Figura 14: Reflexión Difusa (Ley de Lambert)
donde Il es la intensidad del punto de luz, kd es la constante de reflexión difusa y θ es el ángulo que forman los vectores
r N y
r L , o lo
que es lo mismo:
cosθ =r N ⋅
r L
r N
r L
ec. 16
reflexión Especular
La reflexión especular modela los brillos que se producen en los objetos.
Figura 15: Reflexión Especular (Modelo de Phong)
θθα
(Vector que va hacia el punto de observación)
r N
* r L
r R
r V
Capítulo 3 Modelos de Iluminación
‐ 25 ‐
rN
r N ⋅
r L
rL
rR
rL
A partir de ahora asumiremos que todos los vectores se encuentran normalizados para que las expresiones sean más sencillas. La manera de calcular el vector
rR es:
r R =
r N (2
r N ⋅
r L ) −
r L ec. 17
Además si introducimos la atenuación que se produce a medida que nos alejamos de la luz, que se consigue dividiendo por la distancia al punto de vista del punto (es decir, en nuestro modelo la z) tendremos completo el modelo de iluminación. Por lo que la fórmula quedará como sigue (d = distancia del punto de vista ≡ z):
I = Ia ka +I l
d + kkd cosθ + ks cosn α[ ] ec. 18
No es necesario calcular los ángulos θ ni α puesto que lo que queremos es el coseno de dichos ángulos podemos emplear
Resumen Modelos de Iluminación
‐ 26 ‐
directamente el producto escalar, siempre asumimos que trabajamos con vectores normalizados. La fórmula quedará como sigue:
I = Ia ka +
I l
d + kkd (
r N ⋅
r L ) + ks (
r R ⋅
r V )n[ ] ec. 19
Donde k es otra constante que regula la escena completa alejando o acercando aún más cada punto. Si tenemos varios focos de luz la intensidad final será la suma de la contribución de todas las fuentes de luz:
I = Ia ka +Il j
d + kkd j cosθ j + ks cos n α j[ ]⎛
⎝ ⎜ ⎞
⎠ ⎟
j =1
m
∑ ec. 20
o si empleamos los productos escalares quedaría como:
I = Ia ka +
Il j
d + kkd j
r N ⋅
r L j( )+ ks
r N ⋅
r R j( )n[ ]⎛
⎝ ⎜ ⎞
⎠ ⎟
j =1
m
∑ ec. 21
Donde m es el número de fuentes de luz y la n es el exponente de Phong, que modela el brillo del material del objeto, como resultado se obtiene que a mayor n el brillo es más concentrado, y a menor n el brillo es más disperso. En la siguiente figura se puede ver un ejemplo de este efecto:
Capítulo 3 Modelos de Iluminación
‐ 27 ‐
Figura 16: Esferas sombreadas según el modelo de Phong. Para todas las esferas ka =0.1 y kd =0.45, y de izquierda a derecha n=2, 20, 50, 100, 200, y de arriba a abajo para todas las esferas ks =0.3, 0.5, 0.70.
3.2. Sombreado de Polígonos Los métodos de sombreado de polígonos se emplean para suavizar el aspecto plano de los mismos. Indicando cada uno de ellos una forma distinta de calcular la intensidad en cada píxel del polígono que estamos dibujando. Los métodos que vamos a considerar son los tres siguientes: 1. Sombreado de Intensidad Constante (Flat). 2. Sombreado de Gouraud. 3. Sombreado de Phong.
Resumen Modelos de Iluminación
‐ 28 ‐
En los dos últimos se realiza interpolación de intensidades o de vectores normales, respectivamente, mientras que en el primero no se realiza ningún tipo de interpolación.
Sombreado de Intensidad Constante (Flat, en opengl GL_FLAT).
En el primero se emplea la normal del polígono para todos los píxeles del mismo. De esta manera se produce una iluminación constante para todos los píxeles de cada polígono.
Figura 17: Sombreado constante
r N
Capítulo 3 Modelos de Iluminación
‐ 29 ‐
Sombreado por Interpolación Gouraud (en opengl GL_SMOOTH).
En el segundo se realiza una interpolación de intensidades como se refleja en la siguiente figura, aquí cada píxel tiene una iluminación distinta:
Figura 18: Suavizado de Gouraud. Interpolación de Intensidades
El primer paso para poder calcular las intensidades I1, I2, I3 es interpolar la normal en cada uno de los vértices a partir de las normales de todos los polígonos que compartan dicho vértice. La siguiente figura muestra como se realiza la interpolación para uno de los vértices:
Ia = I1 − (I1 − I2 )y1 − yS
y1 − y2
Ib = I1 − (I1 − I3 )y1 − yS
y1 − y3
Ip = Ib − (Ib − Ia )xb − xS
xb − xa
Ip
y3
y1
y2
yS λ
I1
I2
I3
Ia Ib
Resumen Modelos de Iluminación
‐ 30 ‐
Figura 19: Cálculo del vector normal en un vértice
La intensidad de cada vértice Ii, se obtiene sustituyendo la normal rNVi
, en la ecuación de iluminación.
Sombreado por interpolación de Phong (en opengl no existe directamente). En el segundo se realiza una interpolación de normales como se refleja en la siguiente figura. Es idéntico al modelo de Gouraud cambiando las intensidades por normales, de modo que para cada píxel se emplea una normal diferente. Para cada punto Pi se emplea la normal Ni.
N0 N1 N3 N4 N5
P0 P1 P2 P3 P4
r N 1
r N 2
r N 3
r N 4
r N vi
r N vi
=
r N 1 +
r N 2 +
r N 3 +
r N 4
4
Capítulo 3 Modelos de Iluminación
‐ 31 ‐
Figura 20: Suavizado de Phong. Interpolación de Normales
La siguiente tabla muestra el efecto de cada uno de los métodos de sombreado de polígonos expuestos:
a) b)
Resumen Modelos de Iluminación
‐ 32 ‐
c) d)
Figura 21: Diversos sombreados de polígonos. a) modelo alámbrico de una copa, b) sombreado constante, c) sombreado de Gouraud y d) sombreado de Phong