Introducci
Transformaciones
La generacin de un mundo 3D requiere 3
componentes esenciales:
El mundo 3D de los objetos
La o las fuentes de luz
La cmara o el ojo que observa la escena
Al mundo virtual que generemos lo denominaremos
escena y a los objetos en la misma, actores.
Una cmara especifica nuestra posicin de vista y
ciertos parmetros de vista (longitud focal, tamao
de la imagen, etc.).
VyGLab Lab. de Investigacin y Desarrollo en Visualizacin y
Computacin Grfica
Dpto. de Ciencias e Ingeniera de la Computacin
Universidad Nacional del Sur
[Link], [Link]
CG 2015
Usaremos
transformaciones
geomtricas
para
posicionar y mover actores y cmaras en la escena.
Tambin
usaremos estas transformaciones para
modelar objetos.
[Link], [Link]
2015
CG
Introducci
n
La traslacin, la rotacin, el escalado y el
sesgado son ejemplos
de
transformaciones
geomtricas.
Estas transformaciones
son
lineales; tambin podemos usar transformaciones
no lineales.
Veremos
primero
cmo
llevar
a
cabo
estas
transformaciones y luego, a partir de esto, veremos
cmo podemos crear escenas a partir de stas y de
distintos objetos.
[Link], [Link]
CG 2015
Transformacione
s
Las transformaciones geomtricas nos permitirn,
entre otras cosas,
Crear mltiples copias de objetos en la escena
Mapear puntos de un sistema de coordenadas en otro.
Cambiar la forma de los objetos
Posicionar objetos en una escena
Proyectar escenas tridimensionales en la pantalla
Crear animaciones
[Link], [Link]
CG 2015
Transformaciones
2D
Traslacin
Esta operacin se usa para mover un objeto o
grupo de objetos de manera lineal a una nueva
ubicacin en el espacio bidimensional.
Transformaciones Geomtricas
en 2D
Trasladar un objeto una distancia tx en x y una distancia ty
en y se expresa como:
x t x
y t y
[Link], [Link]
CG 2015
[Link], [Link]
0 1 y
0 x t x
t
y
CG 2015
Transformaciones
2D
Escalad
Es una transformacin que permite cambiar el
o
tamao o la proporcin de un objeto o grupo de
objetos. Hay escalados proporcionales y no proporcionales.
Sesgad
Un objeto se puede sesgar tanto en sentido
o
horizontal como en sentido vertical.
Sesgar un objeto en sentido horizontal se expresa
como:
Escalar un objeto en ex segn x y en ey segn y se
expresa como:
x ex 0 x
xy
eexy xy
y 0 ey y
[Link], [Link]
Transformaciones
2D
x x
x 1 a x
y 0 1 y
ay y y
CG 2015
[Link], [Link]
CG 2015
Transformaciones
2D
Rotaci
Esta transformacin geomtrica se usa para
n
Transformaciones
2D
La matriz de rotacin
ciertas propiedades
tiene
mover un objeto o grupo de objetos alrededor de un punto.
x cos
y sin
sin x
cos y
La norma de cada fila es uno: sin 2 cos 2 1
Las filas son ortogonales :
Decimos que las matrices de rotacin son
ortonormales
La inversa de .una matriz ortonormal es su
Rotar un objeto un ngulo en sentido horario se
expresa como:
x x cos y sin
y x sin y
cos
[Link], [Link]
x cos
y sin
cos sin sin cos 0
traspuesta.
sin x
cos y
CG 2015
[Link], [Link]
Transformaciones
2D
Las transformaciones de traslacin y rotacin se
conocen como
transformaciones
de
cuerpo
rgido.
Estas transformaciones preservan las
distancias y los ngulos.
CG 2015
Transformaciones
2D
Si a las transformaciones de similaridad les
adicionamos las transformaciones de deslizamiento
(shear)
y
escalado
no uniforme, tenemos las
transformaciones afines.
Si a las transformaciones de cuerpo rgido les
adicionamos las transformaciones de reflexin y
escalado uniforme, tenemos las
transformaciones
de similaridad. stas preservan los ngulos, las
distancias
entre
puntos
cambian
en
una
proporcin fija y se mantiene una forma similar
(tringulos similares, crculos mapean a crculos, ).
stas preservan las lneas paralelas.
[Link], [Link]
CG 2015
[Link], [Link]
CG 2015
Transformaciones
2D
Dado un polgono y su normal, se escala ste en
segn x.
Cmo debe transformarse la normal para que siga
siendo normal al mismo?
Transformaciones
2D
Supongamos que P es el punto de la superficie y la normal en ese
punto es
N. Adems T es la tangente a la superficie en P y est
dada como Q-P.
Entonces
N T 0 y en forma vectorial
N TT 0
Si transformamos los puntos por una matriz M, stos se convierten
en:
P ' MP
Q ' MQ
El nuevo vector tangente es entonces:
T ' Q'
MQ MP
M (Q P) MT
N '
Si N es la normal
enPel' espacio
transformado
Si R es la transformacin que transforma la normal N
'N
a
T 0
[Link], [Link]
2015
T RN MT N R MT N R
R M I R M R M
M T
0 N'
Cul es la matriz de transformacin que debe
usarse? Por qu?
Dado que
CG
'
[Link], [Link]
Transformaciones
2D
CG 2015
Transformaciones
2D
No podemos aplicar las frmulas que
vimos directamente ya que definen
rotaciones con respecto al origen.
Qu ocurre
cuando queremos
realizar una
determinada transformacin con respecto a un punto
cualesquiera?
Cmo se ubicara la casita si aplicamos la
transformacin que vimos?
Qu pasos debemos seguir
para lograr nuestro objetivo?
Supongamos que queremos rotar 90 grados con respecto
al punto (1.5,5)
[Link], [Link]
CG 2015
[Link], [Link]
CG 2015
Transformaciones
2D
Si tenemos las transformaciones :
Transformaciones
2D
Escribimos las transformaciones como:
1 00 10
y
y
x 1 0 x t x
*
y
0 1 y t y
x ex
y 0
0 x
*
e y y
x cos sin * x
y sin
cos y
podemos escribir cada punto transformado como:
p = p + T
[Link], [Link]
p = E p
t x
t1 y * 1
ex
1 00
y
e0y
10 * y1
cos sin 0 x
y sin cos 0 * y
0
1 1
1 0
As podemos escribir cada punto como:
p = Tp
p = E p
p = Rp
p =
Rp
Estamos trabajando en coordenadas homogneas.
CG 2015
[Link], [Link]
CG 2015
Transformaciones
2D
Al poder
como:
escribir
cada
punto
Transformaciones
2D
Dadas las transformaciones:
p= T1 R T1
p
La matriz de transformacin que se aplica a cada punto es:
p = Tp
MT= T1 R
T1
p = E p
Qu transformaciones tenemos que aplicar si queremos rotar un
p = Rpobjeto alrededor de un punto cualesquiera?
Esto significa que estamos haciendo primero la translacin T1, luego
la rotacin R y luego la translacin T1.
Aplicamos las transformaciones del siguiente modo:
podemos aplicar sucesivas transformaciones a un punto concatenando
p = T1p
p=R
p la p=T
las matrices de transformacin,
incluida
traslacin.
Para responder
1 p
a la pregunta:
p= T1 R p
p= T1 R T1p
AB
BA
Las matrices aparecen en orden reverso al que son aplicadas las
transformaciones.
[Link], [Link]
El orden importa! Recuerden que
[Link], [Link]
CG 2015
CG 2015
Transformaciones Geomtricas en
2D
Ejemplo:
Se aplican las transformaciones de rotacin de 90 y reflexin sobre x.
Transformaciones Geomtricas
en 3D
[Link], [Link]
CG 2015
[Link], [Link]
Transformaciones geomtricas en
3D
En este mundo 3D que generaremos, cada objeto se crea en su sistema
de coordenadas local. Por otro lado, su ubicacin en el mundo, est dada
por su posicin en un sistema de coordenadas global: es el
sistema de coordenadas del mundo.
CG 2015
Transformaciones
3D
Vimos que las transformaciones que le aplicamos a los
distintos objetos pueden utilizarse tanto para posicionar los
objetos como para modelarlos.
Oo
Om
Las transformaciones pueden llevarse a cabo sobre los objetos o sobre
todo el ambiente 3D. As tenemos transformaciones locales y
transformaciones globales.
[Link], [Link]
2015
CG
Veremos ahora las distintas transformaciones que pueden aplicarse
en 3D.
[Link], [Link]
CG 2015
Transformaciones
3D
La especificacin de las transformaciones bsicas en 3D
son: Traslacin
1 0 0 T x
0
1 0 Ty
Transformaciones
3D
Rotacin antihoraria alrededor de cada uno de los ejes:
Escalado
1
T
z
0
0
0
1
[Link], [Link]
CG 2015
Rotacin alrededor de un eje arbitrario:
Transformaciones
3D
As especificamos la rotacin alrededor de un eje arbitrario teniendo
en cuenta tres ngulos que se denominan ngulos de Euler.
[Link], [Link]
Gimbal Lock:
CG 2015
Transformaciones
3D
Una rotacin de 90 alrededor de uno de los ejes, reduce en uno los
grados de libertad; si se rota 90 alrededor de x, luego rotar alrededor de
y ser lo mismo que rotar alrededor de z
Problemas con los ngulos de Euler:
El resultado no es nico ya que es dependiente del orden en que
se realizan las rotaciones.
Las rotaciones no pueden sumarse
(90 cw + 90 ccw = 0, no la
Identidad) No pueden componerse
rotaciones
Gimbal lock
Dificultoso interpolar ngulos en
una animacin
[Link], [Link]
Qu es una orientacin?
CG 2015
Transformaciones
3D
Representacin de la orientacin
CG 2015
Transformaciones
3D
Una cuestin importante en computacin grfica, y en
especial
en animacin, es lograr la mejor manera de
representar la posicin y la orientacin de un objeto en el
espacio y tambin interpolar posiciones y orientaciones a
medida
que
transcurre
el
tiempo
para
producir
as
movimiento.
Posicin en el espacio del
mundo (20,-10,35)
Orientacin del avin
(23,-14,40)-(20,-10,35) (3,-4,5)
En general, cualquier orientacin puede obtenerse efectuando una
rotacin alrededor del eje z, seguida por una rotacin alrededor de y y por
una rotacin alrededor de x. Esta secuencia no es nica.
La transformacin que ubica al avin en la posicin y orientacin deseada
puede obtenerse determinando los senos y cosenos necesarios para las
matrices de rotacin para los ejes x, y y z.
[Link], [Link]
2015
[Link], [Link]
CG
Un escenario tpico es aqul en el que se especifican dos
posiciones
y orientaciones y deben interpolarse los estados
intermedios para producir as la animacin de un determinado
objeto. Otro es cuando es necesario aplicar a un objeto sucesivas
transformaciones y debe tenerse una forma eficiente de
concatenar esas transformaciones antes de aplicarlas a
todos los vrtices del objeto.
Veremos
distintas
posibles
representaciones
de
orientaciones
e identificaremos
sus
fortalezas
y
debilidades.
Asumimos
que
la transformacin final aplicada
al objeto es el resultado slo de rotaciones y traslaciones, es
decir transformaciones de cuerpo rgido.
[Link], [Link]
2015
CG
Transformaciones
3D
Si tenemos dos matrices de transformaciones que representan los
estados inicial y final de un detrminado objeto, podra pensarse que una
interpolacion entre los estado equivale a una interpolacin de las
matrices.
Transformaciones
3D
Representacin de la orientacin mediante ngulo fijo
Una representacin de ngulo fijo se refiere a los ngulos usados
para rotar alrededor de ejes fijos. Se entiende que existe un
orden fijo para las tres rotaciones, tales como x - y - z . Esto
significa que la orientacin est dada por un conjunto de 3
parmetros ordenados que representan 3 rotaciones ordenadas
alrededor de ejes fijos: primero alrededor de x, luego alrededor
de y y finalmente alrededor de z. Lo importante es que la
orientacin de un objeto est dada por 3 ngulos, por
ejemplo, (10, 45, 90) lo que es equivalente a R z (90) R y (45)
R x (10).
Supongamos que queremos interpolar de una rotacin de +90
alrededor del eje y a una de -90 alrededor del mismo eje.
Las matrices para ambos estados son respectivamente:
La matriz interpolada que representa la orientacin
a mitad de camino entre ambos estados es:
Esto, evidentemente no tiene sentido
[Link], [Link]
CG 2015
[Link], [Link]
Transformaciones
3D
CG 2015
Transformaciones
3D
Representacin de la orientacin mediante ngulo fijo
Representacin de la orientacin mediante ngulo fijo
Se considera un objeto orientado de acuerdo a (0, 90, 0).
Examinemos el efecto que un pequeo cambio en los
valores
del
primero
y
tercer parmetro, tiene sobre la
orientacin del objeto.
La causa de este problema puede hacer que la interpolacin
entre dos posiciones
y
orientaciones
clave
sea
problemtica. Considerar las orientaciones (0, 90, 0) y (90,
45, 90). La segunda orientacin es una rotacin de 45-grados
alrededor del eje x con respecto a la primera posicin.
La interpolacin directa de las representaciones de las
orientaciones produce (45, 67.5, 45) como la orientacin a mitad
de camino, que es muy distinta de (90, 22.5, 90) que es la
orientacin deseada (pq es la orientacin que est intuitivamente
a mitad de camino entre las dos orientaciones.
[Link], [Link]
CG 2015
[Link], [Link]
2015
Transformaciones
3D
CG
Transformaciones
3D
Representacin de la orientacin mediante ngulos de Euler
Representacin de la orientacin mediante ejes y ngulos
En una representacin de ngulos de Euler los ejes de rotacin
son los ejes del sistema de coordenadas local del objeto, que
rotan con el mismo (a diferencia de los ejes del sistema de
coordenadas global). Un ejemplo tpico de uso de los ngulos de
Euler es el de roll, pitch y yaw de una cmara.
El teorema de rotacin de Euler establece que para dos
orientaciones dadas de un objeto, una puede alcanzarse a
partir de la otra por una simple rotacin alrededor de un eje
arbitrario.
Como en la representacin fija, esta representacin puede
usar
varios ordenamientos de los 3 ejes de rotacin como
esquema de representacin. Cualquier sistema de ngulos de
Euler que se use es equivalente al sistema de ngulos fijos, en
orden reverso. Por ello, esta representacin tiene las mismas
ventajas y desventajas (i.e. gimbal lock) que las de
la representacin de ngulo fijo.
Sist. de coord. global
[Link], [Link]
Sist. de coord. local del objeto
CG 2015
[Link], [Link]
CG 2015
Transformaciones
3D
Transformaciones
3D
Representacin de la orientacin mediante ejes y ngulos
Representacin de la orientacin mediante cuaterniones
La interpolacin de representaciones de ejes y ngulos entre
(A1,1) y (A2,2) por k para obtener (Ak,k) se realiza
mediante la rotacin Rotate(a,b,c) que rota c alrededor de a en b
grados.
La
representacin
anterior
tiene
problemas
en
lograr
interpolaciones de las orientaciones intermedias cuando un
objeto o unin tiene tres grados de libertad rotacional. Una
mejor herramienta para representar orientaciones la constituyen
los cuaterniones.
Un cuaternin es un vector 4D que se trata de una manera
especial. Cualquier cambio puro de orientacin que permite
cambiar de un sistema de coordenadas
a
otro
puede
representarse
por una rotacin de algn determinado ngulo
ngulo =
alrededor
de un determinado eje. Un cuaternin permite codificar
, uy, uz
esta
rotacin
ngulo/eje
Eje de
rotacin
unitario deu xrotacin
[Link], [Link]
CG 2015
q cos 2 , sin 2x u iy u zj
k
El cuaterninu unitario
(de longitud
[Link], [Link]
1) es:
CG 2015
Pipeline 3D
Del mundo 3D a la pantalla
Pipeline 3D
[Link], [Link]
CG 2015
Pipeline
3D
[Link], [Link]
CG 2015
Transformacin de Modelado
Miramos la escena
Pipeline
3D
Esta
transformacin
transforma los objetos en el espacio del objeto; permite
generar distintas instancias de un objeto dado.
Escalar, rotar.
Espacio del objeto
[Link], [Link]
CG 2015
[Link], [Link]
CG 2015
Pipeline
3D
Transformacin del Mundo
Esta transformacin orienta los
objetos dentro del espacio del mundo.
Esta
transformacin
puntos del espacio del mundo en el espacio del ojo.
Trasladar, rotar.
Espacio del objeto
Pipeline
3D
Transformacin de Vista
Rotar, trasladar
Espacio del mundo
[Link], [Link]
Espacio del mundo
CG 2015
Espacio del ojo
[Link], [Link]
CG 2015
Pipeline
Pipeline
3D
3D
Transformacin de Proyeccin
Esta transformacin mapea
el frustum de vista al espacio de clipping.
Espacios
Objeto
Mundo
Rotar
Trasladar
Transf. perspectiva,
escalar, trasladar
Espacio del ojo
Modelado
CG 2015
Pipeline
3D
Mundo
Ojo
Escalar
Trasladar
Perspectiva
Especificacin
de la cmara
Ubicacin
en el Mundo
Clipping
CG 2015
CO
[Link].
Clipping
Rotar
Trasladar
Clipping
[Link], [Link]
CO
Espacios
Ojo
Escalar
Rotar
Espacio de clipping
[Link], [Link]
Objeto
mapea
CM
[Link]
Pipeline
3D
COjo
[Link]
COjo
Iluminacin
[Link]
CClip
Divisin
Perspectiva
(/w)
Rotar
Trasladar
Modelado
Rotar
Trasladar
Ubicacin
en el Mundo
Pantalla 3D (CND)
T. Viewport
Escalar
Trasladar
Perspectiva
Especificacin
de la cmara
Clipping
Operaciones
Raster
Escalar
Rotar
[Link], [Link]
CG 2015
[Link], [Link]
CP
CP
CP
[Link],
Texturado, Ilum
fragmento,
CP
Rasterizacin
CG 2015
CO
CO
[Link].
CM
[Link]
COjo
[Link]
Bibliograf
a
Pipeline
3D
COjo
Iluminacin
[Link]
CClip
Procesamiento Geomtrico (de vrtices)
Divisin
Perspectiva
(/w)
Pantalla 3D (CND)
T. Viewport
CP
CP
Operaciones
Raster
[Link], [Link]
CP
[Link],
Texturado, Ilum
fragmento,
ACM SIGGRAPH Proceedings
Agoston, M. Computer graphics & geometric modeling / Mathematics,
Springer- Verlag London Ltd., 2005.
Angel, E., Shreiner, D. Interactive Computer Graphics: A top-down
approach with shader-based OpenGL, Addison W esley, 2011, 6th. Ed.
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.
CP
Rasterizacin
CG 2015
[Link], [Link]
CG 2015