A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

April 05 Prof. Ismael H. F. Santos - 1 Computação Gráfica Módulo III – Geometria UniverCidade - Prof. Ismael H F Santos.

Apresentações semelhantes


Apresentação em tema: "April 05 Prof. Ismael H. F. Santos - 1 Computação Gráfica Módulo III – Geometria UniverCidade - Prof. Ismael H F Santos."— Transcrição da apresentação:

1 April 05 Prof. Ismael H. F. Santos - 1 Computação Gráfica Módulo III – Geometria UniverCidade - Prof. Ismael H F Santos

2 April 05 Prof. Ismael H. F. Santos - 2 Considerações Gerais Objetivo: Objetivo: Discutir os principais conceitos eos princípios básicos dos Sistemas Gráficos e a Programação em OpenGL. A quem se destina : A quem se destina : Alunos e Profissionais que desejem aprofundar seus conhecimentos sobre Computação Grafica e suas aplicações.

3 April 05 Prof. Ismael H. F. Santos - 3 Computação Gráfica Volume 1. Jonas Gomes e Luiz Velho. Instituto de Matemática Pura e Aplicada – IMPA. Introdução a Computação Gráfica - Paulo Roma Notas do Curso ministrado na Universidade de Maryland pelo Prof. David Mount Notas do Curso ministrado na Universidade de Maryland pelo Prof. David Mount ftp://ftp.cs.umd.edu/pub/faculty/mount/427/427lects.ps.gz Apostila Fundamentos da Imagem Digital – Antonio Scuri Computer Graphics: Principles and Practice, Second Edition. James Foley, Andries van Dam, Steven Feiner, John Hughes. Addison- Wesley. OpenGL Programming Guide, 2nd Edition. Mason Woo, Jackie Neider, Tom Davis. Addison Wesley. Bibliografia

4 April 05 Prof. Ismael H. F. Santos - 4 Bibliografia OpenGL OpenGL® Programming Guide, 2nd Edition. Mason Woo, Jackie Neider, Tom Davis. Addison Wesley. Manual de referência online Sítio oficial do OpenGL

5 April 05 Prof. Ismael H. F. Santos - 5 Ementa Introdução ao OpenGL Geometria Exemplos de Transformações 2D Fórmulas e cálculos das transformações 2D Usando matriz de transformação (por que?) Coordenadas Homogêneas Concatenação de transformações Transformações 3D Projeções Histórico

6 April 05 Prof. Ismael H. F. Santos - 6 Paradigma dos 4 universos CG – CO023

7 April 05 Prof. Ismael H. F. Santos - 7 Transformações Geométricas

8 April 05 Prof. Ismael H. F. Santos - 8 Transformações Geométricas CG – CO023

9 April 05 Prof. Ismael H. F. Santos - 9 Exemplos de Transformações 2D Translação Escala uniforme não uniforme Rebatimento por um eixo (espelhamento) Troca de eixos Rotação pela origem

10 April 05 Prof. Ismael H. F. Santos - 10 Translação Translation of a point is simply vector addition x y P1P1 P2P2 P 2 = P =

11 April 05 Prof. Ismael H. F. Santos - 11 Escala Scaling about the origin is scalar multiplication x y P1P1 P2P = 2 * 1111 P 2 = P 1 * 2

12 April 05 Prof. Ismael H. F. Santos - 12 Rebatimento por um eixo (espelhamento) x = x y = -y

13 April 05 Prof. Ismael H. F. Santos - 13 Troca de Eixos x = y y = x

14 April 05 Prof. Ismael H. F. Santos - 14 Rotação pela Origem x´ = x.cos - y.sen y´ = x.sen + y.cos x y P = x´ y´ P´ = x y

15 April 05 Prof. Ismael H. F. Santos - 15 Por que usar Matriz nas Transformações? Todas as transformações podem ser efetuadas através da multiplicação de matrizes (usando coordenadas homogêneas). As transformações podem ser aninhadas e resolvidas de modo a haver apenas uma matriz de multiplicação a ser aplicada. A característica descrita acima se torna muito importante quando a mesma seqüência de transformações deve ser aplicada para diversos pontos.

16 April 05 Prof. Ismael H. F. Santos - 16 Multiplicação de Matrizes ab cd x y x y axby x = cxdy y = onde:

17 April 05 Prof. Ismael H. F. Santos - 17 Uniform Scaling,, S s0 0s P x y MSP s0 0s x y sx sy,, I MIsP Ms x y

18 April 05 Prof. Ismael H. F. Santos - 18 Non-uniform Scaling Note orientation shift in line s 1 0 0s 2 x y s 1 x s 2 y S s 1 0 0s 2 P x y

19 April 05 Prof. Ismael H. F. Santos - 19 Non-uniform Scaling x y sxsx x´ y´ = x y P = x´ y´ P´ = x y 0 sysy 0 Redução (0< s x <1), Aumento (s y >1)

20 April 05 Prof. Ismael H. F. Santos - 20 Flip an Axis... What does this do to appearance of objects? x y 10 0 x y

21 April 05 Prof. Ismael H. F. Santos - 21 Swap Axes y x x y

22 April 05 Prof. Ismael H. F. Santos - 22 Rotate by,, MRP R ()cos ()sin ()sin ()cos P x y ()cos x()sin y ()sin x()cos y ()cos ()sin ()sin ()cos x y

23 April 05 Prof. Ismael H. F. Santos - 23 Transformações Geométricas (Translação) x y P x y P = P txtx tyty t = txtx tyty + = x y x y ? x´ y´ = ? ? ? Não pode ser escrito na forma x y 1 x´ y´ = txtx tyty + Ruim para implementação

24 April 05 Prof. Ismael H. F. Santos - 24 Vantagens das coordenadas homogêneas (Translação) yhyh xhxh w w=1 x y t P == x y x y 1 x y 1 = txtx tyty 1 [T] Matriz de Translação

25 April 05 Prof. Ismael H. F. Santos - 25 Coordenadas homogêneas x y P x y 1 x y P wx wy w xhxh yhyh w == x = x h /w y = y h /w w>0 = = yhyh xhxh w w=1 x y Ex.: = = =

26 April 05 Prof. Ismael H. F. Santos - 26 Vantagens das coordenadas homogêneas (pontos no infinito) w=1 uhuh w H1H1 C1C1 H 2 = C 2 H3H3 C3C / / yhyh xhxh w w=1 x y 2 3 u = u uhuh = ? ? infinito na direção (2,3) infinito na direção (2,3) H1H1 H2H2 H3H3 H4H4 C1C1 C2C2 C3C3 C4C4

27 April 05 Prof. Ismael H. F. Santos - 27 Vantagens das coordenadas homogêneas (pontos no infinito, exemplo) A B C D x y O A B C D x y O infinito = = = = = = 2 1

28 April 05 Prof. Ismael H. F. Santos - 28 Efeito de profundidade x y x y

29 April 05 Prof. Ismael H. F. Santos - 29 Simplificação da projeção cônica plano de projeção eye Projeção cônica plano de projeção direção de projeção Projeção ortográfica

30 April 05 Prof. Ismael H. F. Santos - 30 Concatenação x y x0x0 y0y0 x y x y x y x0x0 y0y0

31 April 05 Prof. Ismael H. F. Santos - 31 Concatenação de Transformações x y x y x y x y x y x y T1T1 R1R1 E R2R2 T2T2 P= T 2 R 2 E R 1 T 1 P

32 April 05 Prof. Ismael H. F. Santos - 32 Composição com sistema local/móvel X Y X Y X Y x y X Y X Y x y Y X P 2 = R T P P = X Y P1P1 = X1X1 Y1Y1 P2P2 = X2X2 Y2Y2 T R R T T = R T R -1 P 1 = T P e P 2 = R P 1 P = X Y P3P3 = X3X3 Y3Y3 P2P2 = X2X2 Y2Y2 P 3 = R P e P 2 = T P 3 P 2 = R T R -1 R P P 2 = R T P ou

33 April 05 Prof. Ismael H. F. Santos - 33 Geometria Projetiva e Coordenadas Homogêneas em 3D xhyhzhwxhyhzhw xyz1xyz1 m 11 m 12 m 13 m 14 m 21 m 22 m 23 m 24 m 31 m 32 m 33 m 34 m 41 m 42 m 43 m 44 = P P z x y P xyzxyz = P = xyzxyz x h /w y h /w z h /w =

34 April 05 Prof. Ismael H. F. Santos - 34 Transformações em 3D (translações e escalas) x y z txtx tyty tztz 1 y z 1 x = x y z x y z 1 0 sysy szsz y z 1 x = sxsx 0 0 0

35 April 05 Prof. Ismael H. F. Santos - 35 Transformações em 3D (Rotações) x y z x y z 1 0 cos x sen x 0 0 cos x y z 1 x = sen x x x y z 1 0 cos y sen y 0 0 cos y y z 1 x = sen y y x y z 1 0 cos z sen x 0 0 cos x y z 1 x = sen x z

36 April 05 Prof. Ismael H. F. Santos - 36 Transformações em 3D (rotação em torno de um eixo qualquer) x y z 1 m 12 m 22 m 32 0 m 13 m 23 m y z 1 x = m 11 m 21 m 31 0 v = (v x, v y, v z ) x y z m 11 = v x 2 + cos (1- v x 2 ) m 12 = v x v y (1-cos ) - v z sen m 13 = v z v x (1-cos ) + v y sen m 21 = v x v y (1-cos ) + v z sen m 22 = v y 2 + cos (1- v y 2 ) m 23 = v y v z (1-cos ) - v x sen m 31 = v x v z (1-cos ) - v y sen m 32 = v y v z (1-cos )+ v x sen m 22 = v z 2 + cos (1- v z 2 )

37 April 05 Prof. Ismael H. F. Santos - 37 Projeções CG – CO023

38 April 05 Projeções Planas Cônicas A B ApAp BpBp realista não preserva escala não preserva ângulos

39 April 05 Projeções Planas Paralelas A B ApAp BpBp preserva paralelismo possui escala conhecida pouco realista

40 April 05 Classificação das projeções planas Paralelas ortográficas dp // n plantas elevações iso-métrica oblíquas dp não é paralela a n cavaleiras cabinet Cônicas 1 pto de fuga 2 ptos de fuga 3 ptos de fuga

41 April 05 Projeções de um cubo planta ou elevação iso-métrica 1/2 1 Cabinete ( =45 ou 90) Cavaleira ( =45 ou 90) Paralelas Cônicas 1 pto de fuga2 ptos de fuga

42 April 05 Projeção plana é uma transformação linear? Ou seja : T(P+Q) = T(P)+T(Q) e T( P) = T(P) ? VpVp 2V V (2V) p 2(V p ) O cp plano de projeção O V 2V VpVp 2V p Projeções cônicas não são TL, paralelas podem ser. Projeções cônicas não são TL, paralelas podem ser.

43 April 05 Projeção plana paralela é uma transformação linear? T(P+Q) = T(P)+T(Q) ? T( 0 ) = 0 ? retas paralelas projetam em paralelas QpQp PpPp P p + Q p P O Q QpQp PpPp P+Q Projeção paralela em plano que passa pela origem é uma transformação linear Projeção paralela em plano que passa pela origem é uma transformação linear

44 April 05 Matrizes de projeções Cavaleiras e Cabinetes k x y z (1,1,1) x y 1 1 M T(1,0,0) = (1,0) T(0,1,0) = (0,1) T(0,0,1) = ( -k cos, -k sin ) 1 0 -k.cos( M = 0 1 -k.sin(

45 April 05 Matrizes de projeções pseudo- isométricas x y z (1,1,1) x y 1 M T(1,0,0) = (cos 30,-sin 30) T(0,1,0) = (0,1) T(0,0,1) = (-cos 30, -sin 30) cos30 0 -cos30 M = -sin30 1 -sin30 ipip i j jpjp k kpkp

46 April 05 Prof. Ismael H. F. Santos - 46 Projeção cônica simples xexe yeye zeze P PpPp xexe z e d = n y e z e xexe xpxp yeye ypyp -z e xexe xpxp d = xexe xpxp = yeye ypyp d = d yeye ypyp = z p = -d d d

47 April 05 Prof. Ismael H. F. Santos - 47 Projeção cônica simples xexe yeye zeze P PpPp d yeye ypyp -z e = z p = -d xexe xpxp -z e = d xpxp ypyp zpzp 1 d d d yeye zeze 1 d x e d y e d z e -z e (d/-z e ) x e (d/-z e ) y e -d 1 xexe === w w

48 April 05 Prof. Ismael H. F. Santos - 48 Simplificação da projeção cônica plano de projeção eye Projeção cônica plano de projeção direção de projeção Projeção ortográfica

49 April 05 Prof. Ismael H. F. Santos - 49 xexe yeye zeze Distorce o frustum de visão para o espaço da tela [ P ] = n n z e = -n z e = -f xexe yeye zeze z e = -n z e = -f d = n

50 April 05 Prof. Ismael H. F. Santos - 50 Uma equação para profundidade Ptos no near (z=-n): Ptos no far (z=-f): [ P ] = n n n+f 0 0 n f 0

51 April 05 Prof. Ismael H. F. Santos - 51 xexe yeye zeze Translada o paralelepípedo de visão para origem [ T ] = (r+l)/2 -(t+b)/2 +(f+n)/2 1 xexe yeye zeze l r b t -(r-l)/2 (r-l)/2 -(t-b)/2 (t-b)/2 (f-n)/2-(f-n)/2

52 April 05 Prof. Ismael H. F. Santos - 52 Escala o paralelepípedo de visão no cubo [-1,1]x[-1,1]x[-1,1] [S] = xexe yeye zeze -(r-l)/2 (r-l)/2 -(t-b)/2 (t-b)/2 (f-n)/2-(f-n)/2 2/(r-l) /(t-b) /(f-n) 0 xdxd ydyd zdzd near far near far

53 April 05 Prof. Ismael H. F. Santos - 53 Matriz Frustum do OpenGL [ P ] = n n n+f 0 0 n f 0 [ T ] = (r+l)/2 -(t+b)/2 +(f+n)/2 1 [S] = 2/(r-l) /(t-b) /(f-n) 0 [S T P ] = OpenGL Spec

54 April 05 Prof. Ismael H. F. Santos - 54 Projeção Cônica (Frustum) far left right xexe zeze near top bottom yeye zeze camera (eye) view frustum xexe yeye zeze void glFrustum( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_, GLdouble far_ ); Obs.: near e far são distâncias( > 0) Plano de projeção

55 April 05 Prof. Ismael H. F. Santos - 55 Projeção Cônica (Perspective) aspect = w/h xexe yeye zeze void glPerspective( GLdouble fovy, GLdouble aspect, GLdouble near_, GLdouble far_ ); near far w h xexe zeze fovy

56 April 05 Prof. Ismael H. F. Santos - 56 Matriz Ortho do OpenGL [ T ] = (r+l)/2 -(t+b)/2 +(f+n)/2 1 [S] = 2/(r-l) /(t-b) /(f-n) 0 OpenGL Spec

57 April 05 Prof. Ismael H. F. Santos - 57 xexe yeye zeze Projeção Paralela (Ortho) left right bottom top near far A void glOrtho( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_, GLdouble far_ ); void gluOrtho2D( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top );

58 April 05 Prof. Ismael H. F. Santos - 58 Glu Look At Dados: eye, ref, up (definem o sistema de coordenadas do olho) Determine a matriz que leva do sistema de Coordenadas dos Objetos para o sistema de Coordenadas do Olho eye center up Coordenadas dos ObjetosCoordenadas do Olho void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz);

59 April 05 Prof. Ismael H. F. Santos - 59 Calcula o sistema - x e y e z e center zeze eye vup z0z0 y0y0 x0x0 view z e = – view / ||view|| vup center eye z0z0 y0y0 x0x0 view dados: eye, center, up dados: eye, center, up view = center - eye

60 April 05 Prof. Ismael H. F. Santos - 60 Calcula o sistema - x e y e z e x e = (vup x z e ) / ||vup x z e || center eye vup z0z0 y0y0 x0x0 view zeze xexe y e = z e x x e center eye vup z0z0 y0y0 x0x0 view zeze xexe yeye eye vup zeze xexe yeye view

61 April 05 Prof. Ismael H. F. Santos eye x eye y eye z [ T ] = Translada o eye para origem center eye z0z0 y0y0 x0x0 zeze xexe yeye z0z0 y0y0 x0x0 center eye zeze xexe yeye

62 April 05 Prof. Ismael H. F. Santos - 62 [ R ] = x ex x ey x ez 0 y ex y ey y ez 0 z ex z ey z ez Roda x e y e z e para x o y o z o x e, x o y e, y o z e, z o z0z0 y0y0 x0x0 center eye zeze xexe yeye

63 April 05 Prof. Ismael H. F. Santos - 63 Matriz Look At do OpenGL eye x eye y eye z [ T ] = [ R ] = x ex x ey x ez 0 y ex y ey y ez 0 z ex z ey z ez z e = – view / ||view|| x e = (vup x z e ) / ||vup x z e || y e = z e x x e [ R T ] =?

64 April 05 Prof. Ismael H. F. Santos - 64 Concatenação das transformações xexe yeye zeze xexe yeye zeze xexe yeye zeze [ T ] [ R ] [ P ] [ T 2 ] [ S ] xexe yeye zeze near far [ T ] [ R ] [ P ] [ T 2 ] [ S ] center eye z0z0 y0y0 x0x0 zeze xexe yeye z0z0 y0y0 x0x0 center eye zeze xexe yeye

65 April 05 Prof. Ismael H. F. Santos - 65 Visualização OpenGL CG – CO023

66 April 05 Prof. Ismael H. F. Santos - 66 Simplificação da projeção cônica plano de projeção eye Projeção cônica plano de projeção direção de projeção Projeção ortográfica

67 April 05 Prof. Ismael H. F. Santos - 67 Problema do clipping xexe yeye zeze P1P1 P2P n 1 n n -n 2 n 1 1 -n 1 n n n+f 0 0 n f 0 == n n n+f 0 0 n f n 1 = n n n 2 +2nf -n -n-2f 1 = xexe yeye zeze P 1 P 2 w

68 April 05 Prof. Ismael H. F. Santos - 68 Clipping em coordenadas homogêneas -1 x h /w 1 -1 y h /w 1 -1 z h /w 1 -1 x 1 -1 y 1 -1 z 1 x [left, right] y [bottom, top] z [near, far] xdxd ydyd zdzd near far right left bottom top

69 April 05 Prof. Ismael H. F. Santos - 69 Clipping em coordenadas homogêneas x [left, right] y -1 x h /w 1 1 x x h /w 1 x h w, se w>0 x h w, se w<0 OpenGL Spec

70 April 05 Prof. Ismael H. F. Santos - 70 Clipping em coordenadas homogêneas x [left, right] y -1 x h /w 1 1 x x w x h w x h -w x h w x h -w não serve! w < 0 (z e >0) x h -w = 0 x h -w = 0

71 April 05 Prof. Ismael H. F. Santos - 71 O Equação de um plano N=(A,B,C) P=(x,y,z) x y z P0P0 N.P = N.(P 0 + P) = N.P 0 = d P d = Ax + By + Cz d N.P = Ax + By + Cz Ax + By + Cz +D = 0 (A, B, C) = N e D = -d = N.(-P 0 ) (A, B, C) = N e D = -d = N.(-P 0 ) (N. P = 0)

72 April 05 Prof. Ismael H. F. Santos - 72 O Distância de um ponto a um plano N=(A,B,C) P=(x,y,z) PpPp x y z P N.P = Ax + By + Cz N. P = Ax + By + Cz+D N.P =N.(P p + P ) N.P = d + N. P

73 April 05 Prof. Ismael H. F. Santos - 73 Interseção de reta com plano P1P1 P2P2 x y z d 1 = | Ax 1 + By 1 + Cz 1 +D | d1d1 d2d2 d 2 = | Ax 2 + By 2 + Cz 2 +D | P P = d 1 P 2 + d 2 P 1 d 1 + d 2

74 April 05 Prof. Ismael H. F. Santos - 74 Cálculo das distâncias /* ===================== Distance ====================== ** ** This function computes and returns the distance between a ** point and a plane. Normal points toward out. */ double Distance(double x, double y, double z, double w, int plane ) { switch( plane ) { case 0: return( -w - x ); case 1: return( -w + x ); case 2: return( -w - y ); case 3: return( -w + y ); case 4: return( -w - z ); case 5: return( -w + z ); } return( 0.0 ); }

75 April 05 Prof. Ismael H. F. Santos - 75 Transformação para o Viewport xdxd ydyd zdzd xwxw ywyw w h x w = x 0 + w*(x d -(-1)) / 2 y w = y 0 +h*(y d -(-1)) / 2 z w = z d / 2 + 1/2 x w = x 0 + w*(x d -(-1)) / 2 y w = y 0 +h*(y d -(-1)) / 2 z w = z d / 2 + 1/2 0 void glViewport(GLint x0, GLint y0, GLsizei width, GLsizei height ); z w [0..1]

76 April 05 Prof. Ismael H. F. Santos - 76 Transformações de um vértice OpenGL Spec

77 April 05 Prof. Ismael H. F. Santos - 77 Modelo do Pintor profundidade z

78 April 05 Prof. Ismael H. F. Santos - 78 Problemas na ordenação de faces + + zaza zbzb (a) (b)

79 April 05 Prof. Ismael H. F. Santos - 79 BSP trees: Binary Space Partion Trees a 5b a 4 5b atrásfrente a 5b 3 4 5b atrásfrente 2 atrás 5a b 3 2 5a 1 4 5b

80 April 05 Prof. Ismael H. F. Santos - 80 Exibição de uma BSP void bspDisplay(bspTree *tree) { if (arvore não é vazia) { if (observador está a frente da raiz) { bspDisplay(tree backChild); DisplayPolygon(tree root); bspDisplay(tree frontChild); } else { bspDisplay(tree frontChild); DisplayPolygon(tree root); bspDisplay(tree backChild); } Mostra a árvore de trás, a raiz e a árvore da frente. Mostra a árvore da frente, a raiz e a árvore de atrás.

81 April 05 Prof. Ismael H. F. Santos - 81 BSP trees: Dois exemplos de exibição a 5b 3 2 5a 1 4 5b 5a, 2, 1, 3, 5b, a 5b 3 2 5a 1 4 5b 4, 5b, 3, 5a, 2, 1

82 April 05 Prof. Ismael H. F. Santos - 82 ZBuffer: idéia básica z MATRIZ DE PROFUNDIDADES

83 April 05 Prof. Ismael H. F. Santos - 83 Rasterização de Polígonos e Linhas

84 April 05 Prof. Ismael H. F. Santos - 84 ZBuffer - pseudo-código void ZBuffer( void) { int x,y; for (x=0; x


Carregar ppt "April 05 Prof. Ismael H. F. Santos - 1 Computação Gráfica Módulo III – Geometria UniverCidade - Prof. Ismael H F Santos."

Apresentações semelhantes


Anúncios Google