Escolar Documentos
Profissional Documentos
Cultura Documentos
SIE020: S ntesis de Imagen y Animaci on Institute of New Imaging Technologies, Universitat Jaume I
J.Ribelles Tema 3: Transformaciones Geom etricas
Introducci on Transformaciones b asicas Concatenaci on de Transformaciones Matriz de Transformaci on de la Normal Giro alrededor de un Eje arbitrario Transformaciones en OpenGL
Contenido
1 2
Introducci on Transformaciones b asicas Traslaci on Escalado Rotaci on Concatenaci on de Transformaciones Matriz de Transformaci on de la Normal Giro alrededor de un Eje arbitrario Transformaciones en OpenGL
3 4 5 6
J.Ribelles
Introducci on Transformaciones b asicas Concatenaci on de Transformaciones Matriz de Transformaci on de la Normal Giro alrededor de un Eje arbitrario Transformaciones en OpenGL
Introducci on
Por qu e las necesitamos? En la etapa de modelado los objetos se denen bajo un sistema de coordenadas propio. A la hora de crear una escena, estos objetos se incorporan bajo un nuevo sistema de coordenadas conocido como sistema de coordenadas del mundo. Este cambio de sistema de coordenadas es necesario y se realiza mediante transformaciones geom etricas.
J.Ribelles
Introducci on Transformaciones b asicas Concatenaci on de Transformaciones Matriz de Transformaci on de la Normal Giro alrededor de un Eje arbitrario Transformaciones en OpenGL
Transformaciones b asicas
Traslaci on Consiste en desplazar el punto p = (px , py , pz ) mediante un vector t = (tx , ty , tz ) de manera que el nuevo punto q = (qx , qy , qz ): qx = px + tx , qy = py + ty , qz = pz + tz homog eneas: 0 tx 0 ty 0 tz 0 1 (1)
(2)
(3)
Introducci on Transformaciones b asicas Concatenaci on de Transformaciones Matriz de Transformaci on de la Normal Giro alrededor de un Eje arbitrario Transformaciones en OpenGL
Escalado Consiste en multiplicar el punto p = (px , py , pz ) con los factores de escala sx , sy y sz de tal manera que el nuevo punto q = (qx , qy , qz ): qx = px sx , qy = py sy , qz = pz sz (4)
La representaci on matricial con coordenadas homog eneas: sx 0 0 0 0 sy 0 0 S ( s ) = S ( sx , sy , sz ) = 0 0 sz 0 0 0 0 1 Utilizando esta representaci on, el nuevo punto se obtiene as : q = S (s ) p
(5)
(6)
J.Ribelles
Introducci on Transformaciones b asicas Concatenaci on de Transformaciones Matriz de Transformaci on de la Normal Giro alrededor de un Eje arbitrario Transformaciones en OpenGL
Rotaci on Gira un punto un angulo alrededor de un eje. La representaci on matricial con coordenadas homog eneas:
1 B0 Rx () = @ 0 0 0 0 0 cos sin 0 0 1 0 0 0 sin cos 0 sin 0 cos 0 0 0 1 0 1 0 0C 0A 1 1 0 0C 0A 1 1 0 0C 0A 1 (7)
(8)
sin cos 0 0
(9)
J.Ribelles
Introducci on Transformaciones b asicas Concatenaci on de Transformaciones Matriz de Transformaci on de la Normal Giro alrededor de un Eje arbitrario Transformaciones en OpenGL
Ejercicio Determina las transformaciones que situan al cono que se muestra en la gura (a) (radio de la base y altura uno) en la posici on que se muestra en la gura (b) (radio de la base uno y altura tres).
(a)
(b)
J.Ribelles
Introducci on Transformaciones b asicas Concatenaci on de Transformaciones Matriz de Transformaci on de la Normal Giro alrededor de un Eje arbitrario Transformaciones en OpenGL
Concatenaci on de Transformaciones
Descripci on Las transformaciones geom etricas en su forma matricial con coordenadas homog eneas se pueden concatenar. Una sola matriz puede representar a toda una secuencia de matrices de transformaci on. Es muy importante operar la secuencia de transformaciones en el orden correcto ya que el producto de matrices no posee la propiedad conmutativa.
Dibuja en el papel como quedar a una esfera de radio unidad centrada en el origen dadas las dos siguientes matrices de transformaci on T (5, 0, 0) y S (5, 5, 5) si las matrices se multiplican de las dos formas posibles, es decir, M = T S y M = S T .
J.Ribelles
Introducci on Transformaciones b asicas Concatenaci on de Transformaciones Matriz de Transformaci on de la Normal Giro alrededor de un Eje arbitrario Transformaciones en OpenGL
Las longitudes de las normales no se preservan si hay una transformaci on de escalado, por lo que es necesario normalizarlas.
J.Ribelles
Introducci on Transformaciones b asicas Concatenaci on de Transformaciones Matriz de Transformaci on de la Normal Giro alrededor de un Eje arbitrario Transformaciones en OpenGL
e d
J.Ribelles
Introducci on Transformaciones b asicas Concatenaci on de Transformaciones Matriz de Transformaci on de la Normal Giro alrededor de un Eje arbitrario Transformaciones en OpenGL
base es esta: dz ez fz
(11)
f es el producto vectorial de los otros dos vectores f = d e El vector e se puede obtener de la siguiente manera:
Partiendo del vector d haz cero su componente de menor magnitud. Intercambia los otros dos componentes y niega uno de ellos. Normal zalo.
(12)
Introducci on Transformaciones b asicas Concatenaci on de Transformaciones Matriz de Transformaci on de la Normal Giro alrededor de un Eje arbitrario Transformaciones en OpenGL
Transformaciones en OpenGL
La librer a GLM Proporciona funciones tanto para la construcci on de las matrices de transformaci on como para operar con ellas: mat4 translate (oat tx , oat ty , oat tz ) mat4 scale (oat sx , oat sy , oat sz ) mat4 rotate (oat , oat x , oat y , oat z )
// Para o b t e n e r l a m a t r i z de t r a n s f o r m a c i o n d e l modelo mat4 T , S , M; T = t r a n s l a t e (10.0 f , 0.0 f , 0.0 f ) ; S = scale (2.0 f , 2.0 f , 2.0 f ) ; M = TS ; // Para o b t e n e r l a m a t r i z n o r m a l N mat3 N ( mat3 ( t r a n s p o s e ( i n v e r s e (M) ) ) ) ;
J.Ribelles
Introducci on Transformaciones b asicas Concatenaci on de Transformaciones Matriz de Transformaci on de la Normal Giro alrededor de un Eje arbitrario Transformaciones en OpenGL
D onde calcular las matrices? La construcci on de ambas matrices, la matriz de transformaci on del modelo y la matriz de transformaci on de la normal, es conveniente que tenga lugar en la aplicaci on y que ambas se suministren al procesador de v ertices. Listado 1: Shader para transformar la posici on y la normal de cada v ertice
u n i f o r m mat4 M; // m a t r i z de t r a n s f o r m a c i o n d e l modelo u n i f o r m mat3 N ; // m a t r i z de t r a n s f o r m a c i o n de l a n o r m a l in v ec 3 p o s i c i o n , vNormal ; ou t v e c3 n o r m a l ; v o i d main ( ) { n o r m a l = n o r m a l i z e (N vNormal ) ; g l P o s i t i o n = M vec4 ( p o s i c i o n , 1 . 0 ) ; }
J.Ribelles