tema 2: transformaciones...

23
Introducci´ on Transformaciones b´ asicas Concatenaci´ on de Transformaciones La Normal Giro eje arbitrario OpenGL Tema 2: Transformaciones Geom´ etricas Jos´ e Ribelles Departamento de Lenguajes y Sistemas Inform´ aticos, Universitat Jaume I VJ1221 - Inform´ atica Gr´ afica Universitat Jaume I - 2020/21 Transformaciones Geom´ etricas 1

Upload: others

Post on 09-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tema 2: Transformaciones Geométricascphoto.uji.es/.../ewExternalFiles/Tema_02-Transformaciones_geomet… · Tema 2: Transformaciones Geom etricas Jos e Ribelles Departamento de Lenguajes

Introduccion Transformaciones basicas Concatenacion de Transformaciones La Normal Giro eje arbitrario OpenGL

Tema 2: Transformaciones Geometricas

Jose Ribelles

Departamento de Lenguajes y Sistemas Informaticos, Universitat Jaume I

VJ1221 - Informatica Grafica

Universitat Jaume I - 2020/21 Transformaciones Geometricas 1

Page 2: Tema 2: Transformaciones Geométricascphoto.uji.es/.../ewExternalFiles/Tema_02-Transformaciones_geomet… · Tema 2: Transformaciones Geom etricas Jos e Ribelles Departamento de Lenguajes

Introduccion Transformaciones basicas Concatenacion de Transformaciones La Normal Giro eje arbitrario OpenGL

Contenido

1 Introduccion

2 Transformaciones basicasTraslacionEscaladoRotacion

3 Concatenacion de Transformaciones

4 Matriz de Transformacion de la Normal

5 Giro alrededor de un Eje arbitrario

6 Transformaciones en OpenGL

Universitat Jaume I - 2020/21 Transformaciones Geometricas 2

Page 3: Tema 2: Transformaciones Geométricascphoto.uji.es/.../ewExternalFiles/Tema_02-Transformaciones_geomet… · Tema 2: Transformaciones Geom etricas Jos e Ribelles Departamento de Lenguajes

Introduccion Transformaciones basicas Concatenacion de Transformaciones La Normal Giro eje arbitrario OpenGL

Hoy veremos...

1 Introduccion

2 Transformaciones basicas

3 Concatenacion de Transformaciones

4 Matriz de Transformacion de la Normal

5 Giro alrededor de un Eje arbitrario

6 Transformaciones en OpenGL

Universitat Jaume I - 2020/21 Transformaciones Geometricas 3

Page 4: Tema 2: Transformaciones Geométricascphoto.uji.es/.../ewExternalFiles/Tema_02-Transformaciones_geomet… · Tema 2: Transformaciones Geom etricas Jos e Ribelles Departamento de Lenguajes

Introduccion Transformaciones basicas Concatenacion de Transformaciones La Normal Giro eje arbitrario OpenGL

Introduccion

¿Por que las necesitamos?

En la etapa de modelado los objetos se definen bajo un sistema decoordenadas propio.

A la hora de crear una escena, estos objetos se incorporan bajo unnuevo sistema de coordenadas conocido como sistema decoordenadas del mundo.

Este cambio de sistema de coordenadas es necesario y se realizamediante transformaciones geometricas.

Universitat Jaume I - 2020/21 Transformaciones Geometricas 4

Page 5: Tema 2: Transformaciones Geométricascphoto.uji.es/.../ewExternalFiles/Tema_02-Transformaciones_geomet… · Tema 2: Transformaciones Geom etricas Jos e Ribelles Departamento de Lenguajes

Introduccion Transformaciones basicas Concatenacion de Transformaciones La Normal Giro eje arbitrario OpenGL

Introduccion

Universitat Jaume I - 2020/21 Transformaciones Geometricas 5

Page 6: Tema 2: Transformaciones Geométricascphoto.uji.es/.../ewExternalFiles/Tema_02-Transformaciones_geomet… · Tema 2: Transformaciones Geom etricas Jos e Ribelles Departamento de Lenguajes

Introduccion Transformaciones basicas Concatenacion de Transformaciones La Normal Giro eje arbitrario OpenGL

Hoy veremos...

1 Introduccion

2 Transformaciones basicasTraslacionEscaladoRotacion

3 Concatenacion de Transformaciones

4 Matriz de Transformacion de la Normal

5 Giro alrededor de un Eje arbitrario

6 Transformaciones en OpenGL

Universitat Jaume I - 2020/21 Transformaciones Geometricas 6

Page 7: Tema 2: Transformaciones Geométricascphoto.uji.es/.../ewExternalFiles/Tema_02-Transformaciones_geomet… · Tema 2: Transformaciones Geom etricas Jos e Ribelles Departamento de Lenguajes

Introduccion Transformaciones basicas Concatenacion de Transformaciones La Normal Giro eje arbitrario OpenGL

Transformaciones basicas

Traslacion

Consiste en desplazar el punto p = (px , py , pz) mediante un vectort = (tx , ty , tz) de manera que el nuevo punto q = (qx , qy , qz):

qx = px + tx , qy = py + ty , qz = pz + tz (1)

La representacion matricial con coordenadas homogeneas:

T (t) = T (tx , ty , tz) =

1 0 0 tx0 1 0 ty0 0 1 tz0 0 0 1

(2)

Utilizando esta representacion, el nuevo punto se obtiene ası:

q = T (t) · p (3)

Universitat Jaume I - 2020/21 Transformaciones Geometricas 7

Page 8: Tema 2: Transformaciones Geométricascphoto.uji.es/.../ewExternalFiles/Tema_02-Transformaciones_geomet… · Tema 2: Transformaciones Geom etricas Jos e Ribelles Departamento de Lenguajes

Introduccion Transformaciones basicas Concatenacion de Transformaciones La Normal Giro eje arbitrario OpenGL

Escalado

Consiste en multiplicar el punto p = (px , py , pz) con los factores deescala 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 representacion matricial con coordenadas homogeneas:

S(s) = S(sx , sy , sz) =

sx 0 0 00 sy 0 00 0 sz 00 0 0 1

(5)

Utilizando esta representacion, el nuevo punto se obtiene ası:

q = S(s) · p (6)

Universitat Jaume I - 2020/21 Transformaciones Geometricas 8

Page 9: Tema 2: Transformaciones Geométricascphoto.uji.es/.../ewExternalFiles/Tema_02-Transformaciones_geomet… · Tema 2: Transformaciones Geom etricas Jos e Ribelles Departamento de Lenguajes

Introduccion Transformaciones basicas Concatenacion de Transformaciones La Normal Giro eje arbitrario OpenGL

Rotacion

Gira un punto un angulo φ alrededor de un eje de coordenadas:

Alrededor de X:

x′ = x

y ′ = y cos φ − z sin φ

z′ = y sin φ + z cos φ

(7)

Alrededor de Y:

x′ = x cos φ + z sin φ

y ′ = y

z′ = −x sin φ + z cos φ

(8)

Alrededor de Z:

x′ = x cos φ − y sin φ

y ′ = x sin φ + y cos φ

z′ = z

(9)

Universitat Jaume I - 2020/21 Transformaciones Geometricas 9

Page 10: Tema 2: Transformaciones Geométricascphoto.uji.es/.../ewExternalFiles/Tema_02-Transformaciones_geomet… · Tema 2: Transformaciones Geom etricas Jos e Ribelles Departamento de Lenguajes

Introduccion Transformaciones basicas Concatenacion de Transformaciones La Normal Giro eje arbitrario OpenGL

Rotacion

Gira un punto un angulo φ alrededor de un eje.

La representacion matricial con coordenadas homogeneas:

Rx (φ) =

1 0 0 00 cos φ − sin φ 00 sin φ cos φ 00 0 0 1

(10)

Ry (φ) =

cos φ 0 sin φ 00 1 0 0

− sin φ 0 cos φ 00 0 0 1

(11)

Rz (φ) =

cos φ − sin φ 0 0sin φ cos φ 0 0

0 0 1 00 0 0 1

(12)

Utilizando esta representacion, el nuevo punto se obtiene ası:

q = R(φ) · p (13)

Universitat Jaume I - 2020/21 Transformaciones Geometricas 10

Page 11: Tema 2: Transformaciones Geométricascphoto.uji.es/.../ewExternalFiles/Tema_02-Transformaciones_geomet… · Tema 2: Transformaciones Geom etricas Jos e Ribelles Departamento de Lenguajes

Introduccion Transformaciones basicas Concatenacion de Transformaciones La Normal Giro eje arbitrario OpenGL

Hoy veremos...

1 Introduccion

2 Transformaciones basicas

3 Concatenacion de Transformaciones

4 Matriz de Transformacion de la Normal

5 Giro alrededor de un Eje arbitrario

6 Transformaciones en OpenGL

Universitat Jaume I - 2020/21 Transformaciones Geometricas 11

Page 12: Tema 2: Transformaciones Geométricascphoto.uji.es/.../ewExternalFiles/Tema_02-Transformaciones_geomet… · Tema 2: Transformaciones Geom etricas Jos e Ribelles Departamento de Lenguajes

Introduccion Transformaciones basicas Concatenacion de Transformaciones La Normal Giro eje arbitrario OpenGL

Concatenacion de Transformaciones

Descripcion

Las transformaciones geometricas en su forma matricial concoordenadas homogeneas se pueden concatenar.

Una sola matriz puede representar a toda una secuencia de matricesde transformacion.

Es muy importante operar la secuencia de transformaciones en elorden correcto ya que el producto de matrices no posee la propiedadconmutativa.

Dibuja en el papel como quedarıa una esfera de radio unidadcentrada en el origen dadas las dos siguientes matrices detransformacion T (5, 0, 0) y S(5, 5, 5) si las matrices se multiplican delas dos formas posibles, es decir, M = T · S y M = S · T .

El producto de matrices sı posee la propiedad asociativa:

M = R · T · S = R · (T · S) = (R · T ) · S

Universitat Jaume I - 2020/21 Transformaciones Geometricas 12

Page 13: Tema 2: Transformaciones Geométricascphoto.uji.es/.../ewExternalFiles/Tema_02-Transformaciones_geomet… · Tema 2: Transformaciones Geom etricas Jos e Ribelles Departamento de Lenguajes

Introduccion Transformaciones basicas Concatenacion de Transformaciones La Normal Giro eje arbitrario OpenGL

Ejercicio

Determina las transformaciones que situan el objeto que se muestra a laizquierda de la siguiente figura (radio de la base y altura uno) en laposicion que se muestra en la derecha (radio de la base uno y altura tres).

X

X

Y Y

Z

Z

Universitat Jaume I - 2020/21 Transformaciones Geometricas 13

Page 14: Tema 2: Transformaciones Geométricascphoto.uji.es/.../ewExternalFiles/Tema_02-Transformaciones_geomet… · Tema 2: Transformaciones Geom etricas Jos e Ribelles Departamento de Lenguajes

Introduccion Transformaciones basicas Concatenacion de Transformaciones La Normal Giro eje arbitrario OpenGL

Ejercicio

Determina las transformaciones que situan el objeto que se muestra a laizquierda de la siguiente figura en las posiciones que se muestran en laderecha.

alfa

beta

gamma

X

X

Y Y

Z Z

L

Universitat Jaume I - 2020/21 Transformaciones Geometricas 14

Page 15: Tema 2: Transformaciones Geométricascphoto.uji.es/.../ewExternalFiles/Tema_02-Transformaciones_geomet… · Tema 2: Transformaciones Geom etricas Jos e Ribelles Departamento de Lenguajes

Introduccion Transformaciones basicas Concatenacion de Transformaciones La Normal Giro eje arbitrario OpenGL

Hoy veremos...

1 Introduccion

2 Transformaciones basicas

3 Concatenacion de Transformaciones

4 Matriz de Transformacion de la Normal

5 Giro alrededor de un Eje arbitrario

6 Transformaciones en OpenGL

Universitat Jaume I - 2020/21 Transformaciones Geometricas 15

Page 16: Tema 2: Transformaciones Geométricascphoto.uji.es/.../ewExternalFiles/Tema_02-Transformaciones_geomet… · Tema 2: Transformaciones Geom etricas Jos e Ribelles Departamento de Lenguajes

Introduccion Transformaciones basicas Concatenacion de Transformaciones La Normal Giro eje arbitrario OpenGL

Matriz de Transformacion de la Normal

Descripcion

La matriz de transformacion no siempre es valida para los vectoresnormales a la superficie, ¿en que casos ocurre?

Lo habitual es que la matriz de transformacion de la normal N sea latraspuesta de la inversa de la matriz de transformacion.

Como la normal es un vector y la traslacion no le afecta, y elescalado y la rotacion son transformaciones afines, solo hay quetrabajar con los 3x3 componentes superior izquierda.

Las longitudes de las normales no se preservan si hay unatransformacion de escalado, por lo que es necesario normalizarlas, ¿ysi es uniforme y conoces el factor de escala?

Universitat Jaume I - 2020/21 Transformaciones Geometricas 16

Page 17: Tema 2: Transformaciones Geométricascphoto.uji.es/.../ewExternalFiles/Tema_02-Transformaciones_geomet… · Tema 2: Transformaciones Geom etricas Jos e Ribelles Departamento de Lenguajes

Introduccion Transformaciones basicas Concatenacion de Transformaciones La Normal Giro eje arbitrario OpenGL

Hoy veremos...

1 Introduccion

2 Transformaciones basicas

3 Concatenacion de Transformaciones

4 Matriz de Transformacion de la Normal

5 Giro alrededor de un Eje arbitrario

6 Transformaciones en OpenGL

Universitat Jaume I - 2020/21 Transformaciones Geometricas 17

Page 18: Tema 2: Transformaciones Geométricascphoto.uji.es/.../ewExternalFiles/Tema_02-Transformaciones_geomet… · Tema 2: Transformaciones Geom etricas Jos e Ribelles Departamento de Lenguajes

Introduccion Transformaciones basicas Concatenacion de Transformaciones La Normal Giro eje arbitrario OpenGL

Giro alrededor de un Eje arbitrario

Descripcion

Sean d y φ el vector unitario del eje de giro y el angulo de giro.

Hay que calcular una base ortogonal que contenga a d .

La idea es hacer un cambio de base entre la base que forman los ejesde coordenadas y la nueva base.

X

Y

Z

d

ef

Y

Z

d

e

f

R

X

Universitat Jaume I - 2020/21 Transformaciones Geometricas 18

Page 19: Tema 2: Transformaciones Geométricascphoto.uji.es/.../ewExternalFiles/Tema_02-Transformaciones_geomet… · Tema 2: Transformaciones Geom etricas Jos e Ribelles Departamento de Lenguajes

Introduccion Transformaciones basicas Concatenacion de Transformaciones La Normal Giro eje arbitrario OpenGL

Calculo de la matriz R

La matriz que representa al cambio de base es esta:

R =

dx dy dzex ey ezfx fy fz

(14)

e es un vector unitario normal a d .

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.

Teniendo en cuenta que R es ortogonal, la matriz de rotacion final:

Rd(φ) = RTRx(φ)R (15)

Universitat Jaume I - 2020/21 Transformaciones Geometricas 19

Page 20: Tema 2: Transformaciones Geométricascphoto.uji.es/.../ewExternalFiles/Tema_02-Transformaciones_geomet… · Tema 2: Transformaciones Geom etricas Jos e Ribelles Departamento de Lenguajes

Introduccion Transformaciones basicas Concatenacion de Transformaciones La Normal Giro eje arbitrario OpenGL

Hoy veremos...

1 Introduccion

2 Transformaciones basicas

3 Concatenacion de Transformaciones

4 Matriz de Transformacion de la Normal

5 Giro alrededor de un Eje arbitrario

6 Transformaciones en OpenGL

Universitat Jaume I - 2020/21 Transformaciones Geometricas 20

Page 21: Tema 2: Transformaciones Geométricascphoto.uji.es/.../ewExternalFiles/Tema_02-Transformaciones_geomet… · Tema 2: Transformaciones Geom etricas Jos e Ribelles Departamento de Lenguajes

Introduccion Transformaciones basicas Concatenacion de Transformaciones La Normal Giro eje arbitrario OpenGL

Transformaciones en OpenGL

La biblioteca glMatrix

Proporciona funciones tanto para la construccion de las matrices detransformacion como para operar con ellas:

mat4.fromTranslation (out, v)

mat4.fromScaling (out, v)

mat4.fromRotation (out, rad , axis)

// Para ob t ene r l a ma t r i z de t r a n s f o rmac i o n d e l modelov a r mode lMatr ix = mat4 . c r e a t e ( ) ;v a r T = mat4 . c r e a t e ( ) ;v a r R = mat4 . c r e a t e ( ) ;mat4 . f r o m T r a n s l a t i o n (T, [ 0 , 0 . 2 , 0 ] ) ;mat4 . f r o m R o t a t i o n (R , Math . PI /2 , [ 1 , 0 , 0 ] ) ;mat4 . m u l t i p l y ( modelMatr ix , T, R) ;

// Para ob t ene r l a ma t r i z de t r a n s f o rmac i o n de l a normalv a r n o r m a l M a t r i x = mat3 . c r e a t e ( ) ;mat3 . normalFromMat4 ( normalMatr ix , mode lMatr ix ) ;

Universitat Jaume I - 2020/21 Transformaciones Geometricas 21

Page 22: Tema 2: Transformaciones Geométricascphoto.uji.es/.../ewExternalFiles/Tema_02-Transformaciones_geomet… · Tema 2: Transformaciones Geom etricas Jos e Ribelles Departamento de Lenguajes

Introduccion Transformaciones basicas Concatenacion de Transformaciones La Normal Giro eje arbitrario OpenGL

¿Donde calcular las matrices?

La construccion de ambas matrices, la matriz de transformacion delmodelo y la matriz de transformacion de la normal, es conveniente quetenga lugar en la aplicacion y que ambas se suministren al procesador devertices.

Vertex Data VertexProcessing

PrimitiveProcessing Rasterization

FragmentProcessing FramebufferVertex Primitive Fragment

Listado 1: Shader para transformar la posicion y la normal de cada verticeuni form mat4 mode lMatr ix ; // mat r i z de t r a n s f o rmac i o n d e l modelouni form mat3 n o r m a l M a t r i x ; // mat r i z de t r a n s f o rmac i o n de l a normal

i n vec3 V e r t e x P o s i t i o n , VertexNormal ;out vec3 VertexNormalT ;

vo id main ( ){

VertexNormalT = n o r m a l i z e ( n o r m a l M a t r i x ∗ VertexNormal ) ;g l P o s i t i o n = mode lMatr ix ∗ vec4 ( V e r t e x P o s i t i o n , 1 . 0 ) ;

}

Universitat Jaume I - 2020/21 Transformaciones Geometricas 22

Page 23: Tema 2: Transformaciones Geométricascphoto.uji.es/.../ewExternalFiles/Tema_02-Transformaciones_geomet… · Tema 2: Transformaciones Geom etricas Jos e Ribelles Departamento de Lenguajes

Introduccion Transformaciones basicas Concatenacion de Transformaciones La Normal Giro eje arbitrario OpenGL

Ejercicios

Dada una matriz de transformacion que al operarla con un modeloproduce su simetrico, ¿que le ocurren a las normales si las operamoscon esa misma matriz?

¿Que transformaciones deberıa sufrir el cubo segun el fragmento decodigo del listado 2?

Listado 2: Ejemplo de transformacion geometrica de un cubov a r M = mat4 . c r e a t e ( ) ;v a r S = mat4 . c r e a t e ( ) ;v a r T = mat4 . c r e a t e ( ) ;

v a r iM = g l . g e t U n i f o r m L o c a t i o n ( program , ”M” ) ;

mat4 . f r o m S c a l i n g ( S , [ 2 , 2 , 2 ] ) ;mat4 . f r o m T r a n s l a t i o n (T , [ 1 , 1 , 1 ] ) ;

mat4 . m u l t i p l y (M, T, S ) ;

g l . u n i f o r m M a t r i x 4 f v ( iM , f a l s e , M) ;

draw ( exampleCube ) ;

Universitat Jaume I - 2020/21 Transformaciones Geometricas 23