330 likes | 487 Views
Aplicación de textura (“ Texture Mapping ”). Rhadamés Carmona Ultima revisión: 29/01/2004. Contenido. Introducción 1. Técnicas Básicas 2. Técnicas Generales 3. Dependientes del punto de visión 4. Bump Mapping. Aplicación de textura.
E N D
Aplicación de textura (“Texture Mapping”) Rhadamés Carmona Ultima revisión: 29/01/2004
Contenido Introducción 1. Técnicas Básicas 2. Técnicas Generales 3. Dependientes del punto de visión 4. Bump Mapping
Aplicación de textura Ayuda a dar apariencia más realística a las imágenes sintéticas (producto de un “rendering”) generadas por computadoras. Espacio de textura (s,t) Espacio objeto: Coordenadas de mundo (x,y,z) Espacio imagen (u,v) Mapeo de textura Rendering Asociar puntos de una superficie con una función de textura
Espacio de textura (s,t) Espacio objeto: Coordenadas de mundo (x,y,z) Espacio imagen (u,v) Mapeo de textura Rendering Aplicación de textura t s Por indepenencia de las dimensiones de las imágenes, el espacio de textura se encuentra normalizado en [0,1] para s y t. La textura puede ser unidimensional (s), bidimensional (s,t) o tridimensional (s,t,r).
Aplicación de textura • Se puede definir por ejemplo una aplicación de puntos (s,t) de una textura bidimensional a un objeto x,y,z. La aplicación puede definirse punto por punto. En la práctica, el objeto suele estar definido por un mallado de polígonos, en donde la correspondencia se define en los vértices de cada polígono, y se interpola en el resto del polígono.
Aplicación de textura • También puede definirse las coordenadas de textura en cualquier punto del objeto, si este es por ejemplo definido paramétricamente. Si el espacio de textura es s,t, y los parámetros de la función son s,t, la correspondencia puede hacerse fácilmente. Igualmente el objeto es discretizado en triángulos y caemos en el caso anterior.
Aplicación de textura Ejemplo de una ecuación Paramétrica 3D 0<=u,v<=6.28319 X(u,v)=COS(u)*u*(1.0+COS(v)/2.0) Y(u,v)=u/2.0*SIN(v) Z(u,v)=SIN(u)*u*(1.0+COS(v)/2.0)
Aplicación de textura 1D Texel interpolado Centro de pixel 0 1 Dominio de textura f(x) = Interpolación Lineal
Aplicación de textura 2D textura 2D t Fragmento texel s Interpolación bilineal Para muestrear el texel
Aplicación de textura 2D 1=0 1, 3<0,2>0 (1,1) p2 1, 2>0,3<0 p 2, 3>0,1<0 p 1=1, 2, 3=0 1, 2, 30 2=0 (0,0) p3 2, 3<0,1>0 p1 1, 2<0,3>0 1, 3>0,2<0 3=0 (s,t) Mapeo a un triángulo Coordenadas baricéntricas de p respecto a p1,...,pn
Aplicación de textura • GL_LINEAR versus GL_NEAREST Textura 4x4 Polígono de 100x100 pixels Polígono de 100x100 Pixels, con s,t en [0,1]
Aplicación de Textura • GL_CLAMP versus GL_REPEAT
Aplicación de textura Textura 4x4 GL_CLAMP_TO_BORDER GL_CLAMP Con coordenadas En [0,1] Con coordenadas En [-1,2]
Textura 3D t r s Aplicación de textura 3D Nubes Fuego Resonancia Interpolación trilineal
Aplicación de texturas • Magnificación versus minificación • Problemas con minificación… aliasing • Solución: mipmapping • Solución mejorada: mipmapping con interpolación trilineal
+ = Aplicación de Texturas:Multitexturas Utilizado en muchos casos para generar iluminación
Aplicación de textura básico:mapeo esférico (1,1) r (s,t) (0,0) Esfera definida paramétricamente (r,,) Mapeo a una esfera
Aplicación de textura básico: Mapeo cilíndrico r (1,1) A (s,t) (0,0) Cada punto de la supeficie del cilindro puede expresarse como (x,y,z)=(r.Cos, r.Sen, p), [0,2), p[0,A] Mapeo a un cilindro
Aplcación de textura básico:Textura a cuadrilátero (xMax,yMax,z0) (1,1) (s,t) Plano P, z=z0 (0,0) (xMin,yMin,z0) Mapeo a un plano: z=z0
Aplcación de textura básico:Mapeo planar De la forma más simple, se escala el objeto a [0,1] y se asigna como coordenadas de textura para cada (x,y,z) el valor (s,t)=(x,y). Se puede aplicar igualemnte con los planos x-z o y-z. s,t x,y,z
2. Técnicas Generales No hay una transformación directa entre los puntos del objeto y la función de textura (generalmente una imagen 2D). 2.1 Mapeo durante modelado 2.2 Mapeo a dos etapas
2.1 Mapeo durante modelado Es usado si el objeto puede ser obtenido a partir de deformaciones sobre las primitivas básicas (polígono, esfera, cilindro), cuyo mapeo si está definido directamente. T T-1
2.2 Mapeo a dos etapas No impone ninguna restricción sobre la topología del objeto. 1.- S-Mapping (Surface Mapping): Se realiza un mapeo sobre una superficie intermedia: • Una sección rectangular de un plano • Una superficie curva de una cilindro • Las caras de un cubo • La superficie de una esfera 2.- O-Mapping (Object Mapping): Se mapea la textura de la superficie intermedia hacia el objeto final. 4x4=16 Centroide del objeto Rayo de visión reflejado Normal de la superficie intermedia Normal del objeto
N v (x’,y’,z’) N (x’,y’,z’) (x,y,z) (x,y,z) Vector visión reflejado Normal del objeto (x’,y’,z’) (x,y,z) Centroide del objeto 2.2 Mapeo a dos etapas (s,t) S(x’,y’,z’) O(x,y,z) (x’,y’,z’) (x,y,z) Normal de la superficie intermedia
No tiene imagen en el cilindro S-Mapping cilíndrico + O-Mapping “normal del objeto” 2.2 Mapeo a dos etapas. Ejemplos. S-Mapping cilíndrico + O-Mapping “normal de la superficie intermedia” = “Shrinkwrap” S-Mapping cúbico + O-Mapping “centroide del objeto”
N v (x’,y’,z’) (x,y,z) Vector visión reflejado 3. Dependiente del punto de visión Lanzar rayos desde el punto de visión. Por reflexión Por refracción visión N Patrón de Textura
4. Bump Mapping Propuesta por James Blinn, 1978. Consiste en perturbar las normales según una función “Bump”, tal que, luego del “render”, el objeto parezca tener baches y chichones en la superficie, sin modificar la geometría. Esta técnica, da el efecto real de textura en un objeto, y no de “papel tapiz” como las otras técnicas.
4. Bump Mapping Supongamos que el objeto está definido paramétricamente como P(u,v)=(X(u,v), Y(u,v), Z(u,v)). Llamemos F(u,v) la función de perturbación. Los nuevos puntos Q(u,v) son perturbados en dirección de la normal N (nota: M es el gradiente, mientras que N la normal).
4. Bump Mapping La nueva normal puede calcularse como 0
4. Bump MappingCaso de estudio: esfera [0,2] [-, ] La expresión parámetrica de la esfera Derivadas parciales: La función de Bump será una imagen F(u,v), de dimensiones widthxheight. La derivada en un punto (u,v) lo podemos definir como diferencias finitas, con u=0..width-1 y v=0..height-1
4. Bump Mapping. Caso de estudio: esfera Mapeo entre puntos de F(u,v) y la esfera P(,):
4. Bump Mapping. Caso de estudio: esfera Para cada (x,y,z) sobre la esfera hacer N=(x,y,z); Normalizar(N); =arco_tangente(y/x); =arco_coseno(z/r); u=width* /(2*pi); v=height* /(pi)+0.5; dFu=(F[u+1,v]-F[u-1,v])/2; dFv=(F[u,v +1]-F[u,v -1])/2; dPu=(-r*Sen()*Sen(), r*Cos()*Sen(),0); dPv=(r*Cos()*Cos(), r*Sen()*Cos(),-r*Sen()); Nnew=N+dFu*Cross(N,dPv)+dFv*Cross(dPu,N); Normalizar(Nnew); Intensidad(x,y,z) = Mod_iluminación((x,y,z),Nnew); FinPara
4. Bump Mapping. Caso de estudio: esfera Imagen para el color Función “Bump” Se usó Mapeo planar Solo bump mapping Solo texture mapping ambas