Texturas - Departamento de...

47
Dpto. de Informática Fac. Cs. Físico-Mat. y Nat. Universidad Nacional De San Luis Argentina Texturas Texturas

Transcript of Texturas - Departamento de...

Dpto. de InformáticaFac. Cs. Físico-Mat. y Nat.

Universidad Nacional De San LuisArgentina

TexturasTexturas

Rio 14 2 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Superficies con detalle

Embellecimiento de las Superficies

• Procesamieno de Texturas (cada vez más en hardware).– pegar o pintar una textura sobre una superficie para proveer detalle a la misma,

(ej. patrones de ladrillos, cielo con nubes, etc.).

– pensar en una textura como un papel envolvente pero hecho de goma.– mapear una textura o arreglo de patrones de pixels

sobre una superficie para reemplazar (o modificar)el color original.

• Es la estrategia que da sustento a los simuladores de vuelo (ej., tierra, árboles) y juegos (paredes).

Rio 14 3 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Tipos de TexturasDimensiones

- 2D -

• Utiliza un mapa de pixels como referencia.• Debe decidir cómo “pegar” el pixmap sobre el objeto.• Es equivalente a pintar sobre la superficie del objeto.

- 3D -• Presume que un valor de textura existe en cualquier

lado en el dominio del objeto. • Debe decidir que color debe ir sobre la superficie del

objeto.

• Es equivalente es esculpir o grabar un objeto desde un bloque sólido de material.

• Utiliza técnicas procedurales.

Rio 14 4 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

• Las texturas de los objetos reales usualmente exhiben modulación de color y superficie.

• La mayoría de los métodos modulan el color de una superficie usando motifvos repetitivos o imágenes de fotogramas grabados.

Efectos Visuales:

• Mapping de texturas No Paramétricas– El tamaño de la textura y su orientación

son fijas.– No se relacionan con el tamaño y orientación

del polígono.– Genera un efecto de cortador de galleta.

• Mapping de texturas Paramétricas– Separa el “espacio de la textura” y el

“espacio de la pantalla”.– Deforma el polígono texturado en el

espacio de pantalla.– Da textura al polígono en el espacio de

la textura.

Texturas 2D

Rio 14 5 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Texturas Paramétricas

Una textura es cualquier característica evaluada sobre un punto usando sólamente la información local del punto.

• El proceso total va desde el dominio de la textura hasta el dominio de la pantalla.

• Éste puede ser descripto por dos transformaciones:– Parametrización de la superficie: toma el patrón de textura 2D y lo “pega” sobre el objeto.– Proyección: mapping estandar del objeto a la pantalla.

• Problemas:– Se debe inventar una parametrización adaptable (los objetos estandares son objetos de mallas

poligonales).– Anti-aliasing.

Rio 14 6 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Texturas ParamétricasConsideraciones

• Qué atributos o parámetros del modelo u objeto deben ser modulados para producir el efecto de textura desado?

– El detalle se encuentra en los parámetros modulados. – Qué clase de parámetros?

* Color de la Superficie (colores ambiental, difuso y especular).

* Exponente Especular.

* Transparencia, Reflectividad (ej., nubes, vidrio grabado).

* Perturbación del vector Normal (“chichones”).

* Luces proyectadas y sombras. Reflexión especular y difusa (Mapping Ambiental).

* Datos a visualizar (ej., temperatura, stress, elevación).

• Cómo debe realizarse el mapping de la textura? Dado que una textura está definida en un dominio de la textura y un objeto existe como dato en el espacio del mundo, es necesario definir un mapping entre estos dominios.

• El mapping de la textura requiere tratamiento especial anti-aliasing debido a que tiende a producir peores efectos de aliasing que otras técnicas asociadas con la síntesis de imágenes.

Rio 14 7 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Mapping de TexturaMotivación

• Porqué es necesario mapear una textura? – es necesario lograr detalle en las superficies de los modelos con el objetivo de que parezcan mas

complejos.– es necesario disminuir los efectos de “plastico brillante” producidos por el modelo de reflexión de

Phong.

• Solución Costosa: agregar mayor detalle al modelo+ detalle incorporado como parte del modelo.– las herramientas de modelado no son buenas para el agregado de detalle.– el acto de modelar requiere mayor tiempo.– el modelo requiere mayor espacio de memoria.– el detalle complejo no puede ser reusado en otros objetos.

• Solución Eficiente: mapear una “textura” sobre el modelo+ los mappings de textura pueden ser reusados por otros modelos.+ Los mappings de textura usan espacio extra de memoria, pero pueden ser compartidos, y se

pueden utilizar técnicas de reducción de overhead (compresión, caching).+ Los mappings pueden realizarse rápidamente.+ La creación y colocación de los mappings puede hacerse en forma intuitiva

(ej., existen herramientas para ajustar los mappings, para pintar directamente sobre el objeto).– Los mappings de textura no afectan directamente la geometría del objeto.

Rio 14 8 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Mappings

• Una función es un mapping:– Las funciones mapean valores de un subconjunto de dominio a otro subconjunto de un co-dominio

(llamado rango).– Cada valor en el dominio será mapeado a un valor en el co-dominio.

• Se puede transformar un espacio en otro por medio de una función– Para intersectar rayos se utiliza una transformación lineal que mueve puntos y vectores entre

espacios necesarios.

– Primero se mapea los puntos del espacio de pantalla a puntos del espacio de cámara normalizado.– Luego, se mapea los rayos del espacio de cámara normalizado a rayos del mundo no normalizado.

– Finalmente, se mapea rayos del mundo no normalizado a rayos del espacio de los objetos no transformados de manera que se pueda computar los puntos de intersección en el espacio de los objetos.

• Tenemos puntos sobre una superficie en el espacio del objeto (el dominio).

• Es necesario conseguir valores de un mapa de textura (el co-dominio).• Es necesario utilizar un mapping inverso.

• Qué función/nes se debe utilizar?

Mapping de Textura

Rio 14 9 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Mapping de Texturas 2DDefinición

• El mapping de textura es el proceso de mapear un punto geométrico a un color en un mapa de textura.

• Lo deseado es poder mapear cualquier geometría en cualquier pixmap de dimensión arbitraria.

• Se considera que:– una textura vive en su propio sistema de coordenadas de imagen

abstracto parametrizado por (u,v) en el rango([0..1], [0..1]):

– éste puede ser enrollado alrededor de diferentes superficies paramétricas:

Rio 14 10 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Mapping de texturas 2DIdea Básica

• Hacer en dos pasos:– Mapear un punto sobre una geometría arbitraria a un punto de un cuadrado unitario

abstracto representando un pixmap concreto.

– Mapear el punto sobre el cuadrado unitario abstracto a un punto sobre un pixmap concreto de dimension arbitraria (foto digitalizada, clip art o una imagen computarizada previamente con alguna herramienta).

• El segundo paso es fácil;vemos el primero.

Discrete domainContinuous domain

Rio 14 11 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

u

v

fototex

wtex

htex

tex

Ejemplos de pixmaps

Mapping de texturas 2D

Rio 14 12 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Ejemplos de pixmaps

u

v

Pixmap proceduraltex

wtex

tex

htex

Mapping de texturas 2D

Rio 14 13 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Paso 2: De un cuadrado unitario a un pixmap

• Un ejemplo 2D: mapping desde un cuadrado unitario u,v a un mapa de textura-

• Paso 1: transformar un punto sobre un plano de textura continuo abstracto a un punto en un mapa de textura discreto.

• Paso 2: obtener el color en la imagen de textura del punto transformado.

• En el ejemplo de arriba:

1.0, 1.0v

u0.0, 0.0

plano de textura unitario

100, 100

0, 0 mapa de textura(un pixmap arbitrario)

(0.0, 0.0) => (0, 0)

(1.0, 1.0) => (100, 100)

(0.5, 0.5) => (50, 50)

Mapping de texturas 2D

Rio 14 14 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

• En general, para un punto (u, v) sobre un plano unitario, el correspondiente punto en el espacio de la imagen es

(u × pix-map width, v × pix-map height)

• Pero, existen infinitos puntos en el plano unitario.... de modo que se generan errores de muestreo; el plano uv es la versión continua del pixmap que sirve como mapa de textura.

• El cuadrado unitario uv actua como una hoja de goma que se estira quare y envuelve al objeto a ser texturizado

– el mapping uv es la clave, no importa el pixmap usado – los pixels indexados pueden ser transitorios

(una película que se esta observando en una pared dentrode la escena)

Mapping de texturas 2D

Plano unitario con todos los puntos mapeados en la textura

Rio 14 15 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Paso 1: Mapping de un punto 3D - Raytracing de Texturas

• Usando el disparo de un rayo se obtiene un punto en el espacio del objeto, (x, y, z).

• En el mapping de textura el objetivo es ir desde el punto (x, y, z), a un color.

• Ya conocemos como mapear un punto 2D (u, v) en el cuadrado unitario a un color en el pixmap; por consiguiente solo se necesita mapear (x, y, z) a (u, v).

• Consideremos tres casos canónicos:– planos

– cilindros

– esferas

• Nota: es fácil calcular la proyección desde (x, y, z) a (u, v) a partir del espacio del objeto no transformado.

– es mucho más fácil proyectar desde la definición de un objeto simple en el espacio del objeto (x, y, z) al espacio de textura (u, v).

Mapping de texturas 2D

Rio 14 16 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Mapping de Textura para PlanosUn plano unitario

• Las coordenadas de textura estan asociadas con cada esquina en el plano.

w

h

utex

vtex

Rio 14 17 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Mapping de Textura para Cilindros Mapping de un círculo

• Convertir un punto P en el perímetro a un ángulo:

• El radio del círculo no es necesariamente de longitud unitaria– Es necesario utilizar la arcotangente antes que el seno o el coseno (la arcotangente solamente

considera la división de las longitudes) de Pz /Px

• La función estándard atan2 genera el círculo entero (valores entre −π to π, mientras que atan retorna solamente la mitad del círculo)

– Se debe ir alrededor del círculo en la dirección en que la imagen será mapead, atan2 retorna los ángulos en el rango 0 to − π, luego cambia abruptamente a +π y retorna a 0

Rio 14 18 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Mapping de Textura para Cilindros

Mapping de textura para cilindros y conos

• Imaginar un cilindro estándar o cono como una pila de círculos– utilizar la posición del punto en el perímetro circular para determinar u.– utilizar la altura del punto en la pila para determinar v.– mapear las tapas superior e inferior en forma separada como si fueran planos.

• La parte fácil: calcular v.– La altura de un punto en el espacio del objeto, en el rango [-.5, .5], es mapeado a v en el rango [0, 1].

• Calcular u: mapear puntos en un perímetro circular a valores de u entre 0 y 1; 0 radiantes es 0, 2π radiantes es 1.

• Luego u = θ/2π• Éstos mappings son arbitrarios: cualquier función que mapea los ángulos alrededor de un

cilindro (θ) en un rango de 0 a 1 puede funcionar!.

Rio 14 19 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Mapping de Textura para Esferas

ν=φπ

0 . 5

r

φ=sin -1 P y

r −π2≤φ

π2 radius , =r

• Imaginar una esfera como unapila de círculos de radio variante

• P es el punto en la superficie de la esfera unitaria• Definir v

• Definir u– calcular u como para el cilindro (utilizar el mismo mapping para el cono).

– si v=0 o 1, existe unicidad y u debería tener un valor específico (ej., u = 0.5).– es difícil encontrar estos casos cuando se trabaja con precisión de punto flotante.

Rio 14 20 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Geometrías Complejas

Cómo pegar un patrón de textura sobre un objeto de malla de polígonos?

• El mapping de textura de una primitiva geométrica simple es fácil.– cómo hacer un mapeo de textura sobre formas más complejas?

• Los objetos de mallas poligonales son aproximaciones discontinuas de un objeto real.

• La parametrización de superficies de este tipo no está definida.

• Supongamos que tenemos una forma compleja “simple” : una casa.

• Cómo deberíamos mapear su textura?

Rio 14 21 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Geometrías Complejas

• Es necesario decidir como pegar el pixmap en el objeto.• Se podría texturizar polígono por polígono en cada cara de la casa (simple, pues son planos).

• Sin embargo, causa discontinuidades en los bordes de los polígonos.– Es necesario una textura sin discontinuidades en los bordes.

• Enfoque intuitivo: reducir a un problema ya resuelto. Utilizando una superficie intermedia sobre la cual la textura es inicialmente proyectada.

Rio 14 22 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Mapping de textura a un casa con una esfera

• Enfoque intuitivo: colocar una esfera envolvente alrededor del objeto complejo.

• El proceso de texturado tiene 2 etapas: encontrar el punto de intersección del rayo en el espacio del objeto y convertirlo a coordenadas uv.

• Los cálculos de intersección con la esfera es esfuerzo extra. Si se esta en una estapa de mapeo de textura, significa que ya se ha encontrado el punto de intersección con la forma compleja.

• Queda mapear la superficie 3D intermedia sobre la superficie del objeto.

• Se puede intentar cuatro mappings posibles:1. La intersección del rayo de visualización reflejado en (x,y,z) con la superficie intermedia T´

(mapping del medio ambiente).

2. La intersección de la normal de la superficie en (x,y,z) con T´.

3. La intersección de la línea que va desde el centroide a T´ a través de (x,y,z).

4. La intersección de una línea desde (x,y,z) a T´ cuya orientación está dada por la normal de la superficie en la superficie intermedia.

Geometrías Complejas

Rio 14 23 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Mapping de textura a un casa con una esfera

• Cuatro mappings posibles a utilizar:1. La intersección del rayo de visualización reflejado en (x,y,z) con la superficie intermedia T´

(mapping del medio ambiente).

2. La intersección del a normal de la superficie en (x,y,z) con T´.

Geometrías Complejas

(1) Rayo Reflejado (2) Normal del objeto

Rio 14 24 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Mapping de textura a un casa con una esfera

• Cuatro mappings posibles a utilizar:3. La intersección de una línea que va desde el centroide a T´ a través de (x,y,z) .

4. La intersección de una línea desde (x,y,z) hacia T´ cuya orientación está dada por la normal de la superficie en la superficie intermedia.

Geometrías Complejas

(3) Centroide del objeto (4) Normal de la superficie intermedia

Rio 14 25 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Mapping de textura a un casa con una esfera

• Simplificar encontrando la intersección de la esfera en lugar de la casa.

Luego convertirlo fácilmente a las coordenadas uv.

Geometrías Complejas

Paso 1: intersectar el rayo con la esfera envolvente

Paso 2:calcular las coordenadas uv del punto de intersección

Rio 14 26 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

• Enfoque no intuitivo: tratar cada punto sobre el objeto complejo como un punto de la esfera, y proyectar utilizando mapping uv esferico.

• Observar que una esfera tiene radio constante, y no así la casa. La distancia desde el centro de la casa al punto de intersección (radio) cambia según donde se encuentre el punto.

• Primero, calcular el punto de intersección en el espacio del objeto con el objeto geometrico (casa).

• Luego, utilizar el punto de intersección en el espacio del objeto para calcular las coordenades uv de la esfera en el punto utilizando proyeccion esférica.

Geometrías Complejas

Rio 14 27 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

• Cómo decidir cuál es el radio que se debe utilizar para la esfera en el mapping uv? Las intersecciones con la casa suceden a diferentes radios.

• Respuesta: el mapping esférico de (x,y,z) a (u,v) presentado era en función del radio, pero no asume que la esfera tiene radio unitario.

• Se debe utilizar siempre una esfera con su centro en el centro del modelo (casa) y con un radio igual a la distancia desde el centro al punto de intersección actual.

Geometrías Complejas

Rio 14 28 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Selección de funciones de aproximación

• Se utilizó un mapping uv esférico para simplificar el proceso.

Sin embargo, cualquier técnica de mapping puede ser utilizada.

• Cada tipo de proyección uv tiene sus propios inconvenientes– esférica: deformación en los polos de la esfera– cilíndrica: discontinuidades en los bordes de las tapas– planar: la componente y es ignorada en el mapping uv

• El intercambio de técnicas de proyección uv permite que los inconvenientes de una puedan ser reducidos con otra. El usuario debe decidir cual le resulta mas favorable.

Geometrías Complejas

Esfera mapeada con proyección esférica

Esfera mapeada con proyección planar

Rio 14 29 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Ejemplos

• Plano como superficie intermedia.

Geometrías Complejas

Rio 14 30 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Ejemplos

• Cilindro como superficie intermedia.

Geometrías Complejas

Rio 14 31 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Ejemplos

• Esfera como superficie intermedia.

Geometrías Complejas

Rio 14 32 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Ejemplos

• Diferentes superficies intermedias.

Geometrías Complejas

Rio 14 33 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Rio 14 34 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Rio 14 35 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Transformaciones

• El mapa de textura debe ser transformado junto con el objeto en el espacio del mundo.– ej., si la textura mapeada de una esfera es escalada 2.0 en y, luego el mapa de textura se debe

estirar en un factor de 2.0 en y también.

Consideraciones

Rio 14 36 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

• La parte computacionalmente difícil es cubrir grandes áreas de muestras con pocos pixels:

• Varios métodos:– Fuerza bruta (simplemente sumar).– Mip maps– Summed Area Tables

con aliasing sin aliasing

Mip Maps

Consideraciones

Aliasing

Rio 14 37 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Mapping de Texturas 3D

• La textura 3D es obtenida por medio de generación procedural.• Las coordenadas en el espacio del objeto son utilizadas para indexar un procedimiento que

define el ámbito de textura 3D del punto.

• Los objetos reciben una textura en sus superficies en un manera “coherente”.

Rio 14 38 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Mapping de Texturas 3DEjemplos

Rio 14 39 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Mapping del Medio Ambiente

• Se refiere al proceso de reflejar en un objeto brillante el medio ambiente circundante.

• Diferente del mapping de textura “normal”. • El patrón observado en el objeto es función del vector de visualización. A medida que el

objeto se mueve, la superficie cambia.• Trabaja muy bien con un único objeto.• Se puede implementar en hardware con algunas modificaciones.• El trazador de rayos se puede extender para manejar refracciones también.

Rio 14 40 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Mapeo del Medio Ambiente

• Suponer una caja imaginaria que circunda el objeto en cuestión.• Fácil de de producir con una pipeline de rendering.• Posible de producir con fotografías.• Resolución “Uniform”.• Cálculo simple de las coordenadas

de textura.

Rio 14 41 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

• Fotografía de una bola reflectiva.• Reflección indexada por la normal.• Mapea el campo de vision total a un círculo.• La resolución depende de la orientación, máxima si es frontal.• Similar a una cámara con lente de pescado.

Mapeo del Medio Ambiente

Rio 14 42 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Mapping de Bultos/granos• Realizar el texturizado de un objeto cuya textura es tosca, nunca se ve bien; la iluminación

siempre sale mal.• Un truco: utilizar un arreglo de valores que perturben las normales de la superficie (calcular

el gradiente entre los valores y sumarlos a la normal).• Luego evaluar la ecuación de iluminación con las normales perturbadas.• El efecto a lo largo de la superficie es convincente,

pero los bordes de la silueta aparecen perturbados.• Ejemplo: una frutilla:

Rio 14 43 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Mapping de Bultos/granos

f(u,v)

Rio 14 44 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Mapping de Bultos/granos

Rio 14 45 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Mapping de Bultos/granos

El papel de estaño en la obra “El beso” de Hershey se ve muy sintético…

Rio 14 46 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas

Mapping de Bultos/granos

Objeto sin Bump mapping La textura de bultos codifica normales o desviaciones de la normal

Objeto sin Bump mapping Objeto con Bump mapping

Rio 14 47 - Roberto Guerrero @ 2014

Simulación de la Apariencia - TexturasSimulación de la Apariencia - Texturas