Otros usos del mapeo de textura Texturas (2) - …cs.uns.edu.ar/cg/clasespdf/5.2-MasTexturas.pdf ·...

15
1 Texturas (2) + = Otros usos del mapeo de textura Los mapas de textura se usan para adicionar complejidad a una escena. Es más sencillo pintar o capturar una imagen que la geometría Modelar reflectancia Adicionar un mapa de textura a un parámetro Modelar luz Mapas de ambiente Mapas de luces Modelar geometría Bump maps Mapas de normales Mapas de desplazamiento Mapas de opacidad y billboards S. Castro, N. Gazcón CG 2015 Mapeo de Textura ¿Cómo se calcula la iluminación en cada punto del objeto? El valor de la iluminación no se calcula con ninguno de los métodos vistos sino que I se reemplaza por el valor de la textura. El reemplazo se hace para cada componente RGB. S. Castro, N. Gazcón CG 2015 I = T(s,t)I E El brillo especular es del color de la luz, no del objeto Mapeo de Textura Modulación por el coeficiente de reflexión El color de un objeto es el color de su componente de luz difusa; si se utiliza el método de Phong ¿cómo se calcularía la Iluminación?. S. Castro, N. Gazcón CG 2015 ¿I Phong = k a I a + f at I p (k d (L·N) + k s (R·V) n )? I Phong = k a I a + f at I p (T(s,t) * (L·N)+ k s (R·V) n ) Un ejemplo de Mapeo de textura ¿Qué realiza el siguiente programa de fragmentos? in vec3 normal; in vec3 luz; in vec2 texcoord; uniform sampler2D miTextura; out vec4 colorFrag; void main( ) { vec3 N = normalize(normal); vec3 L = normalize(luz); vec4 color = texture2D(miTextura, texcoord); float NdotL = dot(L, N); float difusa = 0.5 * NdotL + 0.5; colorFrag = color*vec4(vec3(difusa),1.0); } Un sampler encapsula un objeto de textura y todos sus parámetros. Los samplers se pasan de la aplicación a los shaders como variables uniformes. Los shaders de fragmentos usan texture*() para muestrear la textura del sampler* S. Castro, N. Gazcón CG 2015 Mapeo de Textura ¿Qué ocurre en este caso? S. Castro, N. Gazcón CG 2015 ¿Qué ocurre si utiliza el método de Cook y Torrance? ¿Como se ve afectada la componente especular?

Transcript of Otros usos del mapeo de textura Texturas (2) - …cs.uns.edu.ar/cg/clasespdf/5.2-MasTexturas.pdf ·...

1

Texturas (2)

+ =

Otros usos del mapeo de textura

Los mapas de textura se usan para adicionar complejidad a una escena.

Es más sencillo pintar o capturar una imagen que la geometría

Modelar reflectancia Adicionar un mapa de textura a un parámetro

Modelar luz Mapas de ambiente

Mapas de luces

Modelar geometría Bump maps

Mapas de normales

Mapas de desplazamiento

Mapas de opacidad y billboards

S. Castro, N. Gazcón CG 2015

Mapeo de Textura

• ¿Cómo se calcula la iluminación en cada punto del objeto?

• El valor de la iluminación no se calcula con ninguno de los métodos

vistos sino que I se reemplaza por el valor de la textura. El reemplazo

se hace para cada componente RGB.

S. Castro, N. Gazcón CG 2015

I = T(s,t)IE

El brillo especular es del color de la luz, no del objeto

Mapeo de Textura

• Modulación por el coeficiente de reflexión

El color de un objeto es el color de su componente de luz difusa;

si se utiliza el método de Phong ¿cómo se calcularía la

Iluminación?.

S. Castro, N. Gazcón CG 2015

¿IPhong = kaIa + fat Ip (kd (L·N) + ks (R·V)n)?

IPhong = kaIa + fat Ip (T(s,t) * (L·N)+ ks (R·V)n)

Un ejemplo de Mapeo de textura

¿Qué realiza el siguiente programa de fragmentos? …

in vec3 normal;

in vec3 luz;

in vec2 texcoord;

uniform sampler2D miTextura;

out vec4 colorFrag;

void main( )

{ vec3 N = normalize(normal);

vec3 L = normalize(luz);

vec4 color = texture2D(miTextura, texcoord);

float NdotL = dot(L, N);

float difusa = 0.5 * NdotL + 0.5;

colorFrag = color*vec4(vec3(difusa),1.0);

}

Un sampler encapsula un objeto de textura y todos sus parámetros. Los

samplers se pasan de la aplicación a los shaders como variables uniformes. Los

shaders de fragmentos usan texture*() para muestrear la textura del sampler*

S. Castro, N. Gazcón CG 2015

Mapeo de Textura

• ¿Qué ocurre en este caso?

S. Castro, N. Gazcón CG 2015

¿Qué ocurre si utiliza el método de Cook y Torrance?

¿Como se ve afectada la componente especular?

2

Mapas de Ambiente

Mapeo de Ambiente

S. Castro, N. Gazcón CG 2015

Los mapas de ambiente

crean una imagen del

ambiente que rodea al

objeto como se ve desde el

objeto mismo.

Mapeo de Ambiente

S. Castro, N. Gazcón CG 2015

El mapeo de ambiente puede realizarse tomando distintas superficies

intermedias.

De acuerdo a esto pueden realizarse distintos mapeos como el

mapeo cúbico, el esférico, …

Esto determina la forma de la superficie sobre la cual reside el mapa

y también cómo éste se indexa.

Mapeo de Ambiente

S. Castro, N. Gazcón CG 2015

Distintos mapas de ambiente

Mapeo de Ambiente

S. Castro, N. Gazcón CG 2015

Mapeo esférico

En un mapeo esférico de ambiente, la imagen

se proyecta primero sobre el interior de la

esfera y ésta constituye el mapa.

Luego el mapa se proyecta sobre el objeto o

los objetos que necesitan el mapeo de

ambiente y que son puestos dentro de la

esfera.

Mapeo de Ambiente

S. Castro, N. Gazcón CG 2015

Mapa Esférico

El mapa almacena la radiación que llega al objeto

3

Mapeo de Ambiente

S. Castro, N. Gazcón CG 2015

Mapa esférico

Mapeo de Ambiente

S. Castro, N. Gazcón CG 2015

Mapeo Esférico

Éste es un mapeo esférico

de ambiente.

Mapeo de Ambiente

S. Castro, N. Gazcón CG 2015

Mapas cúbicos

En el mapeo cúbico, 6 vistas diferentes representan una vista

simplificada del ambiente teniendo en cuenta cómo éste es visto

desde el objeto

Mapeo de Ambiente

S. Castro, N. Gazcón CG 2015

Mapas cúbicos

Mapeo de Ambiente

El cubo es el objeto

intermedio más

natural para una

habitación.

S. Castro, N. Gazcón CG 2015

Mapeo de Ambiente

S. Castro, N. Gazcón CG 2015

El cubo simplifica los cálculos

4

Un ejemplo de Mapeo de Ambiente

Un mapa cúbico consta de 6 imágenes de textura cuadradas que

constituyen un cubo centrado en el origen.

S. Castro, N. Gazcón CG 2015

Accederemos al mapa cúbico

mediante un vector. Este vector se

origina en el centro del cubo e

intersecta una de las 6 caras del

mapa.

El resultado del acceso a esta

textura es el color filtrado en el

punto de intersección del vector

con una de las caras del cubo.

El mapa cúbico se genera

ubicándose en el centro del objeto

y tomando las 6 vistas.

Un ejemplo de Mapeo de Ambiente

Cuando se mire desde un punto de vista una superficie altamente

reflectiva, reflejará en ese punto el rayo incidente I en el

ambiente.

S. Castro, N. Gazcón CG 2015

Las características del rayo

reflejado dependen de este

rayo incidente I y de la normal

a la superficie en el punto. Lo

que se ve no es la superficie

misma sino cómo es el

ambiente en la dirección del

rayo reflejado.

Un ejemplo de Mapeo de ambiente

S. Castro, N. Gazcón CG 2015

Veamos cómo escribimos nuestros programas de vértices y de

fragmentos.

El programa de vértices calcula el rayo incidente y el reflejado.

El programa de fragmentos busca en el mapa de ambiente y lo usa

para adicionar la reflexión al color final del fragmento.

Un ejemplo de Mapeo de ambiente

Programa de vértices …

out vec3 reflectVector;

void main( )

{

vec3 ECposition = vec3( uModelViewMatrix * aVertex );

vec3 EyeDir = ECposition - posEye; // vector from eye to pt

vec3 Normal = normalize( uNormalMatrix * aNormal );

vec3 reflectVector = reflect( EyeDir, Normal );

gl_Position = uModelViewProjectionMatrix * aVertex;

}

Programa de fragmentos …

uniform samplerCube ReflectUnit;

in vec3 reflectVector;

out vec4 fFragColor;

void main( )

{

vec4 newcolor = textureCube( ReflectUnit, reflectVector );

fFragColor = newcolor;

}

S. Castro, N. Gazcón CG 2015

Un ejemplo de Mapeo de ambiente

S. Castro, N. Gazcón CG 2015

¿Cómo se obtiene la siguiente imagen?

¿Aplica mapeo de texturas para obtener las imágenes que se

muestran debajo? ¿Cómo las obtiene?

Mapas de Luces

5

Mapeo de Luces

S. Castro, N. Gazcón CG 2015

Mapas de Luces

Textura x Mapa Textura

Mapa

Mapeo de Luces

S. Castro, N. Gazcón CG 2015

Mapas de Luces

Modulan el color con un mapa de luces

Mapeo de Luces

Mapas de Luces

S. Castro, N. Gazcón CG 2015

Mapeo de Luces

Mapas de Luces

S. Castro, N. Gazcón CG 2015

Mapa de luces

Mapeo de Textura de Radiancia Textura de Radiancia+Mapa de Luces

Textura Proyectiva

S. Castro, N. Gazcón CG 2015

Se trata a la textura como la imagen proyectada por un

proyector.

No es necesario especificar explicitamente coordenadas de

textura y es una buena alternativa para renderizar variaciones

debido a la iluminación.

Textura Proyectiva

S. Castro, N. Gazcón CG 2015

Se usa el mapa de profundidad visto desde la luz para

determinar si el punto muestreado es visible.

Punto en sombra visible

para el ojo pero no para

la luz.

Ojo Luz

6

Bump Mapping

S. Castro, N. Gazcón CG 2015

Bump Mapping

Bump Mapping

S. Castro, N. Gazcón CG 2015

El mapeo de textura básico pinta sobre una superficie suave.

¿Cómo hacer que esa superficie parezca rugosa?

- Modelar la superficie con muchos polígonos pequeños

- Alterar las normales antes de calcular la iluminación

Bump Mapping

S. Castro, N. Gazcón CG 2015

El mapa de textura es un mapa que guarda la

alteración que deben sufrir las normales.

La orientación de las normales de la superficie se

alteran durante el proceso de sombreado.

Bump Mapping

S. Castro, N. Gazcón CG 2015

Cuando se renderiza el objeto la textura parece ser 3D. Son una forma

efectiva para crear texturas realistas y complejas, especialmente en objetos

que no están demasiado cercanos a la cámara o en objetos que deben

aparecer con forma algo irregular.

Cuando los objetos están demasiado cercanos a la cámara se observa la

silueta de los objetos sin alteraciones porque la geometría NO se altera

Bump Mapping

S. Castro, N. Gazcón CG 2015

7

Bump Mapping

S. Castro, N. Gazcón CG 2015

El embossing es un tipo de bump mapping.

Bump Mapping

S. Castro, N. Gazcón CG 2015

El canal alfa también puede usarse como mapa de textura para realizar

este tipo de mapeo. Así, se asociará mayor o menor deformación de la

superficie de acuerdo a los valores almacenados en el mapa.

Bump Mapping

S. Castro, N. Gazcón CG 2015

Bump map y mapa de color a la derecha.

Bump Mapping

S. Castro, N. Gazcón CG 2015

El bump mapping combina la iluminación por fragmento con las

perturbaciones a las normales de la superficie (suministradas en una

textura) para simular las interacciones de la luz sobre superficies con

elevaciones.

Esto se logra sin afectar la superficie. Se capturan las características

detalladas de la superficie sin aumentar la complejidad geométrica del

objeto. Las ventajas son:

• Alto nivel de complejidad visual sin adicionar más geometría

• Codificación del detalle de la superficie en texturas en lugar de

diseñar modelos altamente detallados.

• Se pueden aplicar diferentes mapas bump a diferentes instancias del

mismo modelo para dar a cada instancia una apariencia distinta de la

superficie.

Bump Mapping

S. Castro, N. Gazcón CG 2015

El bump map codifica el cambio en la dirección del vector

normal.

¿En qué sistema de coordenadas?

Actualmente esto se realiza en el espacio de coordenadas local

a la superficie (también denominado espacio tangente).

Bump Mapping

S. Castro, N. Gazcón CG 2015

En el espacio de coordenadas local a la superficie:

• Cada punto tiene coordenadas (0,0,0)

• En este punto:

• el vector normal sin perturbar tiene coordenadas (0,0,1)

• el vector tangente tiene coordenadas (1,0,0)

• el vector bitangente tiene coordenadas (0,1,0)

Es necesario almacenar (o calcular) el vector tangente en cada

punto

8

Bump Mapping

S. Castro, N. Gazcón CG 2015

Un tipo de bump mapping perturba el vector normal en las

direcciones de la tangente y la bitangente de modo tal que:

- Un canal de textura codifica la

magnitud de la perturbación en la

dirección tangente.

- Un canal de textura codifica la

magnitud de la perturbación en la

dirección bitangente.

Bump Mapping

S. Castro, N. Gazcón CG 2015

Un tipo de bump mapping perturba el vector normal en las

direcciones de la tangente y la bitangente de modo tal que:

- Un canal de textura codifica la

magnitud de la perturbación en la

dirección tangente.

- Un canal de textura codifica la

magnitud de la perturbación en la

dirección bitangente.

Bump Mapping

S. Castro, N. Gazcón CG 2015

0______128______255

sin perturbación

0______128______255

perturbación +

0______128______255

perturbación -

Un tipo de bump mapping perturba el vector normal en las

direcciones de la tangente y la bitangente de modo tal que:

Bump Mapping

Si la perturbación de la normal se define en coordenadas locales

de la superficie, tenemos que:

• Transformar los vectores de luz y de vista a las coordenadas

locales de la superficie o

• Transformar el vector normal perturbado al sistema de

coordenadas en que se lleve a cabo la iluminación

S. Castro, N. Gazcón CG 2015

Bump Mapping

Dados los vectores te (tangente) be (bitangente) y ne (normal) en

coordenadas del ojo, la matriz

transforma vectores que están en coordenadas locales de la

superficie a coordenadas del ojo y la matriz de rotación:

transforma vectores de coordenadas del ojo a coordenadas

locales a la superficie.

S. Castro, N. Gazcón CG 2015

|||

|||eyeeyeeyeeye

sup nbtR

eye

eye

eye

sup

eye

eye

sup

n

b

t

RRT

Un ejemplo de Bump Mapping

S. Castro, N. Gazcón CG 2015

En el programa de vértices: • Obtener los vectores L y V en coordenadas del ojo

• Obtener los vectores normal, tangente y bitangente en

coordenadas del ojo

• Formar la matriz

• Calcular las direcciones de vista y de la luz en coordenadas

locales de la superficie como variables de salida

En el programa de fragmentos: • Buscar la perturbación en la textura

• Construir el vector normal perturbado en coordenadas locales de

la superficie

• Calcular el color del fragmento usando la normal perturbada y las

direcciones de la luz y de vista

9

Bump Mapping

S. Castro, N. Gazcón CG 2015

Bump Mapping

• P es un punto sobre la superficie y tiene normal N. B=B(u,v)

para todo u,v entre 0 y un máximo. Es el mapa de bumps.

S. Castro, N. Gazcón CG 2015

NvuBPP

PPN vu

,

DNPBPBN

NPBPNBN

NBPNBPN

vvuu

uvvu

vvuu

2

,,2

,,

tsBtsBB

tsBtsBB

v

u

Variación de la normal en

dirección u y v

Mapas de normales

Normal Mapping

S. Castro, N. Gazcón CG 2015

El concepto de Normal Mapping es similar al de Bump Mapping:

la alteración de las normales. Los valores RGB del mapa se

interpretan como las normales y no como la perturbación de las

normales.

Mapa de

altura

Mapa de

normales

Normal Mapping

S. Castro, N. Gazcón CG 2015

La textura almacena las tres componentes de la normal perturbada en

lugar de las dos componentes de la perturbación.

Normal Mapping

S. Castro, N. Gazcón CG 2015

La mayoría de los mapas de normales se derivan de los campos de

altura. En lugar de codificar vectores, una textura de campos de altura

codifica la altura o elevación de cada texel.

10

Normal Mapping

S. Castro, N. Gazcón CG 2015

La conversión del campo de altura a un mapa de normales es un

proceso automático que se realiza en una etapa de pre-

procesamiento.

Normal Mapping

S. Castro, N. Gazcón CG 2015

Para cada texel en el campo de altura se muestrea la altura de dicho

texel así como los texels de arriba y de la derecha del texel dado. El

vector normal es la versión normalizada del producto vectorial de los

dos vectores diferencia (1,0,ha-ht) y (0,1, hd-ht).

El producto vectorial de estos dos vectores es un tercer vector

perpendicular a la superficie y que apunta hacia afuera de ésta.

Normalizando este vector creamos una normal adecuada para el

normal mapping.

y esta normal debe normalizarse

y almacenarse en una textura

RGB sin signo.

tdta hhhhnormal ,1,0,0,1

Normal Mapping

S. Castro, N. Gazcón CG 2015

La textura almacena las tres componentes de la normal perturbada en

lugar de las dos componentes de la perturbación.

El canal rojo codifica la desviación en x, el verde la desviación en y y el

azul la desviación en z.

Como los valores de color son reales entre 0 y 1 y cada una de las

componentes de las normales normalizadas están en el rango [-1,1],

debemos mapear los valores de las normales al rango [0,1].

Esto se realiza con:

compCol=0.5*compNorm+0.5

El mapeo inverso lo realizamos con compNorm=2*(compCol-0.5)

Mapas de desplazamiento

Mapeo de la Textura

S. Castro, N. Gazcón CG 2015

Mapas de desplazamiento

Estos mapas literalmente desplazan la

superficie, cambiando la geometría del objeto.

Mapeo de la Textura

S. Castro, N. Gazcón CG 2015 from www.robot-frog.com

Mapas de desplazamiento

Para almacenar el mapa de

desplazamiento pueden utiizarse

los colores de la textura 2D o el

canal alfa.

Se usa en general para la

generación de terrenos.

11

Mapeo de la Textura

S. Castro, N. Gazcón CG 2015

Mapas de desplazamiento

Los mapas pueden mezclarse con

métodos procedurales.

Mapeo de la Textura

S. Castro, N. Gazcón CG 2015

Mapas de desplazamiento

Estos mapas literalmente desplazan la superficie, cambiando la geometría

del objeto.

Mapeo de la Textura

S. Castro, N. Gazcón CG 2015

Mapas de desplazamiento

Estos mapas alteran la geometría del objeto cambiando tanto las normales a la

superficie como la posición 3D de los puntos de la superficie misma.

Los mapas de desplazamiento se usan habitualmente para crear terrenos 3D

que incluyen montañas y valles.

Los mapas de terrenos pueden construirse con mapas

de desplazamiento que están basados en imágenes

fotográficas de vistas aéreas en las que las elevaciones

están codificadas con distintos tonos de grises. Los

terrenos tridimensionales también pueden crearse

generando imágenes 2D con técnicas fractales y

usando estas imágenes como mapas de

desplazamiento.

Mapeo de la Textura

S. Castro, N. Gazcón CG 2015

Bump mapping Mapas de desplazamiento

Mapas de transparencia y billboards

Mapas de Transparencia

S. Castro, N. Gazcón CG 2015

Mapas de transparencias

Una estrategia para simular transparencia consiste en aplicar mapas de

transparencia a la superficie de un objeto 3D.

Un mapa de transparencia consiste en una imagen bidimensional que se aplica

sobre la superficie del objeto 3D con el propósito de hacer todo o parte del

objeto transparente. Algunos programas usan los valores de negro para indicar

zonas completamente transparentes; otros usan el blanco para tal fin. Los

tonos de grises indican objetos traslúcidos.

12

Mapas de Transparencia

S. Castro, N. Gazcón CG 2015

Blending del mapa

Estas técnicas determinan la forma en que distintas capas de la

superficie, incluyendo los mapas de textura, se mezclan con la

superfice de un objeto, así como con otras capas de la misma.

El blending de un mapa de imagen con otras capas de la superficie

puede controlarse de distintas formas.

Algunas de las formas incluyen blending total, blending por tipo de

iluminación, blending con el canal alfa y blending con técnicas de

matting.

Mapas de Transparencia

S. Castro, N. Gazcón CG 2015

Mapas de Transparencia

Usar el canal alfa para que determinadas

partes de la textura sean transparentes. Es

más barato que el modelado explícito.

Canales RGB

Canal alfa

Mapas de Transparencia

S. Castro, N. Gazcón CG 2015

Blending del mapa

El blending puede usarse entonces para mostrar o

cubrir distintas porciones de las capas que

constituyen la superficie de un objeto.

En este ejemplo, el resultado final puede

obtenerse:

- Poniendo un mapa de imagen y su canal alfa

sobre una esfera azul, mostrándose así el azul sólo

a través de los pixels negros del canal alfa.

- Con un mapa más simple sin canal alfa y usando

los pixels blancos en el mapa para dejar ver la

superficie azul que está debajo.

Billboards

S. Castro, N. Gazcón CG 2015

Reemplazar geometría compleja con polígonos de textura mapeados

con texturas transparentes.

Pipeline 3D

S. Castro, N. Gazcón CG 2015

Espacios

Objeto Mundo 3D Ojo Clipping CND Pantalla

Rotar Rotar Escalar División w

Transformación

Trasladar Trasladar Trasladar Viewport

Perspectiva

Rasterización

Operaciones

sobre frag

Operaciones

raster

Mostrar fb

Escalar

Rotar

¿Dónde se adicionan las texturas?

Pipeline 3D

S. Castro, N. Gazcón CG 2015

Espacios

Objeto Mundo 3D Ojo Clipping CND Pantalla

Rotar Rotar Escalar División w

Transformación

Trasladar Trasladar Trasladar Viewport

Perspectiva

Rasterización

Operaciones

sobre frag

Operaciones

raster

Mostrar fb

Escalar

Rotar

¿Dónde se adicionan las texturas?

13

Pipeline 3D

S. Castro, N. Gazcón CG 2015

Espacios

Objeto Mundo 3D Ojo Clipping CND Pantalla

Rotar Rotar Escalar División w

Transformación

Trasladar Trasladar Trasladar Viewport

Perspectiva

Rasterización

Operaciones

sobre frag

Operaciones

raster

Mostrar fb

Escalar

Rotar

Se definen las coordenadas de textura (parametrización)

Pipeline 3D

S. Castro, N. Gazcón CG 2015

Espacios

Objeto Mundo 3D Ojo Clipping CND Pantalla

Rotar Rotar Escalar División w

Transformación

Trasladar Trasladar Trasladar Viewport

Perspectiva

Rasterización

Operaciones

sobre frag

Operaciones

raster

Mostrar fb

Escalar

Rotar

¿Dónde se adicionan las texturas?

Pipeline 3D

S. Castro, N. Gazcón CG 2015

Espacios

Objeto Mundo 3D Ojo Clipping CND Pantalla

Rotar Rotar Escalar División w

Transformación

Trasladar Trasladar Trasladar Viewport

Perspectiva

Rasterización

Operaciones

sobre frag

Operaciones

raster

Mostrar fb

Escalar

Rotar

Se determinan las coord. de textura para cada fragmento y ...

Pipeline 3D

S. Castro, N. Gazcón CG 2015

Espacios

Objeto Mundo 3D Ojo Clipping CND Pantalla

Rotar Rotar Escalar División w

Transformación

Trasladar Trasladar Trasladar Viewport

Perspectiva

Rasterización

Operaciones

sobre frag

Operaciones

raster

Mostrar fb

Escalar

Rotar

... se tiene acceso a la textura para procesar los fragmentos.

CO CO CM COjo COjo

Pantalla 3D (CND)

T.Model.

Pipeline 3D

S. Castro, N. Gazcón CG 2015

CP CP CP

T.Mundo T.Vista Iluminación T.Perspectiva

CClip

División

Perspectiva (/w)

T. Viewport

Rasterización Proc.fragmento,

Texturado, Ilum

fragmento, …

Operaciones

Raster

CP

Procesamiento Geométrico (de vértices)

Procesamiento de Fragmentos

Texturas Volumétricas

14

Texturas volumétricas

S. Castro, N. Gazcón CG 2015

Las texturas volumétricas o texturas sólidas son texturas que están definidas

para un volumen. Éstas pueden ser mapas 3D o estar definidas proceduralmente.

El efecto sugiere un bloque sólido de material, más que una superficie. Si se

corta un cubo de textura sólida, la nueva superficie exhibirá los cortes en el

grano.

En el mundo real, la mayoría de las texturas

correspondientes a distintos materiales tiene

cualidades 3D. La veta de la madera, por

ejemplo, no es completamente plana como la

fórmica sino que tiene pequeñas variaciones

que atrapan la luz de modos más complejos

que los que pueden generarse por un simple

mapeo de textura.

Texturas volumétricas

S. Castro, N. Gazcón CG 2015

¿Es necesaria una forma de mapeo intermedia?

Texturas volumétricas

S. Castro, N. Gazcón CG 2015

¿Cuál es el mapeo en este caso?

En la tetera arriba-izquierda los

anillos se producen tomando las

coordenadas x,y para calcular la

distancia del centro del objeto. Si

es par, rojo; si no, blanco ¿En las

otras?

Texturas volumétricas

S. Castro, N. Gazcón CG 2015

Mod(x,a)/a (Sen(x)+1)/2

Las funciones siguientes están en el rango 0-1. Una de ellas es una

rampa. ¿Cuál? ¿Por qué?

Para generar una textura se puede usar

una función en lugar de una imagen.

// vertex shader

in vec4 posV;

out vec3 pos;

...

pos = posV.xyz;

...

// fragment shader

in vec3 pos;

...

color = sin(pos.x)*sin(pos.y);

...

Texturas volumétricas

S. Castro, N. Gazcón CG 2015

Texturas volumétricas

S. Castro, N. Gazcón CG 2015

Ruido de reticulado Ruido de gradiente

15

Texturas volumétricas

S. Castro, N. Gazcón CG 2015

Interpolación trilineal de la textura.

Texturas volumétricas

S. Castro, N. Gazcón CG 2015

Objeto original Ruido trilineal Ruido Tricuadrático

No debemos preocuparnos en cómo mapear el ruido al objeto. En

cada punto (x,y,z) utilizamos el valor de la textura en la coordenada

correspondiente.

Texturas volumétricas

S. Castro, N. Gazcón CG 2015

Este valor usado como

índice en una tabla look up

consistente de :

Ejemplo de mármol

Texturas volumétricas

S. Castro, N. Gazcón CG 2015

Textura de Turbulencia (ruido de distintas frecuencias, sumado)

Para obtener mármol podemos usar la turbulencia como operando en una

función.

)),,(**sin( zyxTurbAxfMármol

La frecuencia f de la función sin controla la cantidad y el grosor de las venas y la

amplitud (A) de la Turbulencia controla la distorsión de las mismas.

Bibliografía

S. Castro, N. Gazcón CG 2015

ACM SIGGRAPH Proceedings

Angel, E., Shreiner, D. Interactive Computer Graphics: A top-down approach

with shader-based OpenGL, Addison Wesley, 2011, 6th. Ed.

Bailey, M., Cunningham, S., Graphics Shaders: Theory and Practice, CRC

Press, 2012, 2nd Edition.

Foley, J., van Dam, A., Feiner, S. y Hughes, J., Computer Graphics. Principles

and Practice, Addison Wesley, 1992, 2nd Edition.

Hearn, D., Baker, M.P., Computer Graphics, C Version, Prentice Hall Inc.,

2003, 3rd Edition.

Hill, F. Jr, Kelley, S., Computer Graphics Using OpenGL, Prentice Hall., 2006,

3rd Ed.

Rost, R., Licea-Kane, B., Ginsburg, D., Kessenich, J., OpenGL Shading

Language, Addison-Wesley Professional, 3rd Edition, 2009.

Watt, A., Watt, M., Advanced Animation and Rendering Techniques: Theory

and Practice, Addison-Wesley Publishing Company, 1993.

S. Castro, N. Gazcón CG 2015