Introduo Computao Grfica Claudio Esperana Paulo Roma Cavalcanti

  • Slides: 19
Download presentation
Introdução à Computação Gráfica Claudio Esperança Paulo Roma Cavalcanti Ricardo Marroquim

Introdução à Computação Gráfica Claudio Esperança Paulo Roma Cavalcanti Ricardo Marroquim

Estrutura do Curso • Teoria e prática • Avaliação w Teoria 2 provas w

Estrutura do Curso • Teoria e prática • Avaliação w Teoria 2 provas w Prática Trabalhos de implementação • Biblioteca Open. GL • Interface c/ sistema de janelas – Glut / Qt / outras – Multiplataforma • C / C++ / Python / Java • Grau (nota) baseado no êxito, na qualidade e na criatividade das soluções

Conteúdo do Curso • • • Introdução Gráficos vetoriais e matriciais Dispositivos gráficos Programação

Conteúdo do Curso • • • Introdução Gráficos vetoriais e matriciais Dispositivos gráficos Programação gráfica com Open. GL Geometria Câmeras e projeções Modelagem geométrica Cor Iluminação local e global • • • Colorização (shading) Visibilidade Recorte Rasterização Mapeamentos w Textura w Rugosidade w Ambiente • Técnicas sobre imagens w Dithering w Quantização de cores w Codificação

Plataforma para desenvolvimento • Ambiente Windows w Compiladores Cygwin ou Mingw 32 w Fonte

Plataforma para desenvolvimento • Ambiente Windows w Compiladores Cygwin ou Mingw 32 w Fonte deve ser compilável em Linux • (Ferramentas proprietárias não são aceitáveis) • Ambiente Linux w gcc / g++ / Python / Sun Java w (ferramentas instaladas por default na maioria das distribuições) • Open. GL 2 -> drivers atualizados

Bibliografia • Real-Time Rendering – Tomas Akenine-Möller & Eric Haines – A. K. Peters

Bibliografia • Real-Time Rendering – Tomas Akenine-Möller & Eric Haines – A. K. Peters • Computer Graphics with Open. GL – Hearn & Baker – Prentice Hall • Notas do Curso ministrado na Universidade de Maryland pelo Prof. David Mount w http: //www. cs. umd. edu/~mount/427/Lects/427 lects. pdf • Apostila Prof. Paulo Roma w http: //www. lcg. ufrj. br/compgraf 1/downloads/apostila. pdf w http: //www. lcg. ufrj. br/compgraf 1/downloads/apostila. ps. gz

Bibliografia Open. GL • Open. GL® Programming Guide, 5 th Edition. Mason Woo, Jackie

Bibliografia Open. GL • Open. GL® Programming Guide, 5 th Edition. Mason Woo, Jackie Neider, Tom Davis. Addison Wesley. (cobre Open. GL v 2. 0) w Versão online para a versão 1. 1 disponível em http: //www. opengl. org/documentation/red_book/ • Sítio oficial do Open. GL w www. opengl. org

Computação Gráfica Análise (reconhecimento de padrões) Modelos Matemáticos Imagens Síntese (rendering) Modelagem Processamento de

Computação Gráfica Análise (reconhecimento de padrões) Modelos Matemáticos Imagens Síntese (rendering) Modelagem Processamento de Imagens

Disciplinas relacionadas • Computação w Algoritmos w Estruturas de Dados w Métodos Numéricos •

Disciplinas relacionadas • Computação w Algoritmos w Estruturas de Dados w Métodos Numéricos • Matemática w Geometria, w Álgebra Linear • Física w Ótica w Mecânica • Psicologia w Percepção • Artes

Aplicações • Desenho Assistido por Computador (CAD) • Desenho Geométrico Assistido por Computador (CAGD)

Aplicações • Desenho Assistido por Computador (CAD) • Desenho Geométrico Assistido por Computador (CAGD) • Sistemas de Informações Geográficas (GIS) • Visualização Científica • Visualização Médica • Educação • Entretenimento

Representações Gráficas • Gráficos “Vetoriais” w Representados por coleções de objetos geométricos • •

Representações Gráficas • Gráficos “Vetoriais” w Representados por coleções de objetos geométricos • • • Pontos Retas Curvas Planos Polígonos • Gráficos “Matriciais” w Amostragem em grades retangulares w Tipicamente, imagens digitais • Matrizes de “pixels” • Cada pixel representa uma cor w Dados volumétricos • Imagens médicas • Cada pixel representa densidade ou intensidade de algum campo

Representações Vetoriais • Permitem uma série de operações sem (quase) perda de precisão w

Representações Vetoriais • Permitem uma série de operações sem (quase) perda de precisão w Transformações lineares / afim w Deformações • Por que “quase”? Estruturas de dados utilizam pontos e vetores cujas coordenadas são números reais w É necessário usar aproximações • Representação em ponto-flutuante • Números racionais • Complexidade de processamento = O (no vértices / vetores) • Exibição w Dispositivos vetoriais w Dispositivos matriciais (requer amostragem, i. e. , rasterização)

Representações Matriciais • Representação flexível e muito comum • Complexidade de processamento = O

Representações Matriciais • Representação flexível e muito comum • Complexidade de processamento = O (no de pixels) • Muitas operações implicam em perda de precisão (reamostragem) w Ex. : rotação, escala w Técnicas para lidar com o problema • Ex. : técnicas anti-serrilhado (anti-aliasing) • Exibição w Dispositivos matriciais w Dispositivos vetoriais (requer uso de técnicas de reconhecimento de padrões)

Conversão entre representações Repr. Vetoriais Rasterização, “Scan conversion” Reconhecimento de padrões Repr. Matriciais

Conversão entre representações Repr. Vetoriais Rasterização, “Scan conversion” Reconhecimento de padrões Repr. Matriciais

Dispositivos Gráficos • Dispositivos vetoriais w Terminais gráficos vetoriais (obsoletos) w Traçadores (plotters) w

Dispositivos Gráficos • Dispositivos vetoriais w Terminais gráficos vetoriais (obsoletos) w Traçadores (plotters) w Dispositivos virtuais • Ex. : Linguagens de descrição de página (HPGL / Postscript) • Rasterização implícita • Dispositivos Matriciais w Praticamente sinônimo de dispositivo gráfico w Impressoras, displays

Displays • Resolução espacial w Tipicamente de 640 x 480 até 1600 x 1200

Displays • Resolução espacial w Tipicamente de 640 x 480 até 1600 x 1200 w Tendência de aumento • Resolução no espaço de cor w Monocromático (preto e branco) • Praticamente restrito a PDAs e equipamentos de baixo custo w Tabela de cores • Cada pixel é representado por um número (tipicamente 8 bits – de 0 a 255) que indexa uma tabela de cores (tipicamente RGB 24 bits) • Poucas (ex. : 256) cores simultâneas mas cada cor pode ser escolhida de um universo grande (ex. : 224) • Problema da quantização de cores w RGB • Cor é expressa por quantidades discretas de vermelho (red), verde (green) e azul (blue) • Tipicamente 24 bits (8 bits para cada componente) • Quando o número de bits não é divisível por 3, a resolução do azul costuma ser menor que das outras 2 componentes

Arquitetura de Sistemas Gráficos CPU Periféricos Arquitetura Simples Barramento (BUS) Memória Frame Buffer Controlador

Arquitetura de Sistemas Gráficos CPU Periféricos Arquitetura Simples Barramento (BUS) Memória Frame Buffer Controlador de vídeo Monitor

Arquitetura de Sistemas Gráficos CPU Periféricos Arquitetura com processador gráfico Barramento (BUS) Memória do

Arquitetura de Sistemas Gráficos CPU Periféricos Arquitetura com processador gráfico Barramento (BUS) Memória do Sistema Processador gráfico Memória Frame Buffer Monitor Controlador de vídeo

Processador (acelerador) gráfico • Hardware especializado • Uso de paralelismo para atingir alto desempenho

Processador (acelerador) gráfico • Hardware especializado • Uso de paralelismo para atingir alto desempenho • Alivia a CPU do sistema de algumas tarefas, incluindo: w Transformações • Rotação, translação, escala, etc w Recorte (clipping) • Supressão de elementos fora da janela de visualização w w Projeção (3 D 2 D) Mapeamento de texturas Rasterização Amostragem de curvas e superfícies paramétricas • Geração de pontos a partir de formas polinomiais • Normalmente usa memória separada da do sistema w Maior banda

Programação Gráfica • À primeira vista: basta desenhar w Uma subrotina para desenhar cada

Programação Gráfica • À primeira vista: basta desenhar w Uma subrotina para desenhar cada tipo de objeto • Mas. . . w w w Como fazer interação? Como estruturar a cena? Como controlar os atributos dos objetos? Como resolver problemas de visibilidade? Como suportar diversos dispositivos gráficos? Como fazer programas independentes dos sistemas operacionais? • Ferramentas: w APIs gráficas (ex. : Open. GL, Cairo, Direct. X, Java 3 D) w Camadas de interface com o S. O. / sistema de janelas