Vous êtes sur la page 1sur 60

Introduccin a 3D

Transformaciones 3D
Introduccin a la Computacin Grfica

Andrea Rueda

Pontificia Universidad Javeriana


Departamento de Ingeniera de Sistemas
Transformaciones 2D
y

[ ]
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

Visualizacin de los objetos aprovechando la


capacidad del cerebro de interpretar la
profundidad.
Introduccin a 3D
Reconocer objetos como 3D?
Incorporacin de perspectiva: todos los objetos
ubicados lejos del observador se ven ms
pequeos comparados con objetos cercanos al
observador.

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,y,z} cualquier punto del plano.


A,B,C,D: parmetros del plano describen
sus propiedades espaciales.
Introduccin a 3D
Ecuacin general de un plano:
Parmetros del plano pueden calcularse a
partir de un sistema de ecuaciones, utilizando
tres puntos coplanares no colineales
(seleccionados en sentido contrario a las
manecillas del reloj).

{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

Ax + By +Cz + D<0 (x,y,z) est detrs del plano

Ax + By +Cz + D>0 (x,y,z) est delante del plano


Introduccin a 3D
Ecuacin general de un plano:
Vector normal: perpendicular al plano (regla de
la mano derecha) y componentes cartesianas
{A,B,C}.
y
N = {A,B,C}

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.

Transformacin lineal (rotacin y escala):


preserva la suma vectorial y la multiplicacin por
un escalar.
Transformacin afn (lineal y traslacin):
preserva lneas rectas y relaciones de distancia.
Transformaciones 3D
Traslacin 3D:

(x , y , z ) (x ' , y ' , z ' )


P ' =TP

[ ][ ][ ]
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 , y , z ) (x ' , y ' , z ' )


1
P =T P '

[][ ][ ]
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 , y , z ) (x ' , y ' , z ' )


P ' = SP

[ ][ ][ ]
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 , y , z ) (x ' , y ' , z ' )


1
P =S P '

[][ ][ ]
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

Posicin original Traslacin


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

Rotacin Traslacin inversa


Transformaciones 3D
Rotacin 3D:
Rotaciones sobre un eje no alineado con los
ejes de coordenadas:
1. Trasladar el objeto para que el eje de rotacin
pase a travs del origen de coordenadas.
2. Rotar el objeto para que el eje de rotacin se
alinee con el eje de coordenadas.
3. Rotar sobre el eje de coordenadas.
4. Aplicar la rotacin inversa para devolver el eje de
rotacin a su orientacin original.
5. Trasladar el objeto para que el eje de rotacin
retorne a su posicin original.
Transformaciones 3D
Rotacin 3D:
Rotaciones sobre un eje no alineado con los
ejes de coordenadas.
y eje de rotacin
y eje de rotacin

z x z x

Posicin original Traslacin al origen


Transformaciones 3D
Rotacin 3D:
Rotaciones sobre un eje no alineado con los
ejes de coordenadas.
y eje de rotacin
y eje de rotacin

z x z x

Rotacin hacia el eje Rotacin sobre el eje


Transformaciones 3D
Rotacin 3D:
Rotaciones sobre un eje no alineado con los
ejes de coordenadas.
y eje de rotacin
y eje de rotacin

z x z x

Rotacin inversa Traslacin inversa


Transformaciones 3D
Reflexin 3D:
Con respecto a un eje de reflexin:
Equivalente a rotacin de 180 sobre dicho eje.
Con respecto a un plano de reflexin:
Equivalente a rotacin de 180 en un espacio
cuatridimensional.
Plano de coordenadas como plano de reflexin:
cambiar el signo de la coordenada perpendicular.
- Ejemplo: reflexin sobre el plano xy cambiar de
signo la coordenada z.
Transformaciones 3D
Inclinacin 3D:
Se aplican a lo largo de un eje, de manera
anloga a la inclinacin 2D.
Ejemplo: inclinacin a lo largo del eje z:
requiere parmetros de inclinacin shzx y shzy,
stos alteran las coordenadas x y y,
proporcionalmente desde un punto zref,
mientras que la coordenada z no cambia.
Transformaciones 3D
Transformaciones entre sistemas de
coordenadas: RT T (x 0, y 0, z 0)
y

[ ]
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);

llamados a transformaciones generan matrices


que se multiplican por la matriz actual.
- asignar la matriz identidad:
glLoadIdentity();
Transformaciones 3D
Operaciones con matrices en OpenGL:
- asignar otra matriz:
glLoadMatrix*(elements16);
siendo elements16 una matriz de 4x4.
- concatenar una matriz con la actual:
glMultMatrix*(elements16);

Sufijos (*): (f) real, (d) real de doble precisin.


Transformaciones 3D
Ejercicio:
- Descargar el cdigo de construccin de
figuras 3D:
sophia.javeriana.edu.co/~rueda-andrea/intrCoG
r/docs/figuras3D.cpp
- Analizar su funcionamiento, y modificarlo para
cambiar las posiciones y colores de las figuras.
- Algunos de los vrtices para construir cada
una de las caras se repiten, modificar el cdigo
para usar un arreglo de vrtices.
Transformaciones 3D
Pila de matrices:
modelview
Transformaciones 3D
Pila de matrices:
til para la construccin de modelos jerrquicos.
Ejemplo: construccin de un carro:
Dibujar el cuerpo del carro.
Recordar dnde est, trasladarse a la rueda
delantera derecha.
Dibujar la rueda.
Descartar la anterior traslacin, para regresar a
donde estaba (al origen del cuerpo del carro).
Recordar dnde est, trasladarse a la rueda
delantera izquierda...
Transformaciones 3D
Pila de matrices:
Matriz actual (en uso), siempre al tope de la pila.

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/

Vous aimerez peut-être aussi