Está en la página 1de 65

Sobreado (Shading)

Iluminacin Global
Capitulo 6 de Angel
Capitulo 14 y 16 de Foley
Shading
Iluminacin: calcula la intensidad de luz
en un punto particular de la superficie
Shading: usa estos calculos de
intensidades para sombrear o matizar
toda la superficie o la escena. Se refiere al
proceso de asignacin de color a los
pixels.
Shading de Superficies
Puede ser aplicada en una superficie
usando el modelo de iluminacin local
Superficie plana
Normales, intersecciones, visibilidad,
proyecciones, etc.
Aceleracin por hardware
Superficies no planas
Transformada a muchos pequeos poligonos
de caras planas (mesh)
Mesh poligonales
Compuesto por un conjunto de poligonos
(cuadrilateros o triangulos) conectados por
sus bordes
Modelo dominante para formas 3D (esp.
objetos de formas libres)
Tipos de sombreado
Sombreado plano
Calcula la iluminacin solo una vez por
poligono y se aplica a todo el poligono:
glShadeModel(GL_FLAT)
Interpolated/smooth/Gouraud
Calcula la iluminacin en los bordes y se
interpola: glShadeModel(GL_SMOOTH)
Phong shading
Calcula la iluminacin en cada punto del
poligono
Flat Shading (sombreado plano)
Se aplica un solo color a todo el poligono
(eficiente)
Discontinuidad de intensidades en las aristas
A menos que
La fuente luminosa est en el infinito, por tanto NL es
constante
El observador est en el infinito, por tanto NV es
constante en toda la cara del polgono.
El polgono representa la superficie real que se
modela y no es una aproximacin a una superficie
curva.
Tambien si se crea el objeto o la forma con un
gran nmero de poligonos as el efecto entre
poligonos es menos obvio a nuestros ojos
Flat Shading
Sombreado de malla poligonal
Una superficie curva se puede aproximar a otra facetada (malla poligonal)
No se logran buenos resultados en la interpolacin, aunque se trabaje con una
densidad alta de polgonos.
Observese que aun en la malla de ms alta densidad, al sombrear los polgonos se
logran distinguir las facetas
Sombreado de malla poligonal
Los problemas en la visualizacin de una superficie curva a travs de una
aproximacin facetada, tienen su origen en el efecto de banda de Mach.
Sombreado de malla poligonal
Los problemas en la visualizacin de una superficie de una aproximacin facetada,
tienen su origen en el efecto de banda de Mach.
O sea, adems de la discontinuidad existente, el ojo resalta las discontinuidades
provocando que se vean an mayores de lo que en realidad son.
Aqu vemos unas bandas. Cada una tiene un color nico. Sin embargo si
observamos con cuidado una de ellas vemos que la parte izquierda parece
tener un color ms claro que la parte derecha de la misma banda.
Sombreado de malla poligonal
Modelos de sombreado para polgonos
Esquema de las intensidades reales y las percibidas.
Si bien las intensidades son uniformes en cada banda, en las
discontinuidades, el salto percibido es mayor al real.
Las lneas punteadas es la intensidad percibida, la lnea slida es la real.
Gouraud Shading
Gouraud es una metodologa que permite lograr
simular continuidad en la malla poligonal, sin
necesidad de tener que utilizar una malla muy
densa.
Gouraud calcula una normal ficticia para cada
vrtice de la malla, interpolando las normales a
las caras adyacentes. Luego, calcula el color de
cada vrtice y por ltimo, realiza una
interpolacin de los valores de los
vrtices para calcular los valores de
luz interiores a cada polgono.
Sombreado de Gouraud
1) A cada vrtice se le asigna una normal
2) Se calculan las intensidades de los vrtices usando algn
modelo de iluminacin ya visto.
3) Se interpola la intensidad en cada pixel del polgono.
N
1
N
2
N
3
N
4
N
v



=
n i
i
n i
i
v
N
N
N
1
1
Sombreado de Gouraud
3) Se interpola la intensidad en cada pixel del polgono.
I
1
I
2
I
3
I
a
I
b I
p
y
1
y
s
y
2
y
3
Y
X
I
a
=I
1
-(I
1
-I
2
)(y
1
-y
s
)/(y
1
-y
2
)
I
b
=I
1
-(I
1
-I
3
)(y
1
-y
s
)/(y
1
-y
3
)
I
p
=I
b
-(I
b
-I
a
)(x
b
-x
p
)/(x
b
-x
a
)
Lnea de barrido
Sombreado de Gouraud
Flat vs Gaouraud Shading
Phong Shading
Gouraud shading no maneja
apropiadamente la iluminacin especular
debido a la interpolacin de colores
Phong shading: asegura el sombreado
Interpolando las normales en cada punto en vez
de colores
Luego aplica el modelo de iluminacin local
segn la normal aproximada
Sombreado de Phong
En Gouraud se interpola el color de los vrtices.
En Phong se interpola (y normaliza) la normal de los
vrtices y se calcula en cada pxel el color
correspondiente.
Si se utiliza sombreado de Phong con n alto, la diferencia
entre Phong y Gouraud puede llegar a ser notable.
Normalizar un vector es costoso, y aplicar un modelo de
iluminacin a cada pixel tambin puede serlo.
Normal
interpolada (al
interpolar,
reduce su
tamao)
Interpolacin
normalizada (vector
de norma 1)
Sombreado de Phong
En cada uno de los rectngulos, a la izquierda aplica Gouraud y a la derecha Phong.
Si la superficie tiene un componente especular, el efecto de Phong se resalta ms.
En los tringulos se observa cmo Phong permite iluminar una porcin de la
superficie que no se iluminara con Gouraud.
Phong vs Gouraud Shading
Phong shading:
Maneja mucho mejor la iluminacin
especular
Pero es ms costoso que el Gouraud
Shading
iluminacin global
Gran parte de la luz en el mundo real no proviene de fuentes
directas.
Algoritmos para abordar este problema:
Traza de rayos recursiva (ray tracing)
Es dependiente de la ubicacin del observador
Radiosidad (Radiosity)
Es independiente de la ubicacin del observador
iluminacin global
Iluminacin global
Un ejemplo concreto:
(a) Iluminacin Global (GIM): el modelo podria dar
sombra, hay multiple reflexin inter-objectos
(b) Iluminacn local (LIM): todas las esferas lucen
con la misma intensidad de luz, cada rendering
es independiente
GIM en OpenGL
Usa el modelo de iluminacin local de Phong y
considera solo iluminacin directa por fuentes
de luz
Tambien es posible crear una fuente de luz
ambiental global
El flat shading y sombreado suave son
soportados
Las primitivas geometricas pasan por el pipeline
grfico independientemente
Se puede usar el z-buffer
El usuario debe simular la iluminacin global
con su propia implementacin
Iluminacin local (repaso)
El color en un punto p se debe a la fuente de luz
L
I = global_ambient + self_emission + ambient +
attenuation * [diffuse + specular]
La componente de luz ambiental es
independiente de alguna otra fuente de luz
El termino emisin no es afectado por ninguna
otra fuente de luz y no afecta ninguna otra
superficie en la escena
Si se trabaja en colores se maneja cada
componente IR, IG, IB
Para multiples fuentes de luz se suman las
intensidaddes y se normaliza
Iluminacin Global
Trata de verificar como iluminar toda la
escena dependientemente
El modelo de iluminacin local es
necesario en el proceso
Incorpora todas las fuente de luz en la
escena, especialmente la reflejada de los
objetos en la escena y no solo las que
provienen de alguna fuente de luz
directamente
Algoritmos de GIM
Solucin de fuerza bruta:
para todas las fuentes en todas las
direcciones
trazar un rayo hasta que de en la pantalla o
salga de escena
Computacionalmente inmanejable
Dos algoritmos establecidos:
Ray tracing: discretiza el plano de la imagen
Radiosity: discretiza el ambiente
Imgenes con GIM
Ecuacin de rendering en GIM
Siguiendo las leyes fsicas de la conservacin
de energia:
Se asume un ambinete cerrado
Imagina un nmero infinitos de rayos alrededor con
energia de absorcin, emisin y reflexin
Se alcanza un estado de equilibrio, el cual es
calculado con la ecuacin de rendering
Ray tracing parece ser el algoritmo que usa la
forma mas simplificada de la ecuacin de
rendering
Ecuacin de generacin
En computacin grfica, la ecuacin de generacin (o
rendering equation), describe el flujo de luz a travs de la
escena. Est basada en la fsica de la luz, prove resultados
tericamente perfectos, en contraste con las tcnicas vistas
anteriormente, las cuales se aproximan a este ideal.
Interpretacin:
La intensidad de luz que sale de x y llega a x tiene dos
componentes:
Emisin propia a partir de x
Reflexin en x desde otro punto x
La oclusion entre x y x esta codificada en g(x, x)
( ) ( ) ( ) ( ) ( )

+ =

s
dx x x I x x x x x x x g x x I ' ' ' ' , ' ' ' , ' , ' , ' , ' ,
Ecuacin de generacin
x, x, x son puntos en el ambiente
I(x,x) es la intensidad que pasa de x a x
g(x,x) es un trmino geomtrico.
Vale 0 cuando x y x estn ocultos entre si.
Vale 1/r
2
cuando son visibles (r=distancia(x,x))
(x,x) intensidad de luz que se emite de x a x (si x es fuente de luz)
(x,x,x) se relaciona con la intensidad de luz reflejada en x, que sale de x y
llega a x
La integral refiere a que la luz que se refleja desde x hacia x, proviene de todos
los puntos del espacio (representados por la integral en x ).
( ) ( ) ( ) ( ) ( )

+ =

s
dx x x I x x x x x x x g x x I ' ' ' ' , ' ' ' , ' , ' , ' , ' ,
ray-tracing
Aqu se lanzan rayos desde el
observador hacia el objeto.
Luego, en el punto de
interseccin se lanzan rayos
hacia las fuentes luminosas
(llamados rayos de sombra).
Si uno de esos rayos interseca
un objeto, dicho objeto est
bajo sombra de la fuente de luz
correspondiente.
Traza de rayos recursiva (Whitted)
Aqu se ve un rayo v que sale del observador e incide
en una superficie.
Adems de los rayos de sombra L, se generan rayos
de reflexin R y de refraccin T (si el objeto es
transparente). Se llaman rayos secundarios.
Rayos primarios son los que parten del observador.
N
V R
L
T
-
N
Traza de rayos recursiva (Whitted)
T
2
R
3
N
3
T
1
N
2
R
2
R
1
N
1
L
2
L
1
L
3
Fuente
luminosa
puntual
Punto de
observacin
Aqu se ven los primeros pasos de
la recursin del algoritmo de
Whitted. El rayo que sale del
observador, incide en un punto de
una superficie. De l salen 3 rayos
L
1
, R
1
y T
1
, estos ltimos inciden
nuevamente en 2 superficies.
El objetivo es saber qu ve el
observador en ese punto. La luz
que le llega al observador se
compone de la proveniente
directamente de la fuente luminosa
(y reflejada en la superficie), as
como de la reflejada de forma
especular por la superficie y de la
refractada, las cuales a su vez
vienen de otras reflexiones y
refracciones.
Traza de rayos recursiva (Whitted)
L
1
L
3
L
2
R
1
R
3 R
2
T
2
T
1
Punto de observacin
Aqu se observa se ve el rbol de
rayos correspondiente a la
transparencia anterior.
Para conocer cunta luz es
transmitida por T
1
, es necesario
conocer los valores de intensidad de
L
3
, R
3
y T
2
. Esto obliga a recorrer
recursivamente un rbol de rayos.
En la prctica el rbol se detiene a
una profundidad prefijada o cuando
las intensidades lumnicas de los
rayos estn por debajo de un umbral
predeterminado.
Traza de rayos recursiva (Whitted)
Aqu se aprecian imgenes que para ser generadas se ha precisado realizar
rboles de profundidad de un nivel relativamente hondo (4 o 5 niveles).
Traza de rayos recursiva (Whitted)
( ) ( ) [ ]
t t r s
m i
n
i s s i d d p att i d a a
I k I k V R O k L N O k I f S O k I I
i i
+ + + + =

1
I
r
Intensidad del rayo reflejado.
I
t
Intensidad del rayo transmitido refractado.
k
t
coeficiente de transmisin (entre 0 y 1).
I
r
e I
t
se calculan recursivamente y se multiplican por el inverso de la distancia.
Dos trminos nuevos agregados
a la ecuacin de iluminacin
Traza de rayos recursiva (Whitted)
seudocdigo (1)
Seleccionar el centro de proyeccin y la ventana en el plano de vista;
for (cada lnea de barrido en la imagen){
for (cada pixel en la lnea de barrido){
determinar rayo por centro de proyeccin y pixel;
pixel=traza_RR(rayo, 1);
}
}
A continuacin veremos el seudocdigo del algoritmo de Whitted. Es relativamente
fcil de implementar y los resultados son bastante buenos aunque no vlidos
fsicamente.
Traza de rayos recursiva (Whitted)
seudocdigo (2)
/* Intersecar rayo con los objetos y calcular la sombra en la interseccin
ms cercana. */
/* La profundidad es la profundidad actual en el rbol de rayos */
color_RR traza_RR (rayo_RR, int profundidad)
{
determinar la interseccin ms cercana de rayo con un objeto;
if (Hay objeto intersecado) {
calcular normal en la interseccin;
return sombra_RR(obj. intersecado ms cercano, rayo,
interseccin, normal, profundidad);
}
else
return VALOR_FONDO
}
Traza de rayos recursiva (Whitted)
seudocdigo (3)
/* Calcular sobra en un punto, con rayos para sombras, reflex. y refrac. */
color_RR sombra_RR (objeto, rayo, punto, normal, int profundidad)
{
color = trmino del ambiente;
for (cada luz) {
rayo_s = rayo desde punto a la luz;
if (el producto punto de normal y direc. de luz es positivo) {
Calcular cunta luz es bloqueada por sup. Opacas y transp., y
usarlo para escalar los trminos difusos y especulares antes de
aadirlos a color;
}
}
...
Traza de rayos recursiva (Whitted)
seudocdigo (4)
if (profundidad < profundidad_max) { /*Regresar si la prof. es excesiva */
if (objeto es reflejante) {
rayo_r = rayo en la direccin de reflexin desde punto;
color_r = traza_RR (rayo_r, profundidad + 1);
escalar color_r por el coeficiente especular y aadir a color; }
if (objeto es transparente) {
rayo_t = rayo en la direccin de refraccin desde punto;
if (no ocurre la reflexin interna total) {
color_t = traza_RR (rayo_t, profundidad + 1);
escalar color_t por el coeficiente de transmisin y
aadir a color;
} } }
return color; /* Devolver color del rayo. */
}
Traza de rayos recursiva (Whitted)
Problema: Los rayos generados pueden intersecar las mismas
superficies de donde salen, por problemas de precisin.
Mtodos de Radiosidad (Radiosity)
Ray tracing contempla un trmino de iluminacin ambiental no
direccional. Esto es para contemplar otras contribuciones
luminosas.
Hay mtodos basados en la termodinmica, (emisin y reflexin
de radiacin) que hace innecesaria la iluminacin ambiental.
Radiosidad: tasa con la que la energa parte de una superficie.
Se compone de la tasa de energa emitida + la reflejada.
Energa/unidad de tiempo/unidad de rea = W/m
2
Mtodos de Radiosidad
Las interacciones entre superficies se calculan de
forma independiente de la vista.
Luego de este clculo, se generan las vistas, solo
determinando cules son las superficies visibles y
y el sombreado por interpolacin (por ejemplo, con
Gouraud).
Mtodos de Radiosidad
Mtodos de Radiosidad
Mtodos de Radiosidad
Mtodos de Radiosidad
Todas las superficies pueden emitir y reflejar luz.
Por tanto, las fuentes luminosas son reas.
Al ambiente se lo divide en un nmero finito de
parches discretos.
En cada parche, la luz es emitida y reflejada de
forma uniforme.
Ecuacin de Radiosidad
B
i
= E
i
+
i

1jn
B
j
F
j-i
(A
j
/A
i
)
B
i
= radiosidad de los parche i
E
i
=tasa con que el parche i emite luz.

i
=reflectividad del parche i (sin dimensiones).
F
j-i
=Factor de forma, fraccin de energa que va del parche
j al i (sin dimensiones)
A
i
=rea del parche i
Ecuacin de Radiosidad
B
i
= E
i
+
i

1jn
B
j
F
j-i
(A
j
/A
i
)
La energa que parte de un parche = suma de la energa
emitida + la reflejada.
Luz reflejada = luz incidente x reflectividad .
Luz incidente = Suma de luz que parte de toda el rea de
cada parche en el ambiente, escalada a la fraccin de luz
que llega a un rea unidad del parche receptor.
B
j
F
j-i
= cantidad de luz que parte de un rea unidad de A
j
y llega a toda el rea A
i
.
B
j
F
j-i
(A
j
/A
i
) = cantidad de luz que parte de toda el rea
A
j
y llega al rea unidad de A
i
.
Ecuacin de Radiosidad
B
i
= E
i
+
i

1jn
B
j
F
j-i
(A
j
/A
i
)
En los ambientes difusos, los factores de forma cumplen una
regla til:
A
i
F
i-j
= A
j
F
j-i
=> F
i-j
=A
j
F
j-i
/A
i
Por tanto, la ecuacin anterior se simplifica:
B
i
= E
i
+
i

1jn
F
i-j
B
j
O, de forma equivalente:
B
i
-
i

1jn
F
i-j
B
j
= E
i
Ecuacin de Radiosidad
B
i
-
i

1jn
F
i-j
B
j
= E
i
Esto permite generar un sistema de ecuaciones lineales:
1-
1
F
1- 1
-
1
F
1- 2
. . . -
1
F
1- n
B
1
E
1
-
2
F
2- 1
1-
2
F
2- 2
. . . -
2
F
2- n
B
2
E
2
. . . . .
. . . * . = .
. . . . .
-
n
F
n- 1
-
n
F
n- 2
. . . -
n
F
n- n
B
n
E
n
Se puede resolver por Gauss-Seidel
B
e
= (B
1
+ B
2
+ B
3
+ B
4
)/4
(B
b
+ B
e
)/2 = (B
1
+ B
2
)/2 => B
b
= (B
1
+ B
2
- B
e
)
(B
a
+ B
e
)/2 = B
1
=> B
a
= 2B
1
- B
e
Determinacin de la radiosidad de los
vrtices
1 2
3 4
a b c
d e f
g h i
A partir de la radiosidad de los
parches, se puede inferir la
radiosidad de los vrtices segn
las ecuaciones de abajo.
Una vez obtenida la radiosidad de
los vrtices, se puede aplicar
Gouraud o Phong para que no se
note el facetado provocado por
los parches.
El factor de forma de un rea diferencial dA
i
a un rea
diferencial dA
j
es:
dF
di-dj
= cos
i
cos
j
H
ij
dA
j
/ r
2
H
ij
es 1 o 0 dependiendo de si dA
j
es visible desde dA
i
Clculo de los Factores de Forma
A
i
dA
i

i
N
i
N
j

j
A
j
dA
j
dF
di-dj
= cos
i
cos
j
H
ij
dA
j
/ r
2
F
di-j
=
A
i
cos
i
cos
j
H
ij
/ r
2
dA
j
F
i-j
= (1/A
i
)
A
i

A
j
cos
i
cos
j
H
ij
/ r
2
dA
j
dA
i
Suponemos que el punto central de un parche tipifica los
dems puntos del parche.
=>
F
i-j
se puede aproximar con F
di-j
calculado para un dA
i
en el
centro del parche i.
Clculo de los Factores de Forma
Clculo de los Factores de Forma
Calcular F
di-j
equivale
a:
1) proyectar el rea
visible de A
j
desde
dA
i
sobre el
hemisferio unidad.
2) Hacer una nueva
proyeccin sobre el
crculo unidad.
3) Dividir el rea hallada
por el rea del
crculo.
Clculo de los Factores de Forma
Calcular F
di-j
equivale a:
1) proyectar el rea visible de A
j
desde dA
i
sobre un
hemicubo de centro en dA
i
.
2) Cada uno de los parches se
proyectan sobre la cara
apropiada del hemicubo.
3) Cada celda del
hemicubo tiene un
FdeF propio, debido a
su posicin. F
di-j
se
calcula sumando los
FdeF de todas las
celdas que contengan
el identificador del
parche j.
Clculo de los Factores de Forma
Clculo de los Factores de Forma
Este algoritmo se puede realizar
aplicando el algoritmo de z-buffer a
cada lado del hemicubo, y
registrando el cdigo del parche en
lugar del color.
Se puede aprovechar el hardware
existente para la memoria de
profundidad z.
Pueden haber artefactos de
discretizacin, por usar operaciones
de precisin de la imagen.
Soluciones parciales = Refinamiento
progresivo
En el mtodo anterior, hay n filas del tipo:
B
i
(k+1)
= E
i
+
i

1jn
F
i-j
B
j
(k)
se reune la energa del ambiente sobre el parche i .
Por cada fila i procesada, se obtiene un nuevo valor para el
parche i .
A
i
= +
B
i
(k+1)
E
i

i

1jn
F
i-j
* B
j
(k)
Soluciones parciales = Refinamiento
progresivo
En este nuevo mtodo, se irradia la energa del parche i a
todo el ambiente.
For ( j = 1:n ) { B
j
(k+1)
= B
j
(k)
+
j
F
j-i
B
i
}
Por cada columna i procesada, se obtiene un nuevo valor
para todos los parches.
A
i
= +
B
i
(k+1)
B
i
(k)

j
F
j-i
* B
i
(k)
Soluciones parciales = Refinamiento
progresivo
Soluciones parciales = Refinamiento
progresivo
El clculo de F
j-i
precisa de un hemicubo diferente por j. Esto se puede
simplificar, haciendo:
For ( j = 1:n ) { B
j
(k+1)
= B
j
(k)
+
j
F
i-j
(A
i
/A
j
) B
i
}
Este nuevo clculo solo precisa un hemicubo centrado en el parche A
i
Cuando se irradia por primera vez del parche A
i
, este irradia E
i
= B
i
Las siguientes veces que se irradie del parche A
i
, solo se considera el
incremento B
i
logrado desde la ltima vez que se irradi.
Conviene elegir los parches que al irradiar den el mayor impacto, los
que tengan ms energa a irradiar.
Radiosity
1
32
320
Radiosity

También podría gustarte