La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Unidad IV: Modelado de la terminación superficial

Presentaciones similares


Presentación del tema: "Unidad IV: Modelado de la terminación superficial"— Transcripción de la presentación:

1 Unidad IV: Modelado de la terminación superficial
01 de abril de 2017 Unidad IV: Modelado de la terminación superficial Docentes: Néstor Calvo Ángel Calegaris Walter Sotil 2008

2 Introducción 01 de abril de 2017 Con los modelos de sombreado se obtienen superficies iluminadas pero carentes de realismo. Dibujar superficies sencillas como una pared requeriría gran cantidad de polígonos. Las texturas solucionan estos problemas permitiendo simular superficies complejas con baja cantidad de polígonos, suministrando realismo a la escena e incrementando drásticamente el nivel de detalle. Texturas

3 punto del modelo (píxel del framebuffer)
Introducción 01 de abril de 2017 'Pegar' una textura sobre un objeto consiste en definir una función unívoca (función de mapeo o mapping) que a cada punto de una superficie le hace corresponder un punto de una imagen. A los píxeles de la textura se los denominan téxels. La palabra píxel se reserva para los fragmentos rasterizados. t f(s,t) punto del modelo (píxel del framebuffer) téxel s Texturas

4 Tipos de texturas Según la dimensión del espacio de textura, podemos
01 de abril de 2017 Según la dimensión del espacio de textura, podemos distinguir tres tipos de textura: Texturas en 1D: Tiene un único téxel de ancho o de alto. Rápida generación. t s Aplicada a sup. cuadrada Textura 1D Texturas

5 Tipos de texturas 01 de abril de 2017 Texturas en 2D: Es una imagen. Se podría pensar que se le está pegando una foto plana a una superficie en 3D. Es el tipo de textura más utilizado. Al igual que la textura en 1D, se compone de valores de color RGB y pueden incluir valores alfa (de transparencia). Texturas

6 Tipos de texturas 01 de abril de 2017 Texturas en 3D: No se pega una foto, sino que hay un volumen con información de color, el cual es asignado al objeto en 3D. El resultado visual es equivalente al que aparecería si 'esculpiéramos' el objeto. Se elimina la necesidad de definir nuevas texturas para el interior de la figura (al hacer clipping para ver el interior). Necesita mucha memoria. Se utiliza en juegos, visualización médica, etc. A partir de OpenGL 1.2 Texturas

7 Espacio de Parámetros e Interpolación de texturas
01 de abril de 2017 ¿Cómo se le asigna la textura plana al objeto? Las dimensiones del espacio de textura están normalizadas, de manera que todas sus coordenadas varían entre 0 y 1. s t Se realiza una asignación punto a punto. A cada vértice de cada primitiva se le asignan coordenadas {s,t} entre 0 y 1, definiendo un área de correspondencia entre el modelo y la textura que se mapea finalmente por interpolación. Texturas

8 Coordenadas {s,t} - Interpolación de textura
01 de abril de 2017 Estas áreas no son necesariamente iguales, sino que la textura se expande o contrae para cubrir la primitiva. En el interior de la primitiva se realiza una interpolación de las coordenadas de la textura. Texturas

9 Repetición de la textura
01 de abril de 2017 ¿Que ocurre cuando se referencia coordenadas de texturas con un valor mayor que 1 o menor que 0? Clamping: Permite repetir los téxels de los bordes de la textura cuando se referencia fuera de ella. Asigna las coordenadas de forma que: s = clamp(s,0,1); t = clamp(t,0,1) En Opengl: glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); Textura original Textura con Clamping Texturas

10 Repetición de la textura
01 de abril de 2017 Wrapping: Consiste en repetir la textura completa en la primitiva. La imagen de la textura está repetida varias veces. Permite trabajar con texturas mas chicas y ahorrar memoria. Asigna las coordenadas de forma que: s = s-int(s); t = t-int(t) En Opengl: glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); Textura original Textura con Wrapping Texturas

11 Modos de mezcla 01 de abril de 2017 Cuando aplicamos una textura debemos especificar como queremos que se mezcle con el color del objeto. glTexEnv() permite elegir entre 4 métodos (o environment parameters) que tienen como objetivo determinar el valor RGBA final de cada píxel a visualizar a partir del color de la superficie del objeto a texturizar (fragmento) y del color de la textura (téxel): - Replace (Sustitución) - Decal (Sustitución con transparencia) - Modulate (Modulación) - Blend (Mezcla) Texturas

12 Modos de mezcla 01 de abril de 2017 Replace (Sustitución): En este modo el color utilizado para el objeto es el de la textura. Decal: En este modo se diferencian dos casos. Si trabajamos con formato de textura RGB el color utilizado para el objeto es el de la textura. En cambio, con formato de textura RGBA, el color a utilizar es una mezcla del color de la superficie y el de la textura, predominando más uno y otro dependiendo del valor alpha de la textura. Texturas

13 Modos de mezcla 01 de abril de 2017 Modulate(Modulación): Permite ir escalando el color final entre el color original de la superficie y el negro, multiplica cada color de l objeto por el de la textura. También puede modular la transparencia (alpha) hasta hacer invisibles algunas partes del objeto. Multiplicar colores sirve para ciertos efectos especiales (matar o dejar vivo sólo un color) Texturas

14 Modos de mezcla 01 de abril de 2017 Blend (Mezcla): Se utiliza para mezclar los valores del color de la superficie con los de la textura, mediante un factor Cc que indica el peso relativo de la textura. Si la textura tiene alpha, los alpha se multiplican. Cc indica el peso de las componentes R, G, B y se define con GL_TEXTURE_ENV_COLOR. Texturas

15 Filtrado 01 de abril de 2017 Cuando la cantidad de píxeles no coincide con la cantidad de téxels aparecen efectos visuales que disminuyen la calidad del resultado, entonces se utilizan filtros. Magnificación: Cuando los téxels al ser proyectados sobre los objetos aparecen mayores que los píxeles de la imagen, y la textura se ve 'pixelada', como una 'cuadricula'. Minimización: Cuando los téxels proyectados son más pequeños que los píxeles y la textura parece cortada. Texturas

16 Filtrado 01 de abril de 2017 Para poder suavizar los defectos y adaptar las texturas, se aplica una serie de operaciones o filtros. Filtros de magnificación: indican cómo calcular el color de un píxel de la imagen cuando los téxels ocupan varios píxeles. Opengl define dos filtros: -GL_NEAREST (o puntual): se elige el punto de la textura más cercano a las coordenadas del píxel. Es el filtro por defecto y el menos costoso, pero produce el efecto de dentado. Texturas

17 Filtrado Filtros de magnificación:
01 de abril de 2017 Filtros de magnificación: -GL_LINEAR: se realiza una interpolación bilineal (promedio ponderado) entre los colores de una matriz de 2×2 téxels (los que están más cerca del centro del píxel evaluado) de forma que aparece la imagen suavizada, produciendo un resultado borroso, pero que elimina el dentado. 4 téxels ponderados píxel Utilización de filtro de magnificación: izq. puntual, der. lineal téxel Texturas

18 Filtrado 01 de abril de 2017 Filtros de Minimización: indican cómo calcular el color de un píxel de la imagen cuando los téxels son más pequeños que los píxeles. Opengl define dos filtros: -GL_NEAREST (o puntual): se elige el téxel situado en el centro del píxel. Problema: si la posición cambia ligeramente se producen los efectos de dentado y fluctuación de la textura. Texturas

19 Filtrado Filtros de Minimización:
01 de abril de 2017 Filtros de Minimización: -GL_LINEAR: Igual al filtro de magnificación lineal; se realiza una interpolación bilineal (ó promedio ponderado) entre los colores de una matriz de 2×2 texels cercanos al centro del píxel evaluado. Elimina el dentado. Texturas

20 Mipmapping 01 de abril de 2017 Problema: Cuando un objeto con textura se aleja de la posición del observador, la textura debe disminuir en tamaño en relación con la imagen proyectada. Mipmaps: Se guardan distintas versiones de la misma textura, con diferentes resoluciones. Mejora el rendimiento al utilizar versiones de menor resolución de la textura a medida que nos alejamos. Solucionan problemas de minimización. Tiene un consumo mayor de memoria. Texturas

21 Mipmapping con OpenGL 01 de abril de 2017 glTexImage2D(): Se deben proporcionar texturas de todos los tamaños en potencias de 2 tales que los tamaños estén comprendidos entre la máxima resolución y la resolución1x1. gluBuild2Dmipmaps(): Dada una única textura, genera automáticamente texturas para resoluciones menores. Durante la visualización se escoge dinámicamente cuál es el nivel del mipmap que hay que aplicar en cada caso (aquel en el que el tamaño del téxel proyectado sobre el objeto sea aproximadamente el de un píxel). MIPMAPS desactivados MIPMAPS activados Texturas

22 Mipmapping con OpenGL 01 de abril de 2017 Se usa la función glTexParameter() para establecer más opciones en los filtros de minimización. Los dos últimos son costosos en tiempo de ejecución. Texturas

23 Tipos de mapeo Mapeo Directo y Plano:
01 de abril de 2017 Mapeo Directo y Plano: Consiste en aplicar la textura como un plano, directamente sobre el objeto. Es el ideal para suelos, paredes y demás superficies lisas. No suelen obtener resultados apropiados para superficies que no sean planas. En OpenGL se define una normal al plano de aplicación que se mueve con la visual o con el objeto. Mapeo en dos partes: Se mapea la textura como si fuese una superficie 3D enrollada sobre el objeto, ya sea en forma cúbica, cilíndrica o esférica. Se define el método en cada dirección (S,T). Primero se mapea la textura sobre un objeto de referencia y luego se define como se mapea este sobre el objeto (O-Mapping). No está implementado en OpenGL en forma automática, hay que calcular y asignar coordenadas de textura a cada vértice. Texturas

24 Tipos de mapeo Mapeo cúbico:
01 de abril de 2017 Mapeo cúbico: Sobre el objeto de referencia, se proyecta la imagen de forma plana, pero aplicando la textura desde los tres ejes de coordenadas. Mapeo cúbico - Aplicación a superficie 3D Texturas

25 Tipos de mapeo Mapeo cilíndrico :
01 de abril de 2017 Mapeo cilíndrico : Es el más conveniente para objetos cilíndricos como tubos, troncos, etc. No se producen distorsiones porque simplemente envuelve al objeto de referencia siguiendo uno de sus ejes. Mapeo esférico: La textura se contrae en los polos de la imagen y se expande por el centro, por lo que las imágenes se distorsionan para adaptarse a la forma esférica. Es el ideal para objetos esféricos de superficie lisa, como balones, globos, etc. Mapeo cilíndrico Mapeo esférico Texturas

26 Tipos de mapeo: O-Mapping
01 de abril de 2017 Existen varias técnicas para mapear las superficies tridimensionales del objeto de referencia al objeto final: Reflected ray: Se traza un rayo desde el punto de vista del observador, el reflejo de éste sobre el objeto incidirá sobre la superficie intermedia, y así se decide qué puntos de la textura se corresponden con los del objeto. Texturas

27 Tipos de mapeo: O-Mapping
01 de abril de 2017 Object normal: Se calcula la normal de un punto del objeto, y el punto en el cual ésta corte a la superficie intermedia será el que le corresponde a la hora de aplicarle la textura. Object centroid: Se calcula una línea entre el centroide del objeto y un punto de este. El punto en el cual esta línea corte la superficie intermedia, será el que le corresponde al objeto. Object normal Object centroid Texturas

28 Environment Mapping 01 de abril de 2017 Añade realismo a una escena en la que un objeto recibe reflejos del entorno que tiene a su alrededor. Mapeo de entorno esférico: método más popular de environment mapping. Soportado por OpenGL. Las coordenadas de la textura se calculan por reflexión en las caras de la primitiva según un mapeo esférico. Texturas

29 Environment Mapping Mapeo de entorno esférico con OpenGL:
01 de abril de 2017 Mapeo de entorno esférico con OpenGL: Hay que crear un mapa de la textura apropiado (mapeo de textura esférico) y entonces hacer que OpenGL genere las coordenadas de la textura de forma automática. glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP) glEnable(GL_TEXTURE_GEN_S) Textura Mapeo de entorno esférico Texturas

30 Efectos especiales: Líneas de perfil
01 de abril de 2017 Se corta al objeto con un plano y se distribuye la textura en función de la distancia al plano. La normal al plano indica la orientación de la textura. OpenGL genera las coordenadas de textura automáticamente con glTexGen(). El plano queda definido por un punto P0(x0,y0,z0) y un vector n(a,b,c) ortogonal al plano (P - P0) . n = 0 ; d = ax0 + by0 + cz0 = n . P0 Textura 1D Mapeo con wrapping activado Texturas

31 Efectos especiales: Bump Mapping
01 de abril de 2017 La geometría del objeto no es afectada, solo se modifican sus normales para simular depresiones y picos en su superficie. Utiliza un espacio 2D de textura, que codifica vectores normales en lugar de color. Al mapear esta textura sobre una superficie, el vector normal de ésta se modifica según el valor encontrado en la textura. Texturas

32 Funciones de OpenGL glGenTextures() Aloca memoria. glBindTexture()
01 de abril de 2017 glGenTextures() Aloca memoria. glBindTexture() Selecciona una textura. glTexImage1D() y glTexImage2D() Define una textura unidimensional o bidimensional. glTexEnv() Selecciona parámetros de la textura (modos de mezcla). glTexParameter() Define parámetros de la textura (filtros, wrapping,etc). glTextCoord() Especifica la coordenada del punto en la textura. glTexGen() Generación automática de las coordenadas de textura. glTexSubImage2D() Sustituye una textura o parte de ella. Resulta menos costoso que crear una nueva. Texturas

33 Fin de la teoría ¿Preguntas?
01 de abril de 2017 ¿Preguntas? Utilizar OpenGL reference para comprender que hace cada comando. Bibliografía: OpenGL Programming Guide (Red Book) Rosalee Wolfe - DePaul Univ. - Teaching Texture Mapping Visually: Carlos Carrasco y Daniel Sanz - Univ. Salamanca - Mapeado de texturas (tema 11): Mark Killgard (el autor de GLUT) – Nvidia: David Green – Drexel Univ. (lecture 7): Texturas


Descargar ppt "Unidad IV: Modelado de la terminación superficial"

Presentaciones similares


Anuncios Google