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

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

Computação Gráfica – Transformações Projetivas

Apresentações semelhantes


Apresentação em tema: "Computação Gráfica – Transformações Projetivas"— Transcrição da apresentação:

1 Computação Gráfica – Transformações Projetivas
Profa. Mercedes Gonzales Márquez

2 Tópicos Conceito de Projeção
Projeção Paralela (Ortográfica) e Projeção Perspectiva Projeções em OpenGL

3 A Câmera OpenGL O modelo de visualização em OpenGL, é similar a uma câmera fotográfica! Tripé: visualização Modelo: modelagem Lente: projeção Papel: viewport

4 Analogia da Câmera (OpenGL)
O processo de transformação para produzir a cena desejada para visualização é análogo a tirar uma foto com uma câmera. Os passos são: 1. Orientar a câmera em direção da cena (transformação de visualização) 2. Posicionar devidamente o(s) objeto(s), a serem fotografados, no cenário (transformações geométricas estudadas em aula, também chamadas transformações de modelagem). 3. Escolher o lente da câmera ou ajustar o zoom (transformação de projeção). 4. Determinar o tamanho desejado para a fotografia final (transformação de viewport).

5 Transformações Projetivas
A projeção permite a visualização bidimensional de objetos tridimensionais. Para gerar a imagem de um objeto 3D a partir de um ponto de vista dado, é necessário realizar a sua projeção, ou seja, converter as suas coordenadas 3D em coordenadas 2D.

6 Elementos básicos da Projeção
Plano de Projeção; Projetante, ou raio projetante; Centro de projeção. y P Raio de Projeção Plano de Projeção x z Centro de Projeção

7 Elementos básicos da Projeção
Plano de Projeção: A superfície onde será projetado o objeto, ou seja, onde ele será representado em 2D; Projetante, ou raio projetante: Retas que passam pelos pontos do objeto e pelo centro de projeção. Centro de projeção: Ponto fixo de onde os raios projetantes partem.

8 Tipos de Projeção Existem dois tipos de projeção:
Projeção Paralela, Ortogonal ou ortográfica Projeção perspectiva

9 Tipos de Projeção Projeção perspectiva : É a mais realista, pois é análogo ao processo de formação de imagens em nossos olhos ou numa câmera fotográfica. Considera a profundidade como elemento de seu cálculo e apresenta um resultado mais familiar ao observador humano. 

10 Tipos de Projeção (b)Projeção Paralela ou ortográfica: É a projeção ortogonal de um ponto no plano de projeção. Pode ser vista como uma projeção perspectiva onde o centro de projeção está no infinito. 

11 Projeção Paralela As linhas que unem os pontos A e B às suas projeções A’ e B’ são paralelas, isto faz com que o segmento projetado tenha o mesmo tamanho para qualquer distância entre o plano de projeção e o objeto.

12 Tipos de Projeção

13 Matriz de Projeção Paralela
Se quisermos a projeção ortográfica em relação ao plano xy (ou z=0), a matriz em coordenadas homogêneas é Se no lugar do plano z=0 for escolhido outro plano qualquer z=Tz paralelo a ele, a matriz será

14 Modelo perspectivo ideal
y o x P1 z p1 O f Plano imagem P y x p1 Plano imagem O o P1 p z f P

15 Matriz de Projeção Perspectiva
y Plano de projeção x (x,y,z) f Centro de projeção (x´,y´) Por similaridade de triângulos temos

16 Projeções em OpenGL A transformação de projeção em OpenGL descreve como especificar a forma e orientação do volume de visualização. O volume de visualização determina: como a cena será projetada na tela (com projeção paralela ou perspectiva) e quais objetos ou partes de objetos serão eliminados da cena.

17 Projeção paralela ortográfica

18 Projeção em perspectiva
Centro de projeção fixo: eye (posição da câmera) Duas possibilidades: Determina um tronco de pirâmide: glFrustrum Determina o ângulo de visão gluPerspective

19 Definição do volume de visualização
glFrustrum(left, right, bottom, top, near, far); nao precisa ser simétrico gluPerspective(fovy, aspect ratio, near, far); simétrico Esses comandos definem a matriz de projeção (PROJECTION)

20 glFrustrum

21 glFrustrum

22 gluPerspective

23 gluPerspective

24 Matrizes de transformação
glMatrixMode(GL_PROJECTION); Define tipo e parâmetros da projeção

25 Exemplo – Cubo (Programa cube.c)
Um cubo é escalado pela transformação de modelagem glScalef (1.0, 2.0, 1.0). A transformação de visualização gluLookAt(), posiciona e orienta a câmera em direção do cubo. As transformações de projeção e viewport são também especificadas.

26 Exemplo – Cubo (Programa cube.c)
Example 3-1 : Transformed Cube: cube.c #include <GL/gl.h> #include <GL/glu.h> #include <GL/glut.h> void init(void){ glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_FLAT); }

27 Exemplo – Cubo (Programa cube.c)
void display(void){ glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); glLoadIdentity (); /* clear the matrix */ /* viewing transformation */ gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glScalef (1.0, 2.0, 1.0); /* modeling transformation */ glutWireCube (1.0); glFlush (); }

28 Exemplo – Cubo (Programa cube.c)
void reshape (int w, int h){ glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION); glLoadIdentity (); glFrustum (-1.0, 1.0, -1.0, 1.0, 1.5, 20.0); glMatrixMode (GL_MODELVIEW); }

29 Exemplo – Cubo (Programa cube.c)
int main(int argc, char** argv){ glutInit(&argc, argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); glutInitWindowSize (500, 500); glutInitWindowPosition (100, 100); glutCreateWindow (argv[0]); init (); glutDisplayFunc(display); glutReshapeFunc(reshape); glutMainLoop(); return 0; }

30 Exercício Modifique o programa cube.c de forma que
(a) Projete o cubo ortogonalmente. (b) Projete o cubo em perspectiva porém com a função gluPerspective().

31 glViewPort glViewPort (x,y,width, height) Define um retângulo de pixels na janela no qual a imagem final será mapeada. (x,y) : o canto inferior esquerda da viewport e (width,height) largura e altura do retângulo da viewport Por default os valores iniciais são (0,0,w,h) onde w, h são os tamanhos pré-definidos da janela.

32 glViewPort A razão da viewport deve ser igual à razão do volume de visualização. Se as duas razões forem diferentes, a imagem projetada será distorcida ao ser mapeada na viewport.

33 Exercício O programa planet.c usa glRotate*() para rotacionar um planeta ao redor do sol e para rotacionar o planeta ao redor do seu próprio eixo. Modifique o programa para que acrescente mais dois planetas com seus respectivos satélites. Como se trata de objetos hierárquicos use glPushMatrix e glPopMatrix (vide aula).

34 Exercício Seguindo a orientação dada nos slides de transformações geométricas, faça um programa que desenhe um carro com cinco parafusos em cada uma das suas quatro rodas.


Carregar ppt "Computação Gráfica – Transformações Projetivas"

Apresentações semelhantes


Anúncios Google