Carregar apresentação
A apresentação está carregando. Por favor, espere
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 P´ 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.
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.