Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Computación Gráfica Modelado de la Iluminación y el Color Docentes: Néstor Calvo Ángel Calegaris Walter 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 RGB 2) 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 incidencia de 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 cos r(δ) si δ<γ (kc + kl d + kq d 2) 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 n r θ v α Ir = Ks Il cos q(α) 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 Casting Ray Tracing Radiance Radiosity Photon 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)D D 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 cos r(δ) si δ<γ (kc + kl d + kq d 2) 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 materiales M a te ri a l G L _ A M B IE N T G L _ D IF F U S E G L _ S P E C U L A R G L _ S H IN IN E S S M a te ri a l G L _ A M B IE N T G L _ D IF F U S E G L _ S P E C U L A R G L _ S H IN IN E S S M a te ri a l G L _ A M B IE N T G L _ DIF F U S E G L _ S P E C U L A R G L _ S H IN IN E S S 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.8 0.223529 0.568627 0.941176 0.1995 0.60648 0.555802 0.2225 0.89 0.316228 0.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.95 Bronze 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.328634 0.054 0.18144 0.166721 0.0645 0.0903 0.208006 0.06625 0.22525 0.346435 1 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.264 Bronze 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.296648 1 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.8 0.25 0.4 0.774597 0.19225 0.50754 0.508273 0.01175 0.04136 0.626959 0.25 0.4 0.774597 0.19225 0.50754 0.508273 0.01175 0.04136 0.626959 1 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.8 0.0735 0.27048 0.137622 Silver 0.23125 0.2775 0.773911 0.18725 0.74151 0.30829 0.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.8 Polished 0.2295 0.5508 0.580594 51.2 Emerald 0.0215 0.07568 0.633 76.8 Black 0 0.01 0.5 32 Copper 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.5 1 1 1 0.55 0.55 0.55 1 1 1 Black 0.02 0.01 0.4 10 Rubber 0.02 0.01 0.4 0.02 0.01 0.4 1 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)
Compartir