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

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

Visualização do OpenGL. 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.

Apresentações semelhantes


Apresentação em tema: "Visualização do OpenGL. 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."— Transcrição da apresentação:

1 Visualização do OpenGL

2 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

3 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

4 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

5 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

6 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

7 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)

8 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

9 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

10 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 ); }

11 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]

12 Transformações de um vértice OpenGL Spec

13 Modelo do Pintor profundidade z

14 Problemas na ordenação de faces + + zaza zbzb (a) (b)

15 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

16 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.

17 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

18 ZBuffer: idéia básica z MATRIZ DE PROFUNDIDADES

19 Rasterização de Polígonos e Linhas

20 ZBuffer - pseudo-código void ZBuffer( void) { int x,y; for (x=0; x

21 Interpolação de cores void glShadeModel (GL_SMOOTH); void glShadeModel (GL_FLAT);

22 Suavização da tonalização c1c1 c4c4 c2c2 c3c3 c 12 c 43 c N1N1 N4N4 N2N2 N3N3 N 12 N 43 c Gouraud Phong N


Carregar ppt "Visualização do OpenGL. 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."

Apresentações semelhantes


Anúncios Google