La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Tema 7 Colores y Sombras.

Presentaciones similares


Presentación del tema: "Tema 7 Colores y Sombras."— Transcripción de la presentación:

1 Tema 7 Colores y Sombras

2 Índice Color La luz Percepción del color
Características psicológicas del color Profundidad de color Modelos de color Colores en OpenGL

3 La luz El color es una banda de frecuencias del espectro electromagnético El espectro visible abarca desde los 4.3*1014 Hz (rojo) hasta los 7.5 * Hz (violeta) El ojo humano distingue aproximadamente unos colores diferentes

4 La luz La luz blanca esta formada por el conjunto de radiaciones visibles Un objeto sobre el que incide luz blanca absorberá algunas frecuencias y reflejará otras La combinación de éstas últimas determinará el color del objeto La frecuencia dominante se denomina color o matiz de la luz

5 Percepción del color El color es la impresión producida al incidir en la retina los rayos luminosos difundidos o reflejados por los cuerpos El ojo humano actúa como sensor y el cerebro interpretar las imágenes Los conos están especializados en la visión del color Especializados en: azul y violeta verde y amarillo rojo y naranja Los bastones requieren muy poca luz y no son capaces de discernir los colores.

6 Características psicológicas del color
Además de la frecuencia, otras propiedades para caracterizar nuestra percepción de la luz Cromaticidad: Matiz Luminosidad Tono Saturación

7 Profundidad de color Color de 1-bit Color de 4-bits Color de 8-bits
Permite 2 colores, utiliza 1 bit dedicado a la información de color por cada píxel (21). Color de 4-bits 16 colores por píxel, utiliza 4 bits dedicados a la información de color (24) Color de 8-bits 256 colores ya que se utilizan 8 bits dedicados a la información de color por cada píxel (28) Se pueden utilizar los 8 bits para imágenes de un tono continuo en blanco y negro con 256 matices de color Color de 24-bits Permite colores, se utilizan 24 bits dedicados a la información de color por cada píxel (224) 8 bits para cada color: rojo, verde y azul El inconveniente es la utilización de memoria que se necesita para pantallas de alta resolución (2MB para 1024x768)

8 Modelos de color El propósito de un modelo de color es facilitar la especificación de colores en algún formato estándar Especificación de un modelo de coordenadas 3D y un subespacio dentro donde cada color se representa por un punto único La mayoría de los modelos de color que se utilizan están orientados hacia el hardware como monitores o impresoras

9 Modelos de color Espacio de color CIE
El CIE ("d'Eclairage de Internationale de la Comisión") definió tres fuentes de luz hipotéticas, x, y, y z, resultando curvas positivas El diagrama de cromaticidad CIE es un modelo de dos dimensiones de visión del color El diagrama de cromaticidad CIE refleja el tono y la saturación, pero es necesario un modelo tridimensional para añadir el componente del brillo

10 Modelos de color El modelo de color RGB
Modelo aditivo de color que es representado por el cubo del color del RGB R, G, y B representan los colores producidos por los fósforos rojos, verdes y azules El cubo se proyecta dentro del espacio de color del CIE XYZ Los valores de R,G,B se asignan en el intervalo de 0 a 1

11 Colores en OpenGL OpenGL especifica un color utilizando las intensidades separadas de componentes rojo, verde y azul (espacio de color RGB) Definimos un color con la función glColor* Los elementos geométricos se dibujan con los atributos activos en cada momento En cualquier momento se pude modificar el valor de los atributos, sustituyendo el nuevo valor al anterior Los atributos podrán apilarse y desapilarse

12 Colores en OpenGL void triangulo2(void){ glBegin(GL_TRIANGLES); glColor3f(0.0,0.0,1.0); glColor3f(0.0,1.0,0.0); glVertex2f(0.0,-0.4); glVertex2f(-0.4,0.2); glVertex2f(0.4,0.2); glEnd(); }

13 Colores en OpenGL Al dibujar polígonos se puede controlar que se dibujen sus aristas o solo el interior control de visibilidad de las aristas se realiza con la función glEdgeflag(b) También se pueden conseguir gradientes Con un triángulo, por ejemplo, bastará con asignar un color distinto a cada vértice OpenGL renderiza la imagen con el gradiente de color resultante entre ellos

14 Colores en OpenGL glBegin GL_TRIANGLES glEnd
glColor3f( 1.0,0.0,0.0 ) //color rojo glVertex3f( 0.0,1.0,0.0 ) glColor3f( 0.0,1.0,0.0 ) //color verde glVertex3f( -1.0,-1.0,0.0 ) glColor3f( 0.0,0.0,1.0 ) //color azul glVertex3f( 1.0,-1.0,0.0 ) glEnd

15 Colores en OpenGL Canal alpha
El modelo RGBA de color dota a cada punto de una cuarta componente llamada canal alfa Imagen de 8 bits en escala de grises OpenGL lo interpreta de la manera siguiente Un valor alpha de 0 (color negro) indica transparencia total Un valor de 128 (color gris "puro") indica semitransparencia Un valor de 255 (color blanco) indica opacidad total

16 Colores en OpenGL Mezclando dos colores generamos un tercero, si tengo un objeto de color rojo y le pongo delante un papel translúcido de color azul, la intersección de ambos se verá de color lila

17 Colores en OpenGL Activar el mezclado de colores y desactivarlo con las funciones glEnable(GL_BLEND) glDisable(GL_BLEND) Para indicar como debe hacerse la mezcla se usará la función glBlendFunc(Glenum factorfuente, Glenum factordestino) glBlendFunc(GL_ONE,GL_ZERO) importancia de 1 (máxima) al canal alfa de la fuente y de 0 (nula) al canal alfa del destino glBlendFunc(GL_SRC_ALPHA, GL_ONE) multiplique a la fuente por su valor de alfa y sume el resultado al color destino

18 Colores en OpenGL Ocultaciones
OpenGL permite utilizar dos métodos de ocultación El algoritmo de las caras de detrás Consiste en ocultar las caras que no se dibujarían porque formarían parte de la parte trasera del objeto glEnable(GL_CULL_FACE) Algoritmo del Z-buffer Cada vez que se va a renderizar un pixel, comprueba que no se haya dibujado antes en esa posición un píxel que esté más cerca respecto a la cámara glEnable(GL_DEPTH_TEST)

19 Colores en OpenGL Sin ocultaciones Ocultando caras detrás

20 Colores en OpenGL Sin Z-Buffer Con Z-Buffer

21 Colores en OpenGL Eliminando caras detrás Caras detrás + Z-Buffer

22 Colores en OpenGL La combinación de estos dos algoritmos no siempre es adecuada Caras detrás + Z-Buffer Z-Buffer

23 Colores en OpenGL El color de los materiales
La forma en que la luz incide sobre las superficies de los objetos depende de las propiedades del material de los mismos OpenGL la forma de definir estas propiedades es la función: void glMaterial{if}[v](GLenum face, GLenum pname, TYPEparam); El primer argumento determina la cara del objeto donde se aplica el material propiedad del material que va a fijarse

24 Colores en OpenGL

25 Indice Sombras Efecto falloff (Distance falloff) Sombreado
Tipos de sombreado Sombreado en OpenGL Stencil Buffer Volúmenes de sombras Fusión (Dithering) Paletas de Ventana

26 Sombras Definición: Una sombra es una región de oscuridad donde la luz es obstaculizada. Una sombra ocupa todo el espacio de detrás de un objeto opaco con una fuente de luz frente a él. La sección eficaz de una sombra es una silueta bidimensional o una proyección invertida del objeto que bloquea la luz.

27 Sombras Propiedades: Cuanto menor el ángulo entre dirección de la luz y objeto, más corta la sombra. Cuanto menor el ángulo entre dirección de la luz y superficie donde aparece la sombra, mayor será esta. Fuente luz no puntual-> umbra y penumbra Múltiples focos->múltiples sombras Múltiples focos colores-> Color de cada sombra será del color de la luz del otro foco Cuanto menor es el ángulo entre la dirección de la luz y un objeto alargado que la obstaculice, más corta será su sombra. Por otro lado, cuanto menor sea el ángulo entre la dirección de la luz y la superficie en la que aparece la sombra, más larga será ésta. Si el objeto está cerca de la fuente luminosa, la sombra será mayor que si el objeto se encuentra lejos. Si la superficie está curvada, habrá más distorsiones. Cuando la fuente de luz no es puntual, la sombra se divide en umbra y penumbra. Cuanto más ancha es la fuente de luz, más difuminada o borrosa será la sombra. Si sólo existe una fuente de luz, las sombras arrojadas por aquella serán siempre grises, sea cual sea el color de la fuente. En cambio, si existen dos fuentes de luz de distintos colores, supongamos rojo y azul, las sombras proyectadas por cada una de ellas serán del color de la otra fuente de luz, y sólo la intersección de ambas sombras será gris. Es decir, la sombra de la luz roja será azul, pues está iluminada por la fuente azul, y viceversa. En el caso de que existan más fuentes de luz, cada sombra será del color resultante de la adición de las fuentes que aún iluminan esa zona, permaneciendo en gris las zonas donde intersecten las sombras de todas las fuentes luminosas.

28 Sombras Sombras por ordenador:
Simula como se comportan las caras del polígono cuando es iluminado por una fuente de luz virtual Altera el color de las caras de un modelo 3D basándose en el ángulo de la superficie con la fuente de luz. El proceso de sombreado o shading (en el contexto de los gráficos realizada por ordenador) implica la simulación de computadora (o más exactamente; el cálculo) como las caras de un polígono se comportarán cuando es iluminado por una fuente de la luz virtual. El cálculo exacto varía según no sólo que datos están disponibles sobre la cara sombreada, sino también la técnica de sombreado Generalmente este afecta propiedades de la especularidad y valores de intensidad, reflexión y transparencia. Este proceso se realiza durante el renderizado. El sombreado altera el color de las caras de un modelo 3D basándose en el ángulo de la superficie con la fuente de luz. Las siguientes imágenes muestran las diferencias:

29 Sombras Ejemplo: Imagen renderizada sin líneas en los bordes
sombreado en las caras

30 Sombras-Efecto Falloff
Se puede observar que las superficies de las caras son brillantes en la caja delantera y más oscuras en la situada en la parte de atrás. También la superficie sobre la que están pasa de claro a oscuro según se aleja. produce imágenes más realistas sin efecto falloff Teóricamente, dos superficies que son paralelas son iluminadas con la misma intensidad por una fuente de luz distante, como por ejemplo el sol. Incluso si una superficie está más distante, el ojo ve más en el mismo espacio, por eso la iluminación parece la misma. Nótese que en la primera imagen el color de las caras frontales de las dos cajas son exactamente iguales. Parece que hay una pequeña diferencia en el punto de encuentro de las caras, pero esto es una ilusión óptica causada por el borde vertical debajo de donde se encuentran las caras. efecto falloff

31 Tipos de sombreado Sombreado plano (Flat shading)
Definición: sombrea cada polígono de un objeto basándose en el ángulo que existe entre la superficie normal del polígono y la dirección de la fuente de luz, sus respectivos colores y la intensidad de la luz Renderizado de alta velocidad Desventaja: aspecto poco natural en modelos bajos en polígonos Sombreado plano (Flat Shading) Es una técnica usada en gráficos 3D en la que se sombrea cada polígono de un objeto basándose en el ángulo que existe entre la superficie normal del polígono y la dirección de la fuente de luz, sus respectivos colores y la intensidad de la luz. Es el tipo de sombreado utilizado para el renderizado de alta velocidad donde técnicas de sombreado más avanzadas tienen un coste computacional excesivo. La desventaja del sombreado de intensidad constante es que da a los modelos con un número bajo de polígonos un aspecto poco natural, formado por múltiples caras. A veces esta apariencia puede ser ventajosa, como al modelar objetos poligonales. Los diseñadores a veces usan esta técnica para observar las diferentes caras del objeto que están creando.

32 Tipos de sombreado Comparación Flat Shading-Phong

33 Tipos de sombreado Sombreado Gouraud
Simula el efecto de difusión de la luz y los colores a través de la superficie del objeto Aplica el patrón de iluminación a cada vértice del polígono y entonces promedia los valores de color en toda la superficie del objeto para así alcanzar un efecto de sombreado suave El resultado final de todo esto es un polígono con un suave gradiente de intensidades sobre su superficie

34 Tipos de sombreado Sombreado Gouraud: Bandas de Mach
objetos sombreados con Gouraud muestran las zonas de unión de polígonos

35 Tipos de sombreado Sombreado de Phong
usado en los gráficos 3D para la interpolación de superficies en polígonos rasterizados, para obtener mejor resolución especular. proporciona una mejor aproximación a la aplicación punto-por-punto de un modelo de reflexión superficial, asumiendo una suavidad variante de la superficie como vector normal. en lugar de interpolar intensidades de los vértices, según se hace en el sombreado Gouraud, se interpole normales a lo largo del polígono

36 Tipos de sombreado Sombreado Blinn–Phong
intercambia la precisión visual por eficiencia computacional En sombrado de Phong solo se recalcula el ángulo R*V entre el observador (V) y el rayo de luz de la fuente (L) reflejado (R) en una superficie. Si en vez de eso se calcula el vector intermedio entre el observador y los vectores de las fuentes de luz: Podemos reemplazar R*V con N*H, este producto de puntos representa el coseno de un ángulo que es la mitad del ángulo representado por el producto de puntos de Phong si V,L y R se encuentran en el mismo plano. Esto produce modelos empíricos más certeros para determinar la distribución de las funciones de reflexión bidireccional que el modelo de Phong. Blinn-Phong es el modelo de sombreado por defecto que utiliza OpenGL y se lleva a todos los vértices según pasan por la tubería de gráficos, mientras que los valores de los pixeles entre los vértices son interpolados por el sombreado de Gouraud (menos costoso).

37 Reflexión Modelo de Lambert
Superficies en las que la luz que incide sobre ellas se reparte de forma que sólo depende del ángulo de incidencia y es independiente del ángulo de observación. Sólo se puede emplear con ciertos materiales. Sirve como una buena aproximación cuando las características de la superficie no se conocen.

38 Reflexión Modelo de Oren-Nayar Similar al de Lambert.
Es más preciso aunque también más complicado. Los cálculos se realizan teniendo en cuenta un factor de rugosidad de la superficie.

39 Sombreado en OpenGL glShadeModel(GLenum modo ) selecciona el modelo de sombreado: suave o plano. El modo puede ser: Plano  GL_FLAT Suave  GL_SMOOTH

40 Sombreado OpenGL GL_Flat
glShadeModel(GL_FLAT); glBegin(GL_TRIANGLES);         glColor3f(1.0f, 0.0f, 0.0f);  // color rojo glVertex3f(-1.0f, 0.0f, 0.0f); glColor3f(0.0f, 1.0f, 0.0f);  // color verde       glVertex3f(1.0f, 0.0f, 0.0f); glColor3f(1.0f, 0.0f, 0.0f);  // color azul       glVertex3f(0.0f, 1.0f, 0.0f); glEnd();

41 Sombreado OpenGL GL_SMOOTH
glShadeModel(GL_SMOOTH); glBegin(GL_TRIANGLES);         glColor3f(1.0f, 0.0f, 0.0f);  //activamos el color rojo glVertex3f(-1.0f, f, 0.0f); glColor3f(0.0f, f, 0.0f);  // verde       glVertex3f(1.0f, 0.0f, 0.0f); glColor3f(1.0f, f, 0.0f);  // azul       glVertex3f(0.0f, 0.0f, 1.0f); glEnd();

42 Sombreado-Stencil Buffer
Sirve para mejorar la calidad de las sombras y los reflejos. Añade planos de bits adicionales para cada píxel además de los bits de color y profundidad. Es una manera de marcar píxeles en una renderización para controlar su actualización en renderizaciones siguientes. Funciones en OpenGL: glEnable(GL_STENCIL_TEST) glDisable(GL_STENCIL_TEST). glClearStencil

43 Volúmenes de sombras Construcción:
se proyecta un rayo de luz a través de cada vértice en la proyección de la sombra del objeto hacia el infinito. El conjunto de estas proyecciones generan un volumen que engloba todos los puntos que pudieran posiblemente verse ensombrecidos por un objeto. Cualquier objeto dentro de este volumen debería ser ensombrecido

44 Volúmenes de sombras

45 Volúmenes de sombras- Técnicas
Existen 3 técnicas aplicables en tiempo real. Características comunes: dibujar la escena como si estuviera completamente en sombra. para cada punto de luz: usar la información de profundidad de la escena para construir una mascara en el stencil buffer la escena de nuevo como si estuviera completamente iluminada, usando el stencil buffer para la máscara de las áreas sombreadas. Existen 3 técnicas que usan el stencil buffer para renderizar las sombras con volúmenes de sombras lo suficientemente rápido como para utilizarlas en aplicaciones de tiempo real, paso de profundidad, fallo en profundidad y OR exclusivo, pero todos ellos utilizan el mismo proceso: -renderizar la escena como si estuviera completamente en sombra. - para cada punto de luz: -usar la información de profundidad de la escena para construir una mascara en el stencil buffer que tiene huecos solo donde la superficie visible no es una sombra -Renderizar la escena de nuevo como si estuviera completamente iluminada, usando el stencil buffer para la máscara de las áreas sombreadas.

46 Volúmenes de sombras- Técnicas
Paso de profundidad (Depth pass) Si la superficie de un objeto esta en sombra, habrá más superficies sombreadas frontalmente entre ella y el ojo que con las superficies traseras sombreadas. Error de Profundidad (Depth fail) En vez de contar las caras frontales sombreadas de la superficie del objeto, las superficies traseras se pueden contar así fácilmente con el mismo resultado OR exclusivo Aproxima las dos anteriores, no trata propiamente con la intersección de los volúmenes de sombras Paso de profundidad (Depth pass) Heidemann propuso que si el frente de las superficies y la trasera de las sombras eran renderizadas en pasos separados, el número de caras frontales y traseras de un objeto puede ser contado usando el stencil buffer. Si la superficie de un objeto esta en sombra, habrá más superficies sombreadas frontalmente entre ella y el ojo que con las superficies traseras sombreadas. Si su número es igual, sin embargo, la superficie del objeto no es una sombra. Error de Profundidad (Depth fail) Sobre el 200 algunas personas descubrieron que el método de Heidmann puede trabajar desde cualquier punto de la cámara reinvirtiendo la profundidad. En vez de contar las caras frontales sombreadas de la superficie del objeto, las superficies traseras se pueden contar así fácilmente con el mismo resultado. Esto soluciona el problema de tener el observador en sombra, pero introduce la condición de que el extremo posterior del volumen de sombras debe ser encapsulado o las sombras terminarán perdiéndose donde los puntos del volumen van al infinito. OR exclusivo Las dos técnicas anteriores pueden aproximarse mediante la variación OR exclusivo, que no trata propiamente con la intersección de los volúmenes de sombras, pero ahorra un paso de renderización y solo requiere un bit de stencil buffer.

47 Fusión (Dithering) Definición:
técnica usada para crear la ilusión de profundidad de color en imágenes con una paleta de colores limitada. los colores no disponibles en la paleta original son aproximados por una difusión de los píxel coloreados dentro de la paleta disponible. El ojo humano percibe la difusión como una mezcla de colores. Esta imagen está formada solo por rojo y azul, pero según se van haciendo mas pequeños los pixeles el ojo humano empieza a percibir un nuevo color mezcla de la aproximación de los dos presentes, con lo cual se puede percibir un color morado no presente en la paleta de colores inicial, pero la imagen sigue estando compuesta solo por rojo y azul.

48 Fusión Incremento de fusión: glDisable(GL_DITHER)
glEnable( GL_DITHER )

49 Paletas En Windows existen dos tipos de paletas:
Paletas lógicas Paletas del sistema Existe una paleta especial que es la paleta por defecto que es la que utiliza el usuario a no ser que crea una. No se puede acceder a la paleta del sistema directamente. Los accesos se hacen mediante la paleta lógica. Como programadores, podemos usar los colores de la paleta por defecto o bien crear nuestra propia paleta lógica y asociarla al contexto de dispositivo.

50 Creación de Paletas de Ventana
Crear una paleta en OpenGL: HPALETTE CreatePalette( CONST LOGPALETTE *lplgpl // puntero a la paleta lógica de color ); Esta paleta utiliza una estructura lógica de paleta (LOGPALETE) que contiene 256 entradas, especificando los 8 bits para las componentes R,G,B.

51 Arbitraje de paletas Windows es un S.O. multitarea  Ejecución simultánea de varias aplicaciones. Pero el hardware solo permite 256 colores en la paleta del sistema que deben ser compartidos por todas las aplicaciones en ejecución. Si alguna de las aplicaciones modifica la paleta del sistema puede que se altere la presentación de imágenes de otras aplicaciones produciendo efectos no deseados. Windows proporciona un conjunto de mensajes para arbitrar el uso de paletas.

52 Arbitraje de paletas Mensajes:
WM_QUERYNEWPALETTE  Preguntar a la ventana principal si desea copiar las entradas de su paleta privada en las entradas del sistema. WM_PALETTECHANGED  Indica a la ventana que puede seleccionar la paleta, incluso si no es la ventana activa.

53 Creación de paletas DescribePixelFormat()  para determinar si una aplicación requiere una paleta. Retorna una estructura PÍXELFORMATDESCRIPTOR Si el valor del bit PFD_NEED_PALETTE está activo crear una paleta para la aplicación

54 Estructura de una paleta
Reservar memoria: typedef struct tagLOGPALETTE { // lgpl WORD palVersion; WORD palNumEntries; PALETTEENTRY palPalEntry[1]; } LOGPALETTE; Llamar a la función CreatePalette() Cada entrada en la paleta es una estructura PALETTEENTRY

55 Estructura de una paleta
typedef struct tagPALETTEENTRY { // pe BYTE peRed; BYTE peGreen; BYTE peBlue; BYTE peFlags; } PALETTEENTRY; -         peRed, peGreen y peBlue representan las intensidades relativas para las componentes de 8 bits RGB. Así cada una de las 256 entradas de la paleta contendrá una definición de color de 24 bits. -         PeFlags se utiliza para especificar opciones avanzadas de la paleta. Normalmente su valor será NULL.

56 Destrucción de una paleta
case WM_DESTROY: // Desactiva el contexto de generación actual y lo borra wglMakeCurrent(hDC,NULL); wglDeleteContext(hRC);   ReleaseDC(hWnd,hDC);   // Borra la paleta si fue creada if(hPalette != NULL) DeleteObject(hPalette);   // Le dice a la aplicacion que termine despues de que se cierre la ventana PostQuitMessage(0); break;

57 Librería GL Principales funciones para el manejo de colores y sombras en OpenGL glAccum - establece los valores de un píxel en el buffer. glClearColor – borra los buffers de color. glClearDepth – asigna un valor de profundidad al buffer de profundidad. glColor – selecciona el color actual en modo RGBA.

58 Librería GL glColorMask – activa o desactiva la modificación de las componentes de color en los buffers de color. glColorMaterial – permite seleccionar las propiedades de un material siguiendo el color definido por glColor. glDisable – desactiva una característica de OpenGl

59 Librería GL glEnable – activa una característica de OpenGl.
glDrawBuffer – selecciona un buffer de color para dibujar. glFog – especifica los parámetros de niebla. glIndex – selecciona el índice de color actual.

60 Librería Gl glLogicOp – selecciona la operación lógica para el modo de color indexado. glPolygonMode – selecciona el modo en que se generan los polígonos. glShadeModel – asigna el sombreado por defecto (suave o plano)


Descargar ppt "Tema 7 Colores y Sombras."

Presentaciones similares


Anuncios Google