Projeções e Visualização



Documentos relacionados
Computação Gráfica. 5385: Licenciatura em Engenharia Informática. Cap. 3 Janelas e Visores. Janelas e Visores

Transformações geométricas

Visualização. - Aula 4 -

Engenharia Informática Computação Gráfica

CG 2013/2014 Primeiro Teste LEIC Alameda/Taguspark

3D no OpenGL. Visualização e Transformações Perspectiva. Transformações do Modelview. Processo

Computação Gráfica. Engenharia de Computação. CEFET/RJ campus Petrópolis. Prof. Luis Retondaro. Aula 6. Projeções

Sist. Coordenadas Câmera (SCC)

FCG2006 Prova sobre OpenGL e Rastreamento de Raios

Introdução Programando com OpenGL Exemplos. O que é OpenGL? [1]

Computação Gráfica OpenGL 05 3D

Pipeline de Visualização Câmara Virtual

Computação Gráfica. Licenciatura em Engenharia Informática e de Computadores Alameda / Taguspark. Terceiro Teste 19 de Maio de 2012

Projeções: leitura recomendada. Aulas 3, 4 e 10 da apostila Telecurso 2000

OpenGL. Alberto B. Raposo

Projeções e Transformações em 3D

Transformações 3D. Soraia Raupp Musse

2º Exame Computação Gráfica

Cap. 4: Janelas, Visores & Recorte Gráfico

Computação Gráfica. Licenciatura em Engenharia Informática e de Computadores Alameda / Taguspark. Exame de Recurso 29 de Junho de 2011

O Problema da Projecção. Antonio L. Bajuelos Departamento de Matemática Universidade de Aveiro

Apontamentos de Computação Gráfica

1º Exame. Computação Gráfica

1º Exame. Computação Gráfica

Computação Gráfica. Licenciatura em Engenharia Informática e de Computadores Alameda/Taguspark. 1º Exame 29 Junho de 2010

Introdução a OpenGL. Renato Rodrigues Oliveira da Silva Danilo Medeiros Eler

Animação e Visualização Tridimensional

Pipeline de Visualização Câmara Virtual

7. Projeções Geométricas e Visualização 3D

Computação Gráfica OpenGL 05 3D

Computação Gráfica - OpenGl 02

Universidade Federal de Alagoas Instituto de Matemática. Câmera Virtual. Prof. Thales Vieira

- INF Remoção de faces ocultas Aula 21

UNESP DESENHO TÉCNICO: Fundamentos Teóricos e Introdução ao CAD. Parte 3/5: Prof. Víctor O. Gamarra Rosado

Imagem e Gráficos. vetorial ou raster?

OpenGL. Conceitos Básicos. Waldemar Celes. Tecgraf/PUC-Rio

The Graphics Pipeline

2º Exame. Computação Gráfica

Modelo Hierárquico & Transformações Geométricas

TÉCNICAS DE CAD PARA ENGENHARIA CIVIL AULA Visualização do Sistema de Coordenadas Corrente

Sistemas Gráficos Interativos. Interações

Introdução ao OpenGL

APOSTILA II DAC CRIADO POR DÉBORA M. BUENO FRANCO PROFESSORA DE DESENHO ASSISTIDO POR COMPUTADOR FACULDADE EDUCACIONAL DE ARAUCÁRIA - FACEAR

"SISTEMAS DE COTAGEM"

Aula 8 : Desenho Topográfico

OpenGL. Parte I: Geometria. Waldemar Celes Departamento de Informática Tecgraf/PUC-Rio

Enquadramento e Conceitos Fundamentais

Fundamentos de Computação Gráfica. Transformações Geométricas

Remoção de Faces Traseiras Recorte

OpenGL, GLU e GLUT. GLUT (OpenGL Utility Toolkit) OpenGL. Linguagem. OpenGL. Esqueleto de um programa em PyOpenGL

DESENHO TÉCNICO MECÂNICO I. Aula 02 Projeção, vistas, diedros. Desenho Técnico Mecânico I

Computação Gráfica. Licenciatura em Engenharia Informática e de Computadores Taguspark / Alameda. Primeiro Teste 17 de Março de 2012

URI- Universidade Regional Integrada do Alto Uruguai e das Missões Campus de Frederico Westphalen Curso: Química Industrial.

OpenGL. Computação Gráfica ISEL/DEETC/SP Computação Gráfica

FOTOGRAMETRIA DIGITAL. Rogério Mercandelle Santana Universidade Federal de Viçosa Departamento de Solos

Ferramentas Web, Web 2.0 e Software Livre em EVT

CG 2015/2016 Segundo Teste LEIC Alameda/Taguspark. Segundo Teste. 18 de Novembro de 2015

SISTEMA DE MONGE SISTEMA DE MONGE SISTEMA DE MONGE SISTEMA DE MONGE ESTUDO DAS SOMBRAS ESTUDO DAS SOMBRAS ESTUDO DAS SOMBRAS ESTUDO DAS SOMBRAS

Apresentação - GDC I. 1ª Semana (17/09 a 21/09)

CG 2015/2016 Prova de Repescagem LEIC Alameda/Taguspark. 12 de Janeiro de 2016

Prova Prática de Geometria Descritiva A

Forma de Captura de Imagens Digitais:

Modelos de Iluminação e Reflexão

ÓPTICA GEOMÉTRICA. Lista de Problemas

08/12/2014 APLICAÇÕES DE ESPELHOS ESFERICOS TEORIA INTRODUÇÃO. Departamento de Física, Campus de Ji-Paraná Semestre2014-2

Dupla Projeção Ortogonal / Método de Monge

Unidade Curricular: Desenho Técnico Assistido por Computador. Curso: Engenharia Civil. Docentes: Prof. António Bento Dias (Responsável); Objetivos:

Desenho de uma matriz de retângulos Serve de base para o exercício das cores

Prof. Sérgio Viana. Estas notas de aula são destinadas aos alunos que. Gráfica, para um posterior estudo mais profundo.

Representação de cotas. Representaçã. Princípios de cotagem em Desenho Técnico 2. Princípios de cotagem em Desenho Técnico

FUNDAMENTOS E APLICAÇÕES. Luis Valente

Transcrição:

Computação Gráfica 5385: Licenciatura em Engenharia Informática Cap. 4 Projeções e Visualização Projeções e Visualização

Sumário

Pipeline de Visualização em OpenGL x y z w vértice original MODELVIEW matrix x y z w eye eye eye eye PROJECTION matrix vértice no sistema de coordenadas do olho x y w proj proj proj projecção 2D do vértice no plano de projecção perspective division x y 1 dev dev viewport transformation coordenadas normalizadas do dispositivo de saída (foreshortened) x y win win coordenadas do pixel no visor da janela de desktop

Como se processa cenas 3D no pipeline gráfico?

Tipos de câmara Antes de gerar uma imagem temos que escolher o observador (ou câmara).

Câmara clássica

Câmara de lente dupla de Gauss

Câmara foto-realística Adaptação Glare & Difracção

Renderização de cenas 3D em OpenGL Veja-se slide 3 para comparação! sistema de coordenadas da câmara sistema de coordenadas da janela 2D sistema de coordenadas do dispositivo/ecrã glmatrixmode(gl_modelview)... glviewport(0,0,xres,yres) glmatrixmode(gl_projection)... 9

Renderização de cenas 3D em OpenGL : da geometria à imagem http://www.songho.ca/opengl/gl_transform.html

Tipos de projeção 3D 2D Projecção Perspectiva Paralela 1-ponto Ortogonal 2-pontos Axonométrica 3-pontos Oblíqua

Projeções paralelas O observador no infinito. As projectantes são paralelas. ortogonal axonométrica oblíqua

Matriz de projeção paralela ortogonal A mais simples de todas as projeções: as projetantes são perpendiculares ao plano de projeção. Normalmente, o plano de projeção está alinhado com os eixos (muitas das vezes em z=0). As projeções paralelas ortogonais também são designadas por vistas (em desenho técnico). = = 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 where 1 0 1 M MP P y x z y x

Projeções paralelas ortogonais em OpenGL glortho(xmin, xmax, ymin, ymax, zmin, zmax);

Várias projeções em vários visores: exemplo Obtêm-se através do reposicionamento da câmara. Em alternativa, obtêm-se através do reposicionamento do/a objecto/cena. perspectiva planta alçado lateral esquerdo vista de frente

Projeções paralelas axonométricas: isométrica, dimétrica e cavaleira Se o objecto está alinhado com os eixos, o resultado é uma projecção ortogonal; Caso contrário, é uma projecção axonométrica. Se o plano de projecção intersecta os eixos XYZ à mesma distância relativamente à origem, o resultado é uma projecção isométrica. x + y + z = 1

Projeções em perspectiva O observador está a uma distância finita do/a objeto/cena. As projetantes não são paralelas e convergem para um ou mais pontos (observadores). perspectiva com 1-ponto perspectiva com 2-pontos perspectiva com 3-pontos

Projeções em perspectiva com um observador O observador está a uma distância finita do/a objeto/cena. As projetantes or raios visuais convergem para um ponto (observador), designado por COP. Em OpenGL, só se usa um observador.

Matriz de projeção em perspetiva com um observador Considere uma projeção em perspetiva com o ponto de vista na origem e a direção de observação orientada ao longo do eixo -z, com o plano de projeção localizado em z = -d. d y y x z = x' d x'= y z = y' d y'= x z /d y z /d -z y x'= xd = x z z /d y'= y z /d z'= d x' y' = z' 1 x z /d y z /d d 1 PROJECTION matrix x 1 0 0 0 x y = 0 1 0 0 y z 0 0 1 0 z z /d 0 0 1/ d 0 1 perspective division

Projeção em perspetiva com um observador em OpenGL Por via de glfrustrum: frustum = pirâmide truncada do campo de vista glfrustum(xmin, xmax, ymin, ymax, zmin, zmax);

Projeção em perspetiva com um observador em OpenGL (cont.) Por via de glfrustrum: glfrustrum(-1.0, 1.0, -1.0, 2.0, 5.0, 50.0);

Projeção em perspetiva com um observador em OpenGL (cont.) Por via de gluperspective: gluperspective(fov, aspect, near, far); h 2 θ = tan h = 2near tan θ near 2 2

Projeção em perspetiva com um observador em OpenGL (cont.) Por via de gluperspective: gluperspective(60, 1.0, 1.0, 50.0);

Câmara móvel em 3D

Câmara móvel em 3D com a utilização de OpenGL Por via de glulookat: glulookat(eyex, eyey, eyez, lookx, looky, lookz, upx, upy, upz); Θ Φ equivalente a: gltranslatef(-eyex, -eyey, -eyez); glrotatef(theta, 1.0, 0.0, 0.0); glrotatef(phi, 0.0, 1.0, 0.0);

Janela de projeção A partir do momento que se efectua a projeção da cena 3D na janela do plano de projeção, a renderização processa-se de forma idêntica ao 2D. (r,t,-n) (l,b,-n) h = n.tan f 2 w = h.a (w,h,-n) (-w,-h,-n)

Transformação janela-visor: revisão A partir do momento que se efetua a projeção da cena 3D na janela do plano de projeção, a renderização processa-se de forma idêntica ao 2D. De facto, é preciso mapear os pontos da janela de projeção para os pixéis do visor da janela da interface, por forma a determinar o pixel associado a cada vértice dos objectos da cena 3D. coordenadas do dispositivo normalizado coordenadas do visor da janela da interface

Transformação janela-visor: revisão (cont.) x n = 2 x p x min 1 x max x min y n = 2 y y p min 1 y max y min ( ) width x v = x n +1 y v = y n +1 2 ( ) height 2 + left + bottom static void reshape(int width, int height) { glviewport(0, 0, width, height); glmatrixmode(gl_projection); glloadidentity(); gluperspective(85.0, 1.0, 5, 50); }

Razão de aspeto: revisão aspect ratio = 1.25 aspect ratio = 0.5

Exemplo: bule de chá com quatro vistas Veja-se o programa completo na página web da disciplina (teapot.zip). void display(void) { glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT); glpushmatrix(); // top left: top view glviewport(0, Height/2, Width/2, Height/2); glmatrixmode(gl_projection); glloadidentity(); glortho(-3.0, 3.0, -3.0, 3.0, 1.0, 50.0); glulookat(0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0); glmatrixmode(gl_modelview); glloadidentity(); teapot();... // bottom right: rotating perspective view glviewport(width/2, 0, Width/2, Height/2); glmatrixmode(gl_projection); glloadidentity(); gluperspective(70.0, 1.0, 1, 50); glulookat(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glmatrixmode(gl_modelview); glloadidentity(); glrotatef(45.0, 1.0, 0.0, 0.0); teapot(); glpopmatrix(); } glutswapbuffers(); 31

Sumário: