aplicación de textura (“texture mapping”) rhadamés carmona ultima revisión: 29/01/2004
TRANSCRIPT
Aplicación de textura (“Texture Mapping”)
Rhadamés Carmona
Ultima revisión: 29/01/2004
ContenidoIntroducción1. Técnicas Básicas2. Técnicas Generales3. Dependientes del punto de visión4. 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 detextura (s,t)
Espacio objeto: Coordenadasde mundo (x,y,z)
Espacio imagen (u,v)
Mapeode textura Rendering
Asociar puntos de una superficie con una función de textura
Aplicación de textura
Espacio detextura (s,t)
Espacio objeto: Coordenadasde mundo (x,y,z)
Espacio imagen (u,v)
Mapeode textura Rendering
s
t
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
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)
Ejemplo de una ecuaciónParamétrica 3D
0<=u,v<=6.28319
Aplicación de textura 1D
Centro de pixel
0 1
Dominio de textura
Texelinterpolado
f(x) = ][*][*)1( rightAtleftAt
)1(* nxx
xleft
xright leftxt
Interpolación Lineal
Aplicación de textura 2D
Fragmento
textura 2D
s
t
texel
Interpolación bilinealPara muestrear el texel
Aplicación de textura 2D
(0,0)
(1,1)
(s,t)
Mapeo a un triángulo
n
ii
1
1
n
iii p.p
1
Coordenadas baricéntricasde p respecto a p1,...,pn
1, 2<0,3>0
1, 2, 30
1, 3<0,2>0
p1p3
p2
1=1, 2, 3=0
1, 3>0,2<0
1, 2>0,3<0
2, 3<0,1>0
2, 3>0,1<0
2=0
3=0
1=0
pp
),,(
),,(
321
211 ppparea
ppparea
),,(
),,(
321
312 ppparea
ppparea
),,(
),,(
321
213 ppparea
ppparea
111
),,( yyy
xxx
cba
cba
cbaarea
Aplicación de textura
GL_LINEAR versus GL_NEAREST
Textura 4x4
Polígono de 100x100pixels
Polígono de 100x100Pixels, 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 coordenadasEn [0,1]
Con coordenadasEn [-1,2]
Aplicación de textura 3D
s
t
r
Textura 3D
Interpolación trilineal
NubesFuegoResonancia
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
1. Aplicación de textura básico:mapeo esférico
(r,,)
(0,0)
(1,1)
(s,t)
Mapeo a una esfera
)1,0[2
)2,0[ s
)1,0[5.0)2/,2/[ t
Esfera definida paramétricamente
),,(),( rCosSenrSenSenrCosP
r
1. Aplicación de textura básico: Mapeo cilíndrico
(0,0)
(1,1)
(s,t)
Mapeo a un cilindro
r
A
Cada punto de la supeficie del cilindro puede expresarse como (x,y,z)=(r.Cos, r.Sen, p), [0,2), p[0,A]
)1,0[2
)2,0[ s
)1,0[),0[ A
ptAp
1. Aplcación de textura básico:Textura a cuadrilátero
(0,0)
(1,1)
(s,t)
Mapeo a un plano: z=z0
(xMin,yMin,z0)
(xMax,yMax,z0)
)(
,)(
),(),(yMinyMax
y
xMinxMax
xtsPyx
Plano P, z=z0
1. Aplcación de textura básico:Mapeo planar
x,y,zs,t
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.
2. Técnicas GeneralesNo hay una transformación directa entre los puntos delobjeto y la función de textura (generalmente una imagen 2D).
2.2 Mapeo 2.2 Mapeo a dos etapasa dos etapas
2.1 Mapeo 2.1 Mapeo durante durante modeladomodelado
2.1 Mapeo durante modeladoEs 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 etapasNo impone ninguna restricción sobre la topología del objeto.
1.- S-Mapping (Surface Mapping): Se realiza un mapeo sobre una superficie intermedia:
2.- O-Mapping (Object Mapping): Se mapea la textura de lasuperficie intermedia hacia el objeto final.
•Una sección rectangular de un plano•Una superficie curva de una cilindro
•Las caras de un cubo•La superficie de una esfera
Rayo de visiónreflejado
Normal del objeto
Centroide delobjeto
Normal de lasuperficie intermedia
4x4=16
2.2 Mapeo a dos etapas
(s,t) S(x’,y’,z’) O(x,y,z)
Normal delobjeto
N (x’,y’,z’)
(x,y,z)
v
Vector visiónreflejado
N(x’,y’,z’)
(x,y,z)
Centroide delobjeto
(x’,y’,z’)
(x,y,z)
Normal de la superficieintermedia
(x’,y’,z’)
(x,y,z)
2.2 Mapeo a dos etapas. Ejemplos.
S-Mapping cilíndrico+
O-Mapping “normal del objeto”
No tiene imagen en el cilindro
S-Mapping cilíndrico+
O-Mapping “normal de la superficie
intermedia”=
“Shrinkwrap”
S-Mapping cúbico+
O-Mapping “centroide del objeto”
3. Dependiente del punto de visión
Lanzar rayos desde el punto de visión.
Por reflexión Por refracción
v
Vector visiónreflejado
N(x’,y’,z’)
(x,y,z)
Patrón de Textura
visiónN
4. Bump MappingPropuesta por James Blinn, 1978. Consiste en perturbar las normales según una función “Bump”, tal que, luegodel “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, yno de “papel tapiz” como las otras técnicas.
4. Bump MappingSupongamos que el objeto está definido paramétricamentecomo 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).
),().,(),(),(
),().,(),(),( vuNvuFvuP
vuM
vuMvuFvuPvuQ
v
vuP
u
vuPvuM
),(),(
),(
4. Bump Mapping
),(),(),(),(
),(),(
),(
),(),(),(
),(),(),(),(
),(),(),(),(
),(.),(),(
),(.),(),(
),().,(),(.
),(),(),().,(),(.
),(),(
),().,(),(),().,(),(
),(),(),(
vuNu
vuP
v
vuF
v
vuPvuN
u
vuFvuM
vuNvuNu
vuFvuN
u
vuP
v
vuF
v
vuPvuN
u
vuF
v
vuP
u
vuP
vuNv
vuF
v
vuPvuN
u
vuF
u
vuP
v
vuNvuFvuN
v
vuF
v
vuP
u
vuMvuFvuN
u
vuF
u
vuP
vuNvuFvuPv
vuNvuFvuPu
v
vuQ
u
vuQvuM new
0
La nueva normal puede calcularse como
4. Bump MappingCaso de estudio: esferaLa expresión parámetrica de la esfera
),,(),( rCosSenrSenSenrCosP
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
Derivadas parciales:
)0,,(),(
SenrCosSenrSenP
),,(),(
rSenCosrSenCosrCosP
[0,2][-, ]
4. Bump Mapping. Caso de estudio: esfera
Mapeo entre puntos de F(u,v) y la esfera P(,):
2
*,
2
*),(
heightwidthvu
2
),1(),1(),( vuFvuF
u
vuF
2
)1,()1,(),(
vuFvuF
v
vuF
4. Bump Mapping. Caso de estudio: esfera4. Bump Mapping. Caso de estudio: esfera
Para cada (x,y,z) sobre la esfera hacerN=(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: esfera4. Bump Mapping. Caso de estudio: esferaFunción “Bump” Imagen para el color
Se usóMapeo planar
Solo bump mapping Solo texture mapping ambas