Computación Gráfica Modelado de la Iluminación y el Color Docentes: Néstor Calvo Ángel...
-
Upload
pino-canseco -
Category
Documents
-
view
230 -
download
0
Transcript of Computación Gráfica Modelado de la Iluminación y el Color Docentes: Néstor Calvo Ángel...
Computación Gráfica
Modelado de la Iluminación y el Color
Docentes:Néstor Calvo
Ángel CalegarisWalter Sotil
2008
Color y Sombreado 2
1a Parte: COLOR
Como se percibe y como se cuantifica el color
Color y Sombreado 3
Reproducción: Colores Aditivos y Sustractivos
Agregan color (emisores, monitor) Quitan color (tintas, impresora)
-La tinta cian (celeste) absorbe el color rojo
-La tinta magenta absorbe el color verde
-La tinta amarilla absorbe el color azul
-Las tres tintas C+M+Y absorben todo el color = negro
(Las impresoras suelen usar también tinta negra)
Colores Aditivos (RGB) Colores Sustractivos (CMY)
Complementarios
Color y Sombreado 4
Creemos saber todo sobre el color
¿Ya está? ¿Con una terna de RGB podemos representar cualquier color? ¿Por que una terna?• ¿Que tres colores?• ¿Que hace el violeta cerca del rojo?
Color y Sombreado 5
Pero la realidad es mucho más complicada
Un color es una distribución continua o espectro de longitudes de onda P(). Es una función, no un valor.Además el ojo tiene sus particularidades fisiológicas
color
Color y Sombreado 6
Tres tipos especializados de Conos
Color y Sombreado 7
Teoría Tricromática: Von Helmholtz (1859)
Los colores son percibidos de acuerdo a las respuestas relativas de los tres tipos de receptores.
Color y Sombreado 8
Teoría de Colores Opuestos: Hering (1872)
•¿Alguien vio un rojo verdoso o un azul amarillento?
•¿Cómo se explican los contrastes y las afterimages con la teoría tricromática?
Y
Cb
Cr
Color y Sombreado 9
Teoría Dual
Los colores son percibidos de acuerdo a las respuestas relativas de los tres tipos de receptores. Pero se procesan tanto las contribuciones individuales como las sumas y las diferencias.
Color y Sombreado 10
Percepción del color
Hue, Saturation, Value or Lightness (HSV o HSL)Tono, Saturación, Intensidad o Luminancia
Color y Sombreado 11
Reproducción del color
r
g
b
Los valores negativos (del rojo en este caso) significan que:1) no se puede reproducir ese color en RGB2) a menos que se agregue luz (roja) al campo de referencia
Wright and Guild 1930: Comparación visual entre un color de referencia y uno generado mediante tres luces (RGB)
Color y Sombreado 12
Commission Internationale de l’Éclairage (CIE)
CIE 1931: Standard Colorimetric Observer
Color y Sombreado 13
Commission Internationale de l’Éclairage (CIE)
CIE 1931: Chromaticity Diagram
CIE 1975: Uniform Chromaticity Scale
x = 4X
X+15Y+3Z
y = 9Y
X+15Y+3Z
x = X
X+Y+Z
y = Y
X+Y+Z
Color y Sombreado 14
Gamut
3D!?
I=0.299R+0.587G+0.114B
Color y Sombreado 15
2a Parte: Iluminación y Sombreado
Como interactúan los materiales con la luz
Color y Sombreado 16
Sombreado
Analizaremos el sombreado debido a la forma del objeto en relación con el ojo y las fuentes de luz.
(No confundir sombreado con sombras)
Color y Sombreado 17
Iluminación Local / Global
Iluminación local: depende del material, la luz ambiente, el ángulo de incidencia de la luz y el ángulo con el eje visual
Iluminación Global: considera además la luz reflejada por los otros objetos y un ambiente mas complejo.
Color y Sombreado 18
BRDF: Bidirectional Reflectance Distribution Function
Cantidad de luz que refleja una superficie en función del ángulo de incidencia y el ángulo de visión (4D)
Los ángulos se miden respecto a la normal a la superficie en el punto considerado
Dirección de incidenciade la luz Dirección
de visualización
Normal
Color y Sombreado 19
Modelo de luz e iluminación recibida
I() = Il max(cos(),0)
Superficie
n
d
I() = Il cos()
I = Il cosr() si < (kc + kl d + kq d2)
I = 0 si >
Color y Sombreado 20
Reflexión Difusa Lambertiana o Ideal
Superficie
Ir = Kd Il cos()
Color y Sombreado 21
Reflexión Especular Ideal
Superficie
l
n
r
La luz de un foco puntual (o la luz que llega a la superficie desde un dado punto) solo es visible si el ángulo de visión es exactamente igual al de incidencia
Color y Sombreado 22
Reflexión no ideal
l
nr
v
Ir = Ks Il cosq()
independiente de cos()!!?? (Fresnel?)
q
Color y Sombreado 23
Iluminación Ambiente
Ir = Il Ka
La luz reflejada por todo el entorno se simplifica como luz ambiente.
Es independiente de la dirección de las fuentes y la de visualización
Color y Sombreado 24
Modelo de Phong (Phong Bui Tong 1975)
Ir = Il (Ka + Kd cos() + Ks cosq())
= + +
Color y Sombreado 25
Modelos avanzados de Iluminación
Ray CastingRay TracingRadianceRadiosityPhoton Map
Color y Sombreado 26
2a Parte: Implementación en Opengl
Color y Sombreado 27
Color RGBA
El color se asigna a cada vértice con glColor…(…)Puede usarse dentro del loop glBegin(…) – glEnd()La asignación es RGB o RGBA (index no se usa más)En general hay que usar reales (float) entre 0 y 1, los distintos
tipos de enteros se mapean con dificultad y luego se pasan a [0,1], siempre clampeados.
La A se refiere a un adicional alpha que puede considerarse como “nivel de opacidad”, pero en realidad se puede usar para algunos trucos:
- Alpha Test (el fragmento pasa si se cumple el test)- Blending (el entrante se mezcla con el almacenado)
El truco básico con alpha es la transparencia que se hace mediante el blending: D=AS+(1-A)DD es cada uno de los valores R, G o B del píxel almacenado en el color buffer.S es lo mismo, pero del píxel entrante. A es el alpha del píxel entrante.
Color y Sombreado 28
Color
void glColor3{b s i f d ub us ui} (TYPEr, TYPEg, TYPEb);void glColor4{b s i f d ub us ui} (TYPEr, TYPEg, TYPEb, TYPEa);void glColor3{b s i f d ub us ui}v (const TYPE*v);void glColor4{b s i f d ub us ui}v (const TYPE*v);
Color y Sombreado 29
Iluminación y Sombreado
void glLightModel{if}(GLenum pname, TYPEparam);void glLightModel{if}v(GLenum pname, TYPE *param);
glEnable(GL_LIGHTING);glEnable(GL_LIGHT_0);... glEnable(GL_LIGHT_7);
Color y Sombreado 30
Luces
void glLight{if}(GLenum light, GLenum pname, TYPEparam);void glLight{if}v(GLenum light, GLenum pname, TYPE *param);
I = Il cosr() si < (kc + kl d + kq d2)
I = 0 si >
Color y Sombreado 31
Modelo de Phong (modificado)
Ir = Ka Iga + Ke + i (Ka Ilai + Ildi Kd cos() + Ilsi Ks
cos()q)
void glColorMaterial(GLenum face, GLenum mode);
void glMaterial{if}(GLenum face, GLenum pname, TYPEparam);void glMaterial{if}v(GLenum face, GLenum pname, TYPE *param);
face: GL_FRONT, GL_BACK, or GL_FRONT_AND_BACK (default). mode: GL_AMBIENT, GL_DIFFUSE, GL_AMBIENT_AND_DIFFUSE (default), GL_SPECULAR, or GL_EMISSION
Color y Sombreado 32
Un par de consejos básicos
• El “color” puede representarse mediante las componentes ambiente y difusa, haciendo que siempre la reflexión especular sea blanca (el color de la luz sin cambiar)
• Cambiar materiales con glMaterial() es caro, conviene habilitar glColorMaterial y cambiar solo las componentes arriba mencionadas. El cambio se realiza en cada llamada a glColor.
• Los cálculos de iluminación se simplifican, sin que se vea mal, poniendo la luz en el infinito y deshabilitando “local viewer”.
• Si se quieren objetos transparentes u otras formas de blending, hay que saber que el único alpha válido es de la componente difusa del material
• Si el modelo lo construye uno mismo mediante primitivas simples, en cada vértice hay que asignar una normal con glNormal.
glColorMaterial(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE);glEnable(GL_COLOR_MATERIAL);glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER,0);glLightfv(GL_LIGHT0,GL_POSITION,lpos); // lpos[3]=0 -> infinito
Color y Sombreado 33
Simulación de materialesMaterial
GL_AMBIENT
GL_DIFFUSE
GL_SPECULA
R
GL_SHININESS
Material
GL_AMBIENT
GL_DIFFUSE
GL_SPECULA
R
GL_SHININESS
Material
GL_AMBIENT
GL_DIFFUSE
GL_SPECULA
R
GL_SHININESS
Brass 0.329412 0.780392 0.992157 27.8974 Gold 0.24725 0.75164 0.628281 51.2 Jade 0.135 0.54 0.316228 12.80.223529 0.568627 0.941176 0.1995 0.60648 0.555802 0.2225 0.89 0.3162280.027451 0.113725 0.807843 0.0745 0.22648 0.366065 0.1575 0.63 0.316228
1 1 1 1 1 1 0.95 0.95 0.95Bronze 0.2125 0.714 0.393548 25.6 Polished 0.24725 0.34615 0.797357 83.2 Obsidian 0.05375 0.18275 0.332741 38.4
0.1275 0.4284 0.271906 Gold 0.2245 0.3143 0.723991 0.05 0.17 0.3286340.054 0.18144 0.166721 0.0645 0.0903 0.208006 0.06625 0.22525 0.3464351 1 1 1 1 1 0.82 0.82 0.82
Polished 0.25 0.4 0.774597 76.8 Pewter 0.105882 0.427451 0.333333 9.84615 Pearl 0.25 1 0.296648 11.264Bronze 0.148 0.2368 0.458561 0.058824 0.470588 0.333333 0.20725 0.829 0.296648
0.06475 0.1036 0.200621 0.113725 0.541176 0.521569 0.20725 0.829 0.2966481 1 1 1 1 1 0.922 0.922 0.922
Chrome 0.25 0.4 0.774597 76.8 Silver 0.19225 0.50754 0.508273 51.2 Ruby 0.1745 0.61424 0.727811 76.80.25 0.4 0.774597 0.19225 0.50754 0.508273 0.01175 0.04136 0.6269590.25 0.4 0.774597 0.19225 0.50754 0.508273 0.01175 0.04136 0.6269591 1 1 1 1 1 0.55 0.55 0.55
Copper 0.19125 0.7038 0.256777 12.8 Polished 0.23125 0.2775 0.773911 89.6 Turquoise 0.1 0.396 0.297254 12.80.0735 0.27048 0.137622 Silver 0.23125 0.2775 0.773911 0.18725 0.74151 0.308290.0225 0.0828 0.086014 0.23125 0.2775 0.773911 0.1745 0.69102 0.306678
1 1 1 1 1 1 0.8 0.8 0.8Polished 0.2295 0.5508 0.580594 51.2 Emerald 0.0215 0.07568 0.633 76.8 Black 0 0.01 0.5 32Copper 0.08825 0.2118 0.223257 0.1745 0.61424 0.727811 Plastic 0 0.01 0.5
0.0275 0.066 0.0695701 0.0215 0.07568 0.633 0 0.01 0.51 1 1 0.55 0.55 0.55 1 1 1
Black 0.02 0.01 0.4 10Rubber 0.02 0.01 0.4
0.02 0.01 0.41 1 1
Color y Sombreado 34
Interpolación del Sombrado
void glShadeModel (GLenum mode); GL_SMOOTH (default) or GL_FLAT.
- Flat Shading: El color calculado en uno de los vértices (generalmente el ultimo) define el color del polígono.- Gouraud Shading: El color resultante en cada vértice se interpola en cada píxel interior.- Phong Shading: Normales interpoladas y cálculo de iluminación en cada píxel (no está implementado en OpenGL y no confundir con el modelo de iluminación de Phong)