Computao Grfica Transformaes Projetivas Profa Mercedes Gonzales Mrquez

  • Slides: 34
Download presentation
Computação Gráfica – Transformações Projetivas Profa. Mercedes Gonzales Márquez

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

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

Tópicos l l l Conceito de Projeção Paralela (Ortográfica) e Projeção Perspectiva Projeções em Open. GL

A Câmera Open. GL l O modelo de visualização em Open. GL, é similar

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

Analogia da Câmera (Open. GL) l O processo de transformação para produzir a cena

Analogia da Câmera (Open. GL) l 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).

Transformações Projetivas – – A projeção permite a visualização bidimensional de objetos tridimensionais. Para

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

Elementos básicos da Projeção l l l Plano de Projeção; Projetante, ou raio projetante;

Elementos básicos da Projeção l l l 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

Elementos básicos da Projeção l l l Plano de Projeção: A superfície onde será

Elementos básicos da Projeção l l l Plano de Projeção: A superfície onde será projetado o objeto, ou seja, onde ele será representado em 2 D; 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.

Tipos de Projeção Existem dois tipos de projeção: (a) Projeção Paralela, Ortogonal ou ortográfica

Tipos de Projeção Existem dois tipos de projeção: (a) Projeção Paralela, Ortogonal ou ortográfica (b)Projeção perspectiva

Tipos de Projeção (a) Projeção perspectiva : É a mais realista, pois é análogo

Tipos de Projeção (a) 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.

Tipos de Projeção (b)Projeção Paralela ou ortográfica: É a projeção ortogonal de um ponto

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.

Projeção Paralela As linhas que unem os pontos A e B às suas projeções

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.

Tipos de Projeção

Tipos de Projeção

Matriz de Projeção Paralela l l Se quisermos a projeção ortográfica em relação ao

Matriz de Projeção Paralela l l 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á

Modelo perspectivo ideal p y x o Plano imagem p 1 f P 1

Modelo perspectivo ideal p y x o Plano imagem p 1 f P 1 z O P y x p 1 o Plano imagem O f p P 1 z P

Matriz de Projeção Perspectiva y Plano de projeção x (x´, y´) l f Centro

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

Projeções em Open. GL A transformação de projeção em Open. GL descreve como especificar

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

Projeção paralela ortográfica

Projeção paralela ortográfica

Projeção em perspectiva l l Centro de projeção fixo: eye (posição da câmera) Duas

Projeção em perspectiva l l Centro de projeção fixo: eye (posição da câmera) Duas possibilidades: – – Determina um tronco de pirâmide: gl. Frustrum Determina o ângulo de visão glu. Perspective

Definição do volume de visualização l gl. Frustrum(left, right, bottom, top, near, far); nao

Definição do volume de visualização l gl. Frustrum(left, right, bottom, top, near, far); nao precisa ser simétrico l glu. Perspective(fovy, aspect ratio, near, far); simétrico Esses comandos definem a matriz de projeção (PROJECTION) l

gl. Frustrum

gl. Frustrum

gl. Frustrum

gl. Frustrum

glu. Perspective

glu. Perspective

glu. Perspective

glu. Perspective

Matrizes de transformação l gl. Matrix. Mode(GL_PROJECTION); – Define tipo e parâmetros da projeção

Matrizes de transformação l gl. Matrix. Mode(GL_PROJECTION); – Define tipo e parâmetros da projeção

Exemplo – Cubo (Programa cube. c) Um cubo é escalado pela transformação de modelagem

Exemplo – Cubo (Programa cube. c) Um cubo é escalado pela transformação de modelagem gl. Scalef (1. 0, 2. 0, 1. 0). A transformação de visualização glu. Look. At(), posiciona e orienta a câmera em direção do cubo. As transformações de projeção e viewport são também especificadas.

Exemplo – Cubo (Programa cube. c) Example 3 -1 : Transformed Cube: cube. c

Exemplo – Cubo (Programa cube. c) Example 3 -1 : Transformed Cube: cube. c #include <GL/gl. h> #include <GL/glut. h> void init(void){ gl. Clear. Color (0. 0, 0. 0); gl. Shade. Model (GL_FLAT); } l

Exemplo – Cubo (Programa cube. c) void display(void){ gl. Clear (GL_COLOR_BUFFER_BIT); gl. Color 3

Exemplo – Cubo (Programa cube. c) void display(void){ gl. Clear (GL_COLOR_BUFFER_BIT); gl. Color 3 f (1. 0, 1. 0); gl. Load. Identity (); /* clear the matrix */ /* viewing transformation */ glu. Look. At (0. 0, 5. 0, 0. 0, 1. 0, 0. 0); gl. Scalef (1. 0, 2. 0, 1. 0); /* modeling transformation */ glut. Wire. Cube (1. 0); gl. Flush ();

Exemplo – Cubo (Programa cube. c) void reshape (int w, int h){ gl. Viewport

Exemplo – Cubo (Programa cube. c) void reshape (int w, int h){ gl. Viewport (0, 0, (GLsizei) w, (GLsizei) h); gl. Matrix. Mode (GL_PROJECTION); gl. Load. Identity (); gl. Frustum (-1. 0, 1. 5, 20. 0); gl. Matrix. Mode (GL_MODELVIEW); }

Exemplo – Cubo (Programa cube. c) int main(int argc, char** argv){ glut. Init(&argc, argv);

Exemplo – Cubo (Programa cube. c) int main(int argc, char** argv){ glut. Init(&argc, argv); glut. Init. Display. Mode (GLUT_SINGLE | GLUT_RGB); glut. Init. Window. Size (500, 500); glut. Init. Window. Position (100, 100); glut. Create. Window (argv[0]); init (); glut. Display. Func(display); glut. Reshape. Func(reshape); glut. Main. Loop();

Exercício (1)Modifique o programa cube. c de forma que (a) Projete o cubo ortogonalmente.

Exercício (1)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 glu. Perspective().

gl. View. Port (x, y, width, height) Define um retângulo de pixels na janela

gl. View. Port (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.

gl. View. Port A razão da viewport deve ser igual à razão do volume

gl. View. Port 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.

Exercício l O programa planet. c usa gl. Rotate*() para rotacionar um planeta ao

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

Exercício l Seguindo a orientação dada nos slides de transformações geométricas, faça um programa

Exercício l 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.