Programação Gráfica Cap 2

Documentos relacionados
n À primeira vista: basta desenhar n Uma subrotina para desenhar cada tipo de objeto n Mas... n Como fazer interação? n Como estruturar a cena?

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

Computação Gráfica. Engenharia de Computação. CEFET/RJ campus Petrópolis. Prof. Luis Retondaro. Aula 2. Introdução a OpenGL

Computação Gráfica OpenGl 01

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

CG 2013/2014 Primeiro Teste LEIC Alameda/Taguspark

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

LAB. 1. Introdução à OpenGL

OpenGL. Introdução ao OpenGL. Sistemas de Coordenadas. OpenGL 29/04/2010. Profa. M. Cristina Profa. Rosane. Application Programming Interface (API)

Exame Tipo Computação Gráfica

Sistemas Gráficos e Modelos Cap 1

Introdução ao OpenGL e à Programação Baseada em Eventos

Transformações (Cap 4.3, 4.4 e 4.6 a 4.10)

Visibilidade. Licenciatura em Engenharia Informática e de Computadores Computação Gráfica. Edward Angel, Cap. 7 Apontamentos CG

Computação Gráfica - OpenGl 02

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

Capítulo 3 Primeiros Passos em OpenGL Função Desenha Função Teclado Função Inicializa Programa Principal...

Sistema de coordenadas

INTRODUÇÃO A OPENGL. Computação Gráfica

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

Projeções: conceitos. Projetar pontos no espaço d dimensional no plano d-1 dimensional, usando um ponto especial chamado centro de projeção

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

Fundamentos de Computação Gráfica

Introdução à Programação em OpenGL. Prof. Márcio Bueno

Introdução à OpenGL. SCC0250/ Computação Gráfica

FUNDAMENTOS E APLICAÇÕES. Luis Valente

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

OpenGL. Soraia Musse

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

Conceitos importantes da Computação Gráfica [3]

Rendering de Polígonos. Determinação de Superfícies Visíveis. Back Face Culling. Back Face Culling. Back Face Culling. Back Face Culling.

CRAb Grupo de Computação Gráfica Departamento de Computação UFC

Transformações Geométricas

OpenGL. Introdução ao OpenGL. OpenGL. OpenGL. OpenGL. OpenGL. Profa. M. Cristina Profa. Rosane

Prof. Regis de Castro Ferreira

Sist. Coordenadas Câmera (SCC)

- INF Remoção de faces ocultas Aula 21

Introdução ao Processamento e Síntese de imagens - Projeções

António Costa. Paulo Roma Cavalcanti

Exame de 1ª Época Computação Gráfica

OpenGL. Alberto B. Raposo

Revisões. Módulos Sistemas Gráficos e Interação. Filipe Pacheco SGRAI 2017/18 DEI-ISEP 228. Instituto Superior de Engenharia do Porto

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

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

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

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

1º Exame Computação Gráfica

FCG2006 Prova sobre OpenGL e Rastreamento de Raios

OpenGL. Sumário COMPUTAÇÃO GRÁFICA E INTERFACES. Introdução. Introdução. Carlos Carreto

Visualização em 3-D - Projeções Planares

Introdução a OpenGL. Profª. Alessandra Martins Coelho

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

Cidália Fonte Faculdade de Ciências e Tecnologia da Universidade de Coimbra

UNIVERSIDADE FEDERAL FLUMINENSE Pedro Martins Menezes. Um estudo dos estágios dos pipelines gráficos

Exame de Época Especial Computação Gráfica

2º Exame. Computação Gráfica

Enquadramento e Conceitos Fundamentais

Projeção 3D. André Tavares da Silva. Capítulo 5 de Foley Capítulo 2 de Azevedo e Conci

Exame de 2ª Época Computação Gráfica

Desenvolvimento de jogos tridimensionais com OpenGL. Bruno Pereira Evangelista

Transcrição:

Programação Gráfica (2.2 a 2.7) Instituto Superior Técnico, 2006/2007 Índice Programação 2D Sistemas de Coordenadas API do OpenGL Primitivas e Atributos Introdução à Cor Projecções Interacção com o Sistema de Janelas Remoção de Elementos Ocultos Fundamentos de Animação 2 Programação 2D Múltiplas Funções Representação Interna 3D Objectos definidos no plano Z=0 p = (x, y, z) Vertex versus Point glvertex* () * é interpretado como nt ou ntv n dimensão ( a 4) t i, f, d v apontador para um array 3 4 Desenho de Linhas e Pontos Com Apontador glbegin (GL_Lines); glvertex3f (x, y, z); glvertex3f (x2, y2, z2); glend(); glbegin (GL_Points); glvertex3f (x, y, z); glvertex3f (x2, y2, z2); glend(); Typedef GLfoat pont2 2 ; point2 p; glvestex2fv (p); overloading de operadores... glflush (); 5 6

Sistemas de Coordenadas Independência do Dispositivo Coordenadas de ecrã? Origem? Dimensões? Qualquer Sistema de Coordenadas Do Objecto Do Mundo (Da Câmara) Do Dispositivo 7 8 API do OpenGL Vantagens Semelhante ao DirectX e ao Java3D com funções: Primitivas Atributos Visualização Transformação Entrada de Dados Controlo Interrogação Norma industrial (mais de 300 empresas) Estável Portável Escalável Fácil de Usar Bem documentada Suporta a programação de GPUs 9 0 Máquina OpenGL Bibliotecas Máquina de Estados Informação: Flui através do Pipeline Altera o Estado do Pipeline Pontos? Cor? 2 2

GLU, OpenGL Utility Library Criação de objectos complexos Esferas Teapot Curvas Quadráticas Nurbs (superfícies paramétricas) Gestão de Erros (ocorrência e descrição de erros) Transformação em objectos suportados directamente pelo OpenGL GLU (cont) Especificação de Texturas Transformação de Coordenadas (glulookat,..) Tesselação (triangulação de polígonos isto é criação de facetas) 3 4 Teapot GLUT (Toolkit) e GLX, WGL e AGL Gestão de Janelas simplificado: Criação, redesenho, posição, dimensões,.. Gestão de Tabela de Cores Funções de Retorno (callback) Gestão das Unidades de Entrada de Dados (rato, teclado) Ciclo de Execução (glutmainloop) 5 6 WGL Tipos de Primitivas Extensão para Microsoft a qual suporta: Formato das quadrículas Acesso a extensões (dependentes do ambiente) Gestão de buffers Sincronização (com o pipeline do Windows GDI) Acesso directo à Tabela de Cores Primitivas Gráficas Primitivas Raster Dois sub-pipelines 7 8 3

Pipeline Simplificado Primitivas Geométrica 9 20 Polígonos Mais Polígonos Usados, por exemplo, em Modelos Digitais de Terrenos 2 22 Limitações dos Polígonos Aplicação Shapes Polígonos Convexos Polígonos Planos Polígonos que não se auto-intersectam Polígonos sem Buracos Tipos de Objectos Geométricos (glbegin) O Estado Cor (usar o polígono) Geometria da malha de triângulos (alterar 2ª e 3ª cor do Triangle_Strip) Polígonos não planares Atributos (fronteira do polígono) Objectos Pontos versus Vértices 23 24 4

Tipos de Texto Texto Vectorial Texto Vectorial (Post-Script) Podem ser transformados Texto Raster 25 26 Texto Raster Atributos Rectângulo de bits (bit blocks) Alterar a dimensão Biblioteca GLUT Modo com uma primitiva é desenhada, por exemplo a sua Cor Aplicados em vários andares do pipeline Poligonos Preenchimento com padrão Desenho da fronteira... 27 28 Exemplos de Atributos Cor em OpenGL Cor RGB glcolor3f (.0, 0.0, 0.0); Cor para Limpar (como está no início?) glclearcolor (.0,.0,.0); 29 30 5

A 4ª Cor Alpha Mapa de Cores Se a mistura de cores (blending) estiver activa Alpha é o valor da opacidade ou da transparência Cor branca e opaca glclearcolor (.0,.0,.0,.0); Nº de cores baixo ou partilhado por várias aplicações Manter a profundidade do Frame Buffer (3 * m bits) Solução: 3 32 Color-Lookup Table em OpenGL Projecções Inicialização da Tabela de Cores glutsetcolor (int color, GLfloat red, GLfloat green, GLfloat blue); Obtenção da cor glindexi (element); Desenhar é Projectar numa superfície plana Representações planares no Paleolítico superior (40000AC) Perspectiva surge com o Renascimento Cúpula de Stª Maria del Fiore 33 34 Projecções Geométricas Planas Pirâmide Visual Linhas Projectantes são rectas Superfície de Projecção plana (plano de imagem ou de projecção) Pirâmide visual (Alberti) Um retrato é a intersecção de uma pirâmide visual a uma dada distância, com um centro fixo e uma dada posição da luz representada por arte com linhas e polígonos numa dada superfície (Alberti, Tratado sobre a pintura, Séc. XVI) plano da imagem Centro de projecção (CDP) 35 36 6

Projecções Perspectiva Determinada pelo centro de projecção (CDP) Distância do CDP ao plano finita Raios projectores convergentes Raios Projectores CDP A B A B Plano de Projecção Projecções Paralelas Raios projectores paralelos entre si Distância do CDP ao plano infinita. Direcção de projecção versus Plano de Projecção A Direcção de Projecção Raios Projectores A B B Plano de Projecção 37 38 Projecções Ortogonais Vistas Planta Direcção de projecção coincide com a normal Normal ao plano Vistas: alinhada com um dos eixos Axonométricas: não alinhada Usadas em desenhos técnicos Engenharias Civil e Mecânica Arquitectura Vantagens Medidas precisas todas as vistas na mesma escala Limitações Não é possível visualizar objectos 3D Múltiplas vistas para definir peça Alçado lateral Alçado frontal 39 40 Axonométricas Projecções Oblíquas Isométricas: ângulos de 20º entre eixos ( escala) Dimétricas: dois ângulos iguais (2 escalas) Trimétrica: três ângulos diferentes (3 escalas) Raios projectores formam ângulo oblíquo com o plano de projecção Vantagens Mostra forma exacta de uma face Comparação de dimensões possível Ideia da aparência 3D de um objecto Desvantagens Aparência distorcida Falta de realismo normal ao plano direcção de projecção 4 42 7

Exemplos de Projecções Oblíquas Projecções Perspectiva Cavaleira Angulo entre projectores e normal = 45º Faces perpendiculares à escala Gabinete Ângulo entre projectores e normal arctg(2) = 63.4º Faces perpendiculares à escala de 50% /2 Linhas paralelas convergem em pontos de fuga. Linhas paralelas aos eixos definem pontos de fuga axiais (máximo de 3) Não mantém proporcionalidade entre distâncias Tamanho dos objectos diminui com a distância Só mantém a amplitude dos ângulos em faces paralelas ao plano de projecção Ponto de Fuga (x) Ponto de Fuga (y) 43 44 Pontos de Fuga Número de pontos de fuga = eixos coordenados intersectados pelo plano de projecção. Ponto de Fuga, Plano Z: y Mais Pontos de Fuga y x z x 3 pontos de fuga (z y x) z x 2 ponto de fuga (z e x) z 45 46 Tipos de Projecções Planas Síntese Paralelas Ortogonais Oblíquas ponto de fuga Alçado Gabinete Frontal Planta Cavaleira Alçado Lateral Outras Isométrica Outras Perspectivas 2 pontos de fuga 3 pontos de fuga NPP - Normal ao Plano de Projecção DP - Direcção de Projecção ) Ortogonais NPP um eixo, DP NPP uma face, medidas exactas 2) Axonométricas NPP qq eixo, DP NP faces adjacentes, nenhuma exacta, uniformemente encolhidas 3) Oblíquas NPP um eixo, DP NPP faces adjacentes, uma exacta, outras uniformemente encolhidas 47 48 8

Projecção Paralela em OpenGL Volume de Visualização (objectos podem estar por detrás da câmara) void glortho (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far); Projecção Perspectiva em OpenGL Volume definido, também, no Sistema de Coordenadas de Visualização void glfrustum (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far); 49 50 Aplicação projection Sistema de Janelas Vários tipos de projecção Utilização de função do glulookat Planos de Recorte Abertura da câmara Efectuado através de funções do GLUT Viewport ou Janela do ecrã Resolução = Resolução do ecrã Funcionamento de um programa: int main(int argc, char** argv){ glutcreatewindow("simple"); glutdisplayfunc(mydisplay); glutmainloop(); } 5 52 Funções GLUT Remoção de Elementos Ocultos #include <GL/glut.h> int main(int argc, char** argv) { glutinit(&argc,argv); glutinitdisplaymode(glut_single GLUT_RGB GLUT_DEPTH); glutinitwindowsize(500,500); glutinitwindowposition(0,0); glutcreatewindow("simple program"); glutdisplayfunc(mydisplay); } myinit(); glutmainloop(); 53 54 9

Remoção de Elementos Ocultos em OpenGL Buffer adicional Z-Buffer Inicializar: glenable (GL_DEPTH_TEST); Animação Redesenhar um objecto Como se consegue que duas imagens não sejam vistas em sequência? Qual a frequência de desenho? Limpar antes de cada desenho: glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT) 55 56 Exemplo Execução Em cada ciclo limpar o buffer de cor: glclear (GL_COLOR_BUFFER_BIT); Desenhar o Polígono em cada posição glbegin (GL_POLYGON);... glend (); 57 58 Uso de dois Buffers Frequência de desenho Mostrar num Buffer (front buffer) Desenhar num 2º Buffer (back buffer) Para trocar os buffers na função de Desenho: glutswapbuffers (); Mas: glutinitdisplaymode (... GLUT_DOUBLE); Desenho das imagens demasiado depressa... Como se controla a velocidade de desenho? Usar mecanismos de timing do Sistema Operativo... Troca de buffers sincronizada com a frequência de refrescamento Uso do GLUT 59 60 0

Funcionamento no GLUT Sumário Int n = 60; /* frequencia de refrescamento */ gluttimerfunc {00, mytimer, n); /* funcao de retorno */ Void mytimer (int v); { glutpostredisplay (); gluttimerfunc (000/n, mytimer, v); } Sistemas de Coordenadas Introdução à Máquina OpenGL Primitivas e Atributos Introdução à Cor Projecções Interacção com o Sistema de Janelas Remoção de Elementos Ocultos Fundamentos de Animação 6 62

This document was created with Win2PDF available at http://www.win2pdf.com. The unregistered version of Win2PDF is for evaluation or non-commercial use only. This page will not be added after purchasing Win2PDF.