projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8...

38
CC BY-SA 2017 Engenharia de Computação CEFET/RJ – campus Petrópolis Prof. Luis Retondaro Aula 6 Projeções Computação Gráfica

Upload: hathien

Post on 15-Nov-2018

233 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

CC BY-SA 2017

Engenharia de Computação

CEFET/RJ – campus Petrópolis

Prof. Luis Retondaro

Aula 6

Projeções

Computação Gráfica

Page 2: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

2

Projeções Geométricas

– Projeções permitem a visualização bidimensional de objetos tridimensionais.

– Para gerar a imagem de um objeto 3D, precisamos converter as coordenadas 3D em coordenadas 2D, que correspondam a uma visão do objeto de uma posição específica

Page 3: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

3

Projeções Geométricas

Elementos básicos– Plano de projeção– Raio projetante– Centro de projeção

• Exemplo da projeção de um ponto em um plano. • O plano de projeção é a superfície onde os pontos do

objeto serão projetados• Todos os pontos visíveis do objeto devem ser projetados

no plano de projeção

Page 4: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

4

Projeções Geométricas

Transformações projetivas– Levam retas em retas– Não preservam combinações afim

Page 5: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

5

Projeções Geométricas

Geometria Euclideana– duas retas paralelas não se encontram.

Geometria Projetiva: – não existe paralelismo.

• Retas paralelas se encontram num ponto ideal (no infinito)• Para não haver mais de um ponto ideal para cada inclinação

de reta, assume-se que o plano projetivo se fecha sob si mesmo

• Em 2D, o plano projetivo tem uma borda, que é uma reta no infinito (constituída de pontos ideais)

• Transformações projetivas podem levar pontos ideais em pontos do plano euclidiano e vice-versa

• Problema: O plano projetivo é uma variedade não orientável

Page 6: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

6

Projeções Geométricas

Geometria Projetiva

Page 7: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

7

Projeções Geométricas

Classificação– dependem das relações entre

• o centro projeção• o plano de projeção• as direções das linhas ou raios de

projeção

Page 8: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

8

Projeções Geométricas

Classificação

Page 9: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

9

Projeções Geométricas

Perspectivas e Paralelas

Page 10: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

10

Projeções Paralelas

– O centro de projeção é localizado no infinito

– Todas as linhas de projeção são paralelas entre si

Page 11: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

11

Projeções Paralelas Ortográficas

– As linhas de projeção são paralelas entre si e perpendiculares ao plano de projeção

Page 12: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

12

Projeções Paralelas Ortográficas

Axonométricas– Isométricas são as mais comuns

• os ângulos no plano de projeção entre os eixos principais projetados são iguais entre si, e iguais a 120°

Page 13: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

13

Projeções Paralelas Oblíquas

– As projeções oblíquas são produzidas por um conjunto de linhas de projeção inclinadas em relação ao plano de projeção de qualquer ângulo

– A forma geral de definição de matrizes de projeção oblíquas usa um vetor unitário e sua projeção

– As projeções oblíquas podem ser produzidas com ângulos de linhas de projeções diferentes em relação ao plano de projeção

Page 14: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

14

Projeções Paralelas Oblíquas

Cavaleira (cavalier)

– Quando as linhas de projeção fazem um ângulo de 45 graus com o plano de projeção• pontos projetados preservam sua medida original nas direções não-

paralelas ao plano de projeção

– Não é importante, nesta classificação, o ângulo com que a direção não-paralela ao plano de projeção aparecerá na imagem projetada• assim ambas as imagens acima são de projeções oblíquas cavaleiras• embora a profundidade do cubo apareça em ângulos diferentes em cada

uma delas

Page 15: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

15

Projeções Paralelas Oblíquas

Cabinet

– faz um ângulo específico com o plano de projeção, de modo a reproduzir objetos com uma dimensão de meta de do tamanho original.

– Somente a face do objeto, paralela ao plano de projeção, permanece com o seu tamanho sem distorção (ou com a verdadeira grandeza)

– Esse ângulo é tal que tenha tangente=2, ou seja, é de aproximadamente 63,4o

Page 16: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

16

Câmera virtual

Visualização– O processo de visualização do OpenGL

define uma câmera virtual– Objetos da cena são projetados sobre o

plano de projeção (como um filme virtual) e exibidos na tela

– Existem vários sistemas de coordenadas envolvidos, afim de reduzir o problema a uma configuração canônica

Page 17: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

17

Câmera virtual

– Coordenadas da câmera e seus 7 graus de liberdade:• Localização no espaço (x, y, z)• Ângulos de rotação em torno de cada um dos

eixos• foco

Page 18: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

18

Coordenadas Homogêneas em Espaço Projetivo

Não há distinção entre pontos e vetores.

Em 2D, um ponto (x,y) é representado em c.h. pelo vetor coluna [x· w y· w w]T, para w0– Assim, o ponto (4,3) pode ser representado por

[8 6 2]T, [12 9 3]T, [-4 -3 -1]T, etc

A representação canônica do ponto com coordenadas homogêneas [x y w]T, é:– [x/w y/w 1]T. – Chamamos esta operação de divisão perspectiva.

Page 19: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

19

Exemplo

Os pontos sobre a reta x=y: (1,1), (2,2), (3,3), ...– Podem ser representados em c.h. por: • [1 1 1]T, [1 1 ½]T, etc

– O ponto ideal dessa reta é [1 1 0]T

Page 20: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

20

Transformações Projetivas

• A projeção de um ponto P é dada por:

• Plano de projeção é:1. perpendicular ao eixo z2. está a uma distância d

do C.P. (0,0,0)3. intercepta o semi eixo z

negativo

P'=[ Px

−Pz /d

P y

−Pz /d−d 1 ]

T

y

z

P=(Px ,Py ,Pz ) Plano de projeção

d

• Por semelhança de triângulos, vemos que Px/-Pz = P’x/d

P’=(P’x ,P’y ,P’z )

((0,0,0)

Page 21: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

21

Transformação Perspectiva em Coordenadas Homogêneas

Não existe matriz 3x3 capaz de realizar tal transformação em espaços Euclideanos.– Porém, no espaço projetivo:

P'=[

1 0 0 00 1 0 00 0 1 00 0 −1/d 0

]×[Px

P y

P z

1]=[

Px

P y

P z

−P z/d]=[

Px

−P z/ dP y

−P z/ d

−d1

]

Page 22: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

22

Perspectiva - Sumário

• Para fazer projeção perspectiva de um ponto P, seguem-se os seguintes passos:1. P é levado do espaço Euclideano para o

projetivo.• Trivial – mesmas coordenadas homogêneas.

2. P é multiplicado pela matriz de transformação perspectiva resultando em P’

3. P’ é levado novamente ao espaço Euclideano • Divisão perspectiva (não linear!!).

Page 23: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

23

Projeção Genérica

• E se for usado um sistema de coordenadas arbitrário?

1. Centro de Projeção fora da origem ou2. Cena não está posicionada no semi-eixo z negativo.

• Muda-se o sistema de coordenadas. transformações afim posicionam todos os

elementos corretamente.

• As maneiras pelas quais essas transformações são executadas caracterizam um dado modelo de projeção.

Page 24: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

24

Espaços de Referência

1. Espaço do objeto.2. Espaço da cena.3. Espaço da câmera.4. Espaço normalizado.5. Espaço de Ordenação.6. Espaço da imagem.

Page 25: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

25

Modelo de Câmera Sintética

• OpenGL utiliza uma analogia comparando visualização 3D com tirar fotografias com uma câmera

câmera

tripé modelo

Volume de visão

Page 26: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

26

Transformações em OpenGL

Modelagem– Mover /deformar os objetos

Visualização– Mover e orientar a câmera

Projeção– Ajustar a lente / objetiva da câmera

“Viewport”– Aumentar ou reduzir a fotografia

Page 27: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

27

Sistema de Coordenadas da Câmera

Page 28: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

28

Pipeline de Transformações do OpenGL

Transformação“viewport”

Transformação“viewport”

DivisãoPerspectiva

DivisãoPerspectiva

Matriz deProjeção

Matriz deProjeção

Matriz deModelagem

e Visualização

Matriz deModelagem

e Visualização

vertice

objeto olho recortenormalizadasde dispositivo janela

C o o r d e n a d a s

Page 29: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

29

Estado Inicial do Pipeline

As matrizes “modelview” e “projection” são matrizes identidade:

• vértices não são transformados • projeção é paralela sobre o plano x-y• o mundo visível é restrito ao cubo -1 ≤ x,y,z ≤

1

A transformação “viewport” mapeia o quadrado -1 ≤ x,y ≤ 1 (em coordenadas normalizadas de dispositivo) na superfície total da janela

Page 30: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

30

Especificando a Viewport

Para especificar a área da janela na qual será mapeado o quadrado do plano de projeção:

glViewport (x0, y0, largura, altura)• parâmetros em pixels• (0,0) refere-se ao canto inferior esquerdo da janela

Normalmente, não é necessário modificar, mas é útil para:– manter a razão de aspecto da imagem– fazer zooming e panning sobre a imagem

Page 31: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

31

Especificando TransformaçõesAs matrizes modelview e projection se situam no topo de duas pilhas que são usadas para fazer operações com matrizes.Para selecionar a pilha:

glMatrixMode(GL_MODELVIEW ou GL_PROJECTION)

Existe uma série de funções que operam com a pilha corrente, incluindo

glLoadIdentity () glMultMatrix ()glLoadMatrix () glPushMatrix ()glPopMatrix ()

Page 32: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

32

Transformando Objetos

Para para multiplicar o topo da pilha de matrizes por transformações especificadas por parâmetros:– glTranslatef ( x, y, z )– glRotatef (ângulo, x, y, z)– glScale ( x, y, z )– Cuidado: ordem é importante:

glTranslatef (10, 5, 3);glRotatef (10, 0, 0, 1);glBegin (GL_TRIANGLES);…• Objeto é rodado e depois transladado!

Page 33: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

33

Transformações de Visualização

Duas interpretações:– Levam a câmera até a

cena que se quer visualizar– Levam os objetos da cena

até uma câmera estacionária

• gluLookAt( eyex, eyey, eyez, aimx, aimy, aimz, upx, upy, upz); eye = posição da câmera aim = ponto que define a

direção de visão up = direção “vertical” da

câmera Cuidado com casos

degenerados

x

y

z

aim

eye

up

Page 34: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

34

Projeção Paralela

Default em OpenGLPara ajustar o volume visível, a matriz de projeção é iniciada com

glOrtho (left, right, bottom, top,

near, far); Obs.: near e far são

valores positivos tipicamente

Page 35: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

35

Projeção em Perspectiva

Volume de visão especificado com glFrustum(left,right,bottom,top,near,far); Não necessariamente gera um v.v. simétrico.

Page 36: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

36

Projeção Perspectiva

Alternativamente, pode-se usar a rotinagluPerspective (fovy, aspect, near, far);

Gera um volume de visão simétrico (direção de visão perpendicular ao plano de projeção).

Page 37: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

37

Receita Para Evitar ‘telas pretas’

Especificar Matriz de projeção com gluPerspective()

Tentar levar em conta a razão de aspecto da janela (parâmetro aspect)– Sempre usar glLoadIdentity() antes– Não colocar nada depois

Especificar Matriz de visualização com gluLookAt– Sempre usar glLoadIdentity () antes– Outras transformações usadas para mover /

instanciar os objetos aparecem depois

Page 38: Projeções - retondaro.pro.br · • as direções das linhas ou raios de projeção. 8 Projeções Geométricas Classificação. 9 Projeções Geométricas Perspectivas e Paralelas

38

Exemplo

void resize( int w, int h )

{ glViewport( 0, 0, (GLsizei) w, (GLsizei) h ); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); gluPerspective( 65.0, (GLdouble) w / h,

1.0, 100.0 ); glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); gluLookAt( 0.0, 0.0, 5.0,

0.0, 0.0, 0.0, 0.0, 1.0, 0.0 );

}