Transformações Geométricas Grafos de Cena Edward Angel, Cap. 4 Instituto Superior Técnico Computação Gráfica 2009/2010 1
Na última aula... Transformações Geométricas Translação Escala Rotação Espaço Homogéneo Coordenadas Homogéneas Transformações no Espaço Homogéneo
Sumário Transformações Geométricas Composição de Transformações Deformação Lateral Transformações no espaço 3D Matriz de transformação composta Grafos de Cena
Transformações no Espaço Homogéneo (1/2) Translação Escala M T = T(dx,dy) = 1 0 dx 0 1 dy M E = S(S X,S Y ) = 0 0 1 S X 0 0 0 S Y 0 0 0 1 Rotação M R = R(β) = cos(β) -sin(β) 0 sin(β) cos(β) 0 0 0 1
Transformações no Espaço Homogéneo (2/2) Em coordenadas homogéneas Transformação = Produto de Matrizes Translação x 1 0 dx x. y = 0 1 dy y 1 0 0 1 1 Escala x Sx 0 0 x y 0 Sy 0. = y 1 0 0 1 1 Rotação x cos(β) -sin(β) 0 x y sin(β) cos(β) 0. = y 1 0 0 1 1
Computação Gráfica Composição de Transformações
Composição de Transformações (1/4) No espaço homogéneo Composição de Transformações = Produto de Matrizes P P P T 1 T 2 P = T 1 P e P = T 2 P P = T 2 (T 1 P) P = (T 2 T 1 ) P = (T 2 T 1 ) P Transformações associam-se Da direita para a esquerda Pela ordem inversa de aplicação
Composição de Transformações (2/4) Exemplo: rotação em torno de um ponto Problema: Rotação definida em relação a (0, 0). Como rodar em torno de um ponto qualquer? Resposta: sequência de 3 transformações básicas. T(-x1,-y1) R(θ) T(x1,y1) Y Y T(-x1,-y1) Y Y R(θ) T(x1,y1) y1 P1 P1 x1 X T(-x1,-y1) X R (θ) X T(x1,y1) X T = T(x1,y1). R(θ). T(-x1,-y1) = 1 0 x1 cos θ -sin θ 0 1 0 -x1 cos θ -sin θ x1(1 - cos θ) + y1sin θ 0 1 y1. sin θ cos θ 0. 0 1 -y1 = sin θ cos θ y1(1 - cos θ) - x1sin θ 0 0 1 0 0 1 0 0 1 0 0 1
Composição de Transformações (3/4) Em geral não é comutativa Produto de matrizes não o é Alguns pares comutativos Translação Translação (Translação + Translação) Escala Escala (Escala + Escala) Rotação Rotação (Rotação + Rotação)
Composição de Transformações (4/4) Exemplos de Comutatividade 1 0 dx2 1 0 dx1 1 0 (dx1 + dx2) 0 1 dy2. 0 1 dy1 = 0 1 (dy1 + dy2) 0 0 1 0 0 1 0 0 1 Sx2 0 0 Sx1 0 0 Sx1.Sx2 0 0 0 Sy2 0. 0 Sy1 0 = 0 Sy1.Sy2 0 0 0 1 0 0 1 0 0 1 cos α -sin α 0 cos β -sin β 0 cos (α + β) -sin (α + β) 0 sin α cos α 0. sin β cos β 0 = sin (α + β) cos (α + β) 0 0 0 1 0 0 1 0 0 1
Composição de Transformações (5/5) Exemplo de composições não comutativas Translação + Escala Escala + Translação
Computação Gráfica Transformações Geométricas: Deformação Lateral
Deformação Lateral (shear transformation) Transformação primitiva Não se define por composição
Deformação Lateral (shear transformation) Deformação lateral em X M SH = SH X (a) = 1 a 0 0 1 0 0 0 1 x 1 a 0 x y 0 1 0. = y 1 0 0 1 1
Deformação Lateral (shear transformation) Deformação lateral em Y M SH = SH Y (b) = 1 0 0 b 1 0 0 0 1 x 1 0 0 x y b 1 0. = y 1 0 0 1 1
Deformação Lateral (shear transformation) Tipo de transformação? Questões: Preserva ângulos? Preserva comprimentos? Preserva paralelismo de linhas? É transformação linear? É transformação afim? É transformação projectiva?
Transformações Geométricas Classificação Projectivas Afins Lineares Projectivas Podem não preservar o paralelismo das linhas A imagem de uma linha é um ponto ou uma linha Afins Nunca uma curva Mantêm paralelismo de linhas A imagem do vector (0,0) pode não ser (0,0) Lineares Transformam linhas em linhas ou em pontos A imagem do vector (0,0) é sempre (0,0)
Transformações Geométricas 2D Transformações Elementares Translação Escala M T = T(dx,dy) = 1 0 dx 0 1 dy M E = S(S X,S Y ) = 0 0 1 S X 0 0 0 S Y 0 0 0 1 Rotação M R = R(β) = cos(β) -sin(β) 0 sin(β) cos(β) 0 0 0 1 Deformação Lateral M SH = SH X (a) = 1 a 0 0 1 0 0 0 1 M SH = SH Y (b) = 1 0 0 b 1 0 0 0 1
Computação Gráfica Transformações Geométricas 3D
Espaço vectorial tri-dimensional (1/2) Usa o referencial de mão direita Right handed coordinate system Rotações positivas Sentido oposto ao da rotação dos ponteiros do relógio counterclockwise Eixo ZZ aponta para fora da página Y Z (fora da página) X
Espaço vectorial tri-dimensional (2/2) Referencial de mão direita Convenção matemática Referencial de mão esquerda Interpretação natural em CG Objecto com maiores valores na coordenada Z Encontram-se mais distantes do observador Na prática usam-se ambos os referenciais Conforme sistema gráfico, aplicação ou biblioteca
Transformações Geométricas 3D Transformações 2D Matrizes 3x3 no espaço homogéneo Analogamente Transformações 3D Matrizes 4x4 no espaço homogéneo
Coordenadas Homogéneas Espaço 3D representado num espaço 4D Ponto (x,y,z) transformado num ponto (x,y,z,w) P 3d (x, y, z) P h (Wx, Wy, Wz, W), W 0 Semelhante a 2D Ponto 3D tem inúmeras representações em 4D Infinitos pontos no espaço homogéneo representam o mesmo ponto em 3D Homogeneização idêntica
Homogeneização em 3D Idêntica à realizada em 2D Dividem-se coordenadas homogéneas por W (x, y, z, W) = 3d (x/w, y/w, z/w, 1) x/w, y/w e z/w: coordenadas Cartesianas do ponto homogéneo (x, y, z, W) (x/w, y/w, z/w) W=1 (x, y, z) (x, y, z, 1)
Transformações Elementares 3D Translação M T = T(dx, dy, dz) = 1 0 0 dx 0 1 0 dy 0 0 1 dz 0 0 0 1 x 1 0 0 dx x y = 0 1 0 dy. y z 0 0 1 dz z 1 0 0 0 1 1
Transformações Elementares 3D Escala M S = S(Sx, Sy, Sz) = Sx 0 0 0 0 Sy 0 0 0 0 Sz 0 0 0 0 1 x Sx 0 0 0 x y = 0 Sy 0 0. y z 0 0 Sz 0 z 1 0 0 0 1 1
Transformações Elementares 3D Rotação Y Z X Definir matriz de rotação única Não trivial Usam-se quaterniões Para definir rotações espaciais
Transformações Elementares 3D Rotação Y R y (φ) R z (ψ) Z R x (θ) X Abordagem mais simples Realizar rotações apenas sobre eixos de coordenadas Três matrizes distintas 28
Transformações Elementares 3D Rotação Y R z (ψ): em torno do eixo dos ZZ R z (ψ) Z R y (φ) R x (θ) X cos θ -sin θ 0 0 sin θ cos θ 0 0 0 0 1 0 0 0 0 1 R x (θ): em torno do eixo dos XX 1 0 0 0 0 cos θ -sin θ 0 0 sin θ cos θ 0 0 0 0 1 R y (φ): em torno do eixo dos YY cos θ 0 sin θ 0 0 1 0 0 -sin θ 0 cos θ 0 0 0 0 1
Transformações Elementares 3D Rotação Y R z (ψ): em torno do eixo dos ZZ R z (ψ) Z R y (φ) R x (θ) X cos θ -sin θ 0 0 sin θ cos θ 0 0 0 0 1 0 0 0 0 1 R x (θ): em torno do eixo dos XX 1 0 0 0 0 cos θ -sin θ 0 0 sin θ cos θ 0 0 0 0 1 R y (φ): em torno do eixo dos YY cos θ 0 sin θ 0 0 1 0 0 -sin θ 0 cos θ 0 0 0 0 1
Transformações Elementares 3D Rotação Aproximação Incremental Para pequenos ângulos sin (α) α cos (α) 1 R z (ψ) R y (φ) R x (θ) = 1 -ψ φ 0 ψ 1 -θ 0 -φ θ 1 0 0 0 0 1 31
Transformações Elementares 3D Deformação Lateral em 3D Semelhante a 2D 2D Um eixo fixo Variação no outro 3D Um eixo fixo Variação nos outros dois
Transformações Elementares 3D Deformação Lateral em 3D Deformação Lateral SH xy (sh x, sh y ) = 1 0 sh x 0 0 1 sh y 0 0 0 1 0 0 0 0 1 SH yz (sh y, sh z ) = 1 0 0 0 sh y 1 0 0 sh z 0 1 0 0 0 0 1 SH xz (sh x, sh z ) = 1 sh x 0 0 0 1 0 0 0 sh z 1 0 0 0 0 1 33
Transformações de Corpo Rígido Preservam ângulos e comprimentos Objecto (corpo) não é Transformado nem distorcido Cubo unitário Permanece um cubo unitário T(dx, dy, dz) = 1 0 0 dx R cos θ 0 sin θ 0 y (θ) = 0 1 0 dy 0 1 0 0 0 0 1 dz -sin θ 0 cos θ 0 0 0 0 1 0 0 0 1
Computação Gráfica Matriz de Transformação Composta
Matriz de Transformação Composta Qualquer sequência de Translações Rotações Escalas Pode ser representada numa única matriz: M = r 11 r 12 r 13 t x r 21 r 22 r 23 t y r 31 r 32 r 33 t z 0 0 0 1
Matriz de Transformação Composta Matriz de transformações genérica (MTC) Permite aplicar transformação Com 9 somas e 9 multiplicações (4+4 se 2D) x = x r 11 + x r 12 + x r 13 + t x y = y r 21 + y r 22 + y r 23 + t y z = z r 31 + z r 32 + z r 33 + t z x y z = R. x y z + T Aumento de eficiência (+ eventuais optimizações)
Composição de Transformações em 3D Exemplo Prático Avião definido no sistema de coordenadas local Problema: Orientar o avião de acordo com a direcção de voo Numa posição determinada Solução: Aplicar rotação seguida de translação 46
Composição de Transformações em 3D Exemplo Prático
Composição de Transformações em 3D Exemplo Prático R = 0 up x DOF DOF x (up x DOF) DOF 0 0 0 0 0 1 Como calcular R? Funciona sempre? Não, se DOF em yy
Transformações Geométricas Mudança de Sistema de Coordenadas P (2) = M (3) (1) (2) 2 3 P P = M 1 2 P P M 1 3 = M 1 2 M 2 3
Transformações Geométricas Mudança de Sistema de Coordenadas Exemplo de aplicação: Decomposição em sub-objectos Y Z Y X Y X Z Z X
Transformações Geométricas Mudança de Sistema de Coordenadas Para mover o triciclo Temos de saber as relações das suas partes com o WCS Exemplo: Roda da frente em relação ao WCS 51
Transformações Geométricas Mudança de Sistema de Coordenadas M wo wh = T(βr, 0, 0) P (wh) = R z (β) P ori (wh) P (wo) = T(βr, 0, 0) R z (β) P (wh)
Computação Gráfica Grafo de Cena
Grafo de Cena Cenas 3D armazenadas em DAG Grafo de Cena Java3D VRML OpenSceneGraph OpenSG Como descrever um paralelepípedo numa cena? (com estas primitivas) Grafo de Cena contém Objectos (primitivas gráficas) Cubos, esferas, cones, superfícies,...) Atributos e Transformações
Transformações em Grafos de Cena Exemplo de um Grafo de Cena raíz g3 t0 t5 t6 g1 p3 p4 t1 t2 p1 g3 t3 p2 g2 t4 g3 grupos de obj transformações primitivas Neste grafo de cena A transformação t0 afecta todos os objectos Enquanto t2 só afecta p2 e uma instância do grupo g3 t2 não afecta p1 e a outra instância de g3
Múltipla Instanciação Exemplo de um Grafo de Cena raíz g3 t0 t5 t6 g1 p3 p4 t1 t2 p1 g3 t3 p2 g2 t4 g3 grupos de obj transformações primitivas Múltiplas instâncias de uma sub-árvore Podem utilizar-se várias É necessário definir antes de instanciar Mais simples de concretizar
Transformações Hierárquicas (1/2) Matriz de Transformação Composta (MTC) Matriz a aplicar a cada objecto Cálculo da MTC Concatenação de todas as transformações Em nós superiores no caminho Desde a raiz até ao objecto Detalhes variam consoante o sistema Tenham atenção OpenGL e VRML têm diferenças RTFM Vejam a ordem com que são realizadas as transofrmações
Transformações Hierárquicas (2/2) Exemplo No grafo para g 0, temos MTC = m 0 para p 1, MTC = m 1 * m 0 m0 para p 3, MTC = m 2 * m 0 para p 4, MTC? = m 3 * m 2 * m 0 m1 g0 m2 Em que m i - matriz de transformação p i - primitiva associada ao nó i g i - sub-árvore com raíz em i p1 p3 g2 m3 p4