Académique Documents
Professionnel Documents
Culture Documents
Transformaciones 3D
Introduccin a la Computacin Grfica
Andrea Rueda
[ ]
Traslacin 1 0 tx
0 1 ty
0 0 1
x
y
[ ]
Rotacin cos sin 0
sin cos 0
0 0 1
x
Escala y
[ ]
sx 0 0
0 sy 0
0 0 1
x
Introduccin a 3D
Introduccin a 3D
Hasta ahora:
- dos coordenadas.
- figuras planas.
x
Introduccin a 3D
Hasta ahora: Introducir realismo:
- dos coordenadas. - nueva coordenada de
- figuras planas. profundidad.
- representacin de
volumen.
y
y
x z
Introduccin a 3D
http://www.falloutsoftware.com/tutorials/gl/gl0.htm
Introduccin a 3D
Sistema cartesiano de coordenadas 3D:
+y
-z
-x +x
observador
-y
+z
Introduccin a 3D
Orientacin del sistema de coordenadas:
Regla de la mano derecha:
con los dedos de la mano barriendo desde el
eje x hacia el eje y, el pulgar apunta al eje z.
(en contra de las manecillas del reloj)
http://www.ntu.edu.sg/home/ehchua/programming/opengl/CG_BasicsTheory.html
Introduccin a 3D
Sistemas de coordenadas de referencia:
Espacio de coordenadas del objeto.
Espacio de coordenadas universal (coodenadas del
modelo).
Espacio de coordenadas de la cmara
(coordenadas de la vista).
Espacio de coordenadas de la pantalla (espacio de
recorte).
Introduccin a 3D
Espacio de coordenadas del objeto:
Sistema de coordenadas local de cada objeto
geomtrico.
http://www.matrix44.net/cms/notes/opengl-3d-graphics/coordinate-systems-in-opengl
Introduccin a 3D
Espacio de coordenadas universal:
Ubicacin del objeto en el espacio, con
respecto a otros objetos.
(puede implicar aplicar transformaciones)
y
z
Introduccin a 3D
Espacio de coordenadas de la cmara:
Cmara: algo abstracto ubicado en el eje z
positivo y apunta al eje z negativo.
Mover la cmara hacia atrs implica mover los
objetos hacia adelante.
Se aplican transformaciones de rotacin,
traslacin y escala (matriz de vista) sobre los
elementos en el espacio de coordenadas
universal.
Introduccin a 3D
Espacio de coordenadas de la pantalla:
Traduccin del sistema de coordenadas 3D de
la cmara al sistema de coordenadas 2D de la
pantalla.
Se utiliza una proyeccin: ortogrfica (sin
distorsin de perspectiva) o de perspectiva
(como vemos los humanos).
Introduccin a 3D
Sistemas de coordenadas de referencia:
matriz de matriz de
modelado vista
espacio del objeto espacio universal
matriz de
proyeccin
espacio de la cmara espacio de la pantalla
http://www.matrix44.net/cms/notes/opengl-3d-graphics/coordinate-systems-in-opengl
Introduccin a 3D
Sistemas de coordenadas de referencia:
Vrtices del objeto estn en el sistema de
coordenadas del objeto.
se transforman al espacio universal utilizando la
matriz de transformacin de modelado.
Los vrtices estn ahora en el espacio universal
(para posicionar los dems elementos).
se transforman al espacio de la cmara
utilizando la matriz de transformacin de vista .
Introduccin a 3D
Sistemas de coordenadas de referencia:
Los vrtices estn ahora en el espacio de la
cmara (viendo la escena a travs de la cmara).
se transforman al espacio de la pantalla
utilizando la matriz de transformacin de
proyeccin.
Los vrtices estn ahora en el espacio de la
pantalla (en la ventana de visualizacin).
Introduccin a 3D
Vrtice:
Unidad que permite la especificacin de
diferentes primitivas:
- Posicin: en 3D {x, y, z}.
- Color: RGB (rojo, verde, azul) o RGBA (rojo,
verde, azul, alfa).
- Normal al vrtice: diferenciar caras anteriores
y posteriores {nx, ny, nz}.
- Textura: coordenadas de imagen de textura.
Introduccin a 3D
Vrtices:
http://www.ntu.edu.sg/home/ehchua/programming/opengl/CG_BasicsTheory.html
Introduccin a 3D
Vector normal:
Describe la orientacin de la superficie de un
polgono en el espacio (regla de la mano
derecha).
En computacin grfica, facilita la
determinacin de la visibilidad de los objetos y
la aplicacin de procesos de iluminacin.
Se puede calcular:
A partir de la ecuacin del plano.
Utilizando el producto vectorial.
Introduccin a 3D
Ecuacin general de un plano:
Ax + By +Cz + D=0
{x k , y k , z k } k =1,2 ,3
(A/ D) x k +(B / D) y k +(C / D) z k =1
Introduccin a 3D
Ecuacin general de un plano:
Sistema de ecuaciones:
A= y 1 (z 2z 3)+ y 2 (z 3z 1 )+ y 3 ( z 1z 2 )
B=z 1( x 2 x 3 )+ z 2 (x 3 x 1)+ z 3 ( x1 x 2 )
C= x 1 ( y 2 y 3 )+ x 2 ( y 3 y 1 )+ x 3 ( y 1 y 2 )
D=x 1 ( y 2 z 3 y 3 z 2 )x 2 ( y 3 z 1 y 1 z 3 )
x 3 ( y 1 z 2 y 2 z 1 )
Introduccin a 3D
Ecuacin general de un plano:
Prueba delante-detrs para un punto (x,y,z)
que no se encuentre en el plano.
Ax + By +Cz + D0
z
Introduccin a 3D
Producto vectorial:
Seleccionar 3 posiciones de vrtices V1, V2 y
V3, tomadas en sentido contrario a las
manecillas del reloj.
Construir dos vectores: de V1 a V2 y de V1 a V3
La normal se calcula con:
N =(V 2V 1)(V 3V 1)
Transformaciones 3D
Transformacin de modelado (transformacin
local, transformacin universal):
Lleva cada uno de los objetos al espacio de
coordenadas universal.
espacio del
objeto (xi,yi,zi)
espacio universal
(x,y,z)
http://www.ntu.edu.sg/home/ehchua/programming/opengl/CG_BasicsTheory.html
Transformaciones 3D
Transformacin de modelado:
- Escala: cambio de tamao del objeto.
- Rotacin: alineacin de ejes.
- Traslacin: mover el origen.
[ ][ ][ ]
x' 1 0 0 tx x
y' = 0 1 0 ty y
z' 0 0 1 tz z
1 0 0 0 1 1
Transformaciones 3D
Traslacin 3D:
y
(x',y',z')
T=(tx,ty,tz)
(x,y,z) x
z
Transformaciones 3D
Traslacin inversa 3D:
[][ ][ ]
x 1 0 0 t x x '
y =0 1 0 t y y '
z 0 0 1 t z z '
1 0 0 0 1 1
Transformaciones 3D
Escala 3D:
[ ][ ][ ]
x' sx 0 0 0 x
y' = 0 sy 0 0 y
z' 0 0 sz 0 z
1 0 0 0 1 1
Transformaciones 3D
Escala 3D:
y
z
Transformaciones 3D
Escala inversa 3D:
[][ ][ ]
x 1/ s x 0 0 0 x'
y = 0 1 /s y 0 0
y'
z 0 0 1 /s z 0 z'
1 0 0 0 1 1
Transformaciones 3D
Escala 3D:
Con respecto a cualquier posicin fija (xf,yf,zf) :
1. Trasladar el punto fijo al origen.
2. Escalar con respecto al origen.
3. Trasladar el punto fijo de vuelta a su posicin
original.
Transformaciones 3D
Escala 3D:
Con respecto a cualquier posicin fija (xf,yf,zf).
y y
(xf,yf,zf) (xf,yf,zf)
x x
z z
Posicin original Traslacin
Transformaciones 3D
Escala 3D:
Con respecto a cualquier posicin fija (xf,yf,zf).
y y
(xf,yf,zf) (xf,yf,zf)
x x
z z
Escala Traslacin inversa
Transformaciones 3D
Escala 3D:
Con respecto a cualquier posicin fija (xf,yf,zf).
(x , y , z ) (x ' , y ' , z ' )
1
P ' =TST P
[ ][ ][ ]
x' s x 0 0 ( 1s x ) x f x
y ' = 0 s y 0 (1s y ) y f y
z' 0 0 s z (1s z ) z f z
1 0 0 0 1 1
Transformaciones 3D
Rotacin 3D:
Rotaciones paralelas a los ejes cartesianos:
Rotacin sobre eje z (exactamente igual a 2D).
Rotacin sobre eje x.
Rotacin sobre eje y.
y y y
x x x
z z z
Transformaciones 3D
Rotacin 3D:
Rotacin del eje z:
(x , y , z ) (x ' , y ' , z ' )
P ' = R z ( )P
[ ][ ][ ]
x' cos sin 0 0 x
y ' = sin cos 0 0 y
z' 0 0 1 0 z
1 0 0 0 1 1
Transformaciones 3D
Rotacin 3D:
Rotacin del eje x (permutacin x y z x):
(x , y , z ) (x ' , y ' , z ' )
P ' = R x ()P
[ ][ ][ ]
x' 1 0 0 0 x
y ' = 0 cos sin 0 y
z' 0 sin cos 0 z
1 0 0 0 1 1
Transformaciones 3D
Rotacin 3D:
Rotacin del eje y (permutacin x y z x):
(x , y , z ) (x ' , y ' , z ' )
P ' = R y ()P
[ ][ ][ ]
x' cos 0 sin 0 x
y' = 0 1 0 0 y
z' sin 0 cos 0 z
1 0 0 0 1 1
Transformaciones 3D
Rotacin 3D:
Rotaciones sobre un eje paralelo a un eje de
coordenadas:
1. Trasladar el objeto para hacer coincidir el eje
de rotacin con el eje de coordenadas.
2. Rotar sobre el eje de coordenadas.
3. Trasladar el objeto para que el eje de
rotacin retorne a su posicin original.
1
P ' =T R x ( )TP
Transformaciones 3D
Rotacin 3D:
Rotaciones sobre un eje paralelo a un eje de
coordenadas.
y y
eje de rotacin
eje de rotacin
z x z x
eje de rotacin
eje de rotacin
z x z x
z x z x
z x z x
z x z x
[ ]
u x1 ' u x2 ' u x3 ' 0
u y1 ' u y2 ' u y3 ' 0
R=
(0,0,0) u z1 ' u z2 ' u z3 ' 0
y' 0 0 0 1
z x
uy'
x'
(x0,y0,z0) ux'
uz'
z'
Transformaciones 3D
Transformaciones en OpenGL:
- Traslacin:
glTranslate*(tx,ty,tz);
- Rotacin:
glRotate*(theta,vx,vy,vz);
- Escala:
glScale*(sx,sy,sz);
Sufijos (*): (f) real, (d) real de doble precisin.
Transformaciones 3D
Operaciones con matrices en OpenGL:
Adems de fijar la matriz del modo proyeccin,
fijar la matriz para las transformaciones
geomtricas (transformacin de modelado)
glMatrixMode(GL_MODELVIEW);
glPushMatrix()
Copia la matriz actual y aade esa copia al tope
de la pila (recordar donde est).
glPopMatrix()
Descartar la matriz en el tope de la pila
(regresar a dnde estaba).
Referencias
D. Hearn, M.P. Baker. Grficos por computadora con
OpenGL, 3a edicin. Pearson Prentice Hall, 2006.
J.D. Foley, A. van Dam, S.K. Feiner, J.F. Hughes.
Computer graphics: principles and practice, 2nd edition in
C. Addison-Wesley, 1996.
www.matrix44.net/cms/notes/opengl-3d-
graphics/coordinate-systems-in-opengl
www.falloutsoftware.com/tutorials/gl/gl0.htm
www.ntu.edu.sg/home/ehchua/programming/opengl/CG_B
asicsTheory.html
http://nehe.gamedev.net/