Colores Ysombras

  • 6,401 views
Uploaded on

Colores, sombras y OpenGL!!!

Colores, sombras y OpenGL!!!

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
6,401
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
104
Comments
0
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Tema 7 Colores y Sombras http://www.espol.edu.ec Fuente de:
  • 2. Índice
    • Color
      • La luz
      • Percepción del color
      • Características psicológicas del color
      • Profundidad de color
      • Modelos de color
      • Colores en OpenGL
    http://www.espol.edu.ec Fuente de:
  • 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 * 10 14 Hz (violeta)
    • El ojo humano distingue aproximadamente unos 400.000 colores diferentes
    http://www.espol.edu.ec Fuente de:
  • 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
    http://www.espol.edu.ec Fuente de:
  • 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.
    http://www.espol.edu.ec Fuente de:
  • 6. Características psicológicas del color
    • Cromaticidad:
      • Matiz
      • Luminosidad
      • Tono
      • Saturación
    • Además de la frecuencia, otras propiedades para caracterizar nuestra percepción de la luz
    http://www.espol.edu.ec Fuente de:
  • 7. Profundidad de color
    • Color de 1-bit
      • Permite 2 colores, utiliza 1 bit dedicado a la información de color por cada píxel (2 1 ).
    • Color de 4-bits
      • 16 colores por píxel, utiliza 4 bits dedicados a la información de color (2 4 )
    • Color de 8-bits
      • 256 colores ya que se utilizan 8 bits dedicados a la información de color por cada píxel (2 8 )
      • 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 16.777.216 colores, se utilizan 24 bits dedicados a la información de color por cada píxel (2 24 )
      • 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
    http://www.espol.edu.ec Fuente de:
  • 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();
    • }
    http://www.espol.edu.ec Fuente de:
  • 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
    http://www.espol.edu.ec Fuente de:
  • 14. Colores en OpenGL
    • glBegin GL_TRIANGLES
      • 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.
    • Sin ocultaciones
    • Ocultando caras detrás
    Colores en OpenGL
  • 20.
    • Sin Z-Buffer
    • Con Z-Buffer
    Colores en OpenGL
  • 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
  • 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.
  • 29. Sombras
    • Ejemplo:
    sombreado en las caras sin líneas en los bordes Imagen renderizada
  • 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
    efecto falloff sin 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
  • 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
  • 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, 0.0f, 0.0f); glColor3f(0.0f, 1.0f, 0.0f);  // verde       glVertex3f(1.0f, 0.0f, 0.0f); glColor3f(1.0f, 0.0f, 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.
  • 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
  • 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.
  • 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)