computação gr ficamotta/dim102/introducao.pdf · rotinas que usam comandos opengl para mudar...

40
Computação Gráfica 35T56 – Sala 3E3 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227

Upload: others

Post on 12-Feb-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

Computação Gráfica

35T56 – Sala 3E3Bruno Motta de CarvalhoDIMAp – Sala 15 – Ramal 227

Page 2: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM00972

Logística do Curso

2 avaliações Projetos práticos  Grupos de duas pessoas (somente para os 

projetos!!) Implementações podem ser feitas na 

linguagem de sua preferência

Page 3: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM00973

Programa do Curso

Introdução Formação e representação de imagens Algoritmos de rasterização e recorte Transformações geométricas OpenGL Visualização 3D Sistemas de representação de cores Representação de curvas e superfícies

Page 4: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM00974

Programa do Curso

Modelagem de sólidos Iluminação e sombreamento Ray­tracing Radiosidade Algoritmos de visibilidade Animação Programação de GPUs

Page 5: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM00975

Referências

Computer Graphics: Principle and Practice. Foley, Van Dam, Feiner and Hughes, Addison Wesley, 1993

Computer Graphics with OpenGL, 3rd Ed. Hearn, Baker. Prentice­Hall, 2004

OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 1.4, Fourth Edition. Shreiner, D., M. Woo, J. Neider and T. Davis. Addison­Wesley, 2003. http://www.rush3d.com/reference/opengl­redbook­1.1/

Page 6: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM00976

Cronograma Inicial

Data Assunto Data Assunto21/02/06 Introdução 25/04/06 Iluminação e sombreamento23/02/06 27/04/06Ray-tracing02/03/06Aquisição e Representação de Imagens 02/05/06PBRT07/03/06Algoritmos de rasterização e recorte 04/05/06Acelerando o ray-tracing09/03/06Transformações geométricas 09/05/06Revisão14/03/06OpenGL 11/05/06Prova16/03/06Aula prática de OpenGL 16/05/06Radiosidade21/03/06Visualização tridimensional 18/05/06Radiosidade23/03/06Visualização tridimensional 23/05/06Animação28/03/06Sistemas de representação de cores 25/05/06Animação30/03/06Prova 30/05/06Programação de GPUs04/04/06Representação de curvas e superfícies 01/06/06Programação de GPUs06/04/06Representação de curvas e superfícies 06/06/06Acompanhamento dos projetos11/04/06Representação de curvas e superfícies 08/06/06Acompanhamento dos projetos13/04/06Semana Santa 13/06/06Apresentação de Trabalhos18/04/06Modelagem de sólidos 15/06/06Apresentação de Trabalhos20/04/06Modelagem de sólidos 20/06/06Prova final

Page 7: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM00977

Introdução

O que é computação gráfica? Como evoluiu a computação gráfica? Quais as áreas de aplicação em que a 

computação gráfica é utilizada?

Page 8: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM00978

Introdução

Geração de imagens (possivelmente realísticas) de cenas virtuais usando computadores. Neste contexto se refere aos algoritmos, construções conceituais e conhecimentos matemáticos necessários para gerar cenas virtuais bi ou tridimensionais 

A síntese de figuras artificiais – a criação de imagens a partir de descrições

Page 9: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM00979

Relacionamento com outras áreas afins

DescriçõesImagens

        VisãoComputacional

Computação    Gráfica

Processamento   de Imagens

Page 10: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009710

História da Computação Gráfica – Anos 60 DAC­1 (Design Augmented by Computers) – 

GM e IBM Sketchpad (1961) – Ivan Sutherland (MIT) – 

Primeiro programa gráfico interativo Spacewar (1961) – Steve Russel (MIT) – 

Primeiro vídeo­game Primeiras aplicações de visualização científica 

– Bell Labs., Boeing, etc. Primeiras animações e algoritmos de 

visibilidade (University of Utah) 

Page 11: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009711

Evolução do Hardware Gráfico – Anos 60

Mini­computador interativo (PDP­1, da DEC) – 1960

Caneta ótica para o Sketchpad (MIT) – 1961

Terminal gráfico (IBM 2250) – 1965 Head­Mounted Display (Sutherland, 

MIT) – 1966

Page 12: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009712

História da Computação Gráfica – Anos 70

SCANIMATE (CIC) – programa para leitura (através de scanners) e manipulação de artwork já existente

Gouraud shading (1971) – interpolação de cores nos polígonos

Fundação da III, LucasFilm, Robert Abel & Associates, digital Effects, MAGI, Systems Simulation, etc.

Primeiro SIGGRAPH (1973) Texture­mapping, Z­buffering, renderização de 

superfícies curvas (Catmull, UU) 1974

Page 13: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009713

História da Computação Gráfica – Anos 70 Phong Shading (Phong, UU) – 1974 Fractais (Mandelbrot, IBM) – 1975 Bump­Mapping, environment­Mapping (Blinn, 

JPL) – 1976 Primeira edição da Computer Graphic World 

(CGW) – 1977  Anti­aliasing (Blinn, JPL) – 1977  Primeiros efeitos especiais produzidos por CG 

em longas metragem (Star Wars – 1977, Alien – 1979) 

Page 14: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009714

Evolução do Hardware Gráfico – Anos 70 Primeiros microcomputadores (Altair 8800, 

MITS) – 1971  Fundação da Atari – 1971 e criação do primeiro 

video­game comercial (Pong) – 1972 Primeiros frame­buffers – 1972  Primeiro computador pessoal com display 

gráfico (e mouse) Xerox Alto (Xerox) – 1972 Fundação da Apple – 1975 

Page 15: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009715

História da Computação Gráfica – Anos 80

Ray­tracing (Whitted) – 1980  REYES, primeiro renderer da LucasFilm, 

que evoluiu para o Renderman (Carpenter, LucasFilm) – 1981 

Autocad 1 – 1982  Primeiro morphing (Brigham) – 1982  Tron (1982), The Last Starfighter (1984), 

Young Shelock Holmes (1985) Wavefront – Primeiro software comercial 

para animação 3D – 1984 

Page 16: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009716

História da Computação Gráfica – Anos 80

Radiosidade (Goral, Greenberg, Cornell) – 1984

Shading languages (Perlin, NYU) – 1985  TOPAS – Primeiro software de animação 

(de boa qualidade) para computadores pessoais – 1986

Animação forense – 1986  Divisão gráfica da LucasFilm se separa 

criando a Pixar – 1986 Renderman – 1988  

Page 17: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009717

Evolução do Hardware Gráfico – Anos 80

Lançamento do IBM PC – 1981  Fundação da SGI – 1982 Dataglove – 1983  Placa de vídeo Targa – 1984  VPL Research – Primeira firma 

especializada em realidade virtual – 1985 

Macintosh – 1985 

Page 18: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009718

História da Computação Gráfica – Anos 90

3D Studio (Autodesk) – 1990  Programas de pintura 

impressionista – NPR – (Haeberli) – 1990 

Terminator 2 – 1991  Doom – Primeiro jogo 3D para 

múltiplos jogadores – 1993 Programa de ilustração em 

nanquim (Salesin et al.) ­  1994 

Page 19: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009719

História da Computação Gráfica – Anos 90

Toy Story – Primeiro longa­metragem completamente (??)gerado por computador – 1995 

Cassiopéia (1996) Maya (Wavefront) – 1998

Page 20: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009720

Evolução do Hardware Gráfico – Anos 90 Playstation (Sony) – 1995  Nintendo 64 – 1996 NVidia RIVA 128 – 1997    NVidia RIVA TNT (primeira a suportar multi­

texturas) – 1998  NVidia GeForce 256 (primeira GPU) – 1999  NVidia GeForce2 Go (primeira GPU para 

laptops) – 2000  NVidia GeForce3 (primeira GPU 

programável) – 2001 

Page 21: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009721

História da Computação Gráfica – Atual (Anos 2000)

Point­rendering Programação em GPUs Crowd simulation Técnicas mais avançadas para 

representar fenômenos naturais, como fogo, água, raios, etc. 

Page 22: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009722

Evolução do Hardware Gráfico – Atual (Anos 2000)

NVidia GeForce3 (primeira GPU programável) – 2001 

Shading languages NVidia GeForce FX – 2002  GeForce FX 5900 – 2003  GeForce 6800 – 2004  GPU ultrapassa a CPU em número de 

transistores  Cinema digital

Page 23: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009723

Aplicações de Computação Gráfica  Entretenimento

Page 24: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009724

Aplicações de Computação Gráfica Educação

Page 25: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009725

Aplicações de Computação Gráfica Simulação

Page 26: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009726

Aplicações de Computação Gráfica Treinamento Realidade Virtual

Page 27: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009727

Aplicações de Computação Gráfica Visualização 

Page 28: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009728

Aplicações de Computação Gráfica Diagnósticos 

Médicos

Page 29: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009729

Aplicações de Computação Gráfica Diagnósticos 

Médicos

Page 30: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009730

Softwares Utilizados em Computação Gráfica

OpenGL (Open Graphics Library) – Atualmente na versão 2.0. Padrão de referência de placas gráficas

DirectX Open Inventor Renderman  Maya  3DMax Blender

Page 31: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009731

OpenGL

Interface de software para o hardware gráfico

Permite que programas desenvolvidos em uma máquina com uma placa gráfica funcionem em outras máquinas com diferentes placas

Page 32: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009732

OpenGL

Page 33: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009733

OpenGL

OpenGL Utility Library (GLU) – Contém rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL)

OpenGL Extension to the X Window System (GLX) – Para uso com X Window

The OpenGL Utility Toolkit (GLUT) – Interface de programação para a escrita de programas gráficos portáteis

Page 34: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009734

OpenGL

Extensões – Mecanismo utilizado para a incorporação de novas funções ao padrão OpenGL

Geralmente, extensões propostas por companhias como Sun, Nvidia, ATI, são incorporadas no padrão aprovado pela ARB (Architecture Review Board) da OpenGL

GLEW (The OpenGL Extension Wrangler Library) – Ajuda na inicialização e no desenvolvimento de aplicações portáteis

Page 35: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009735

DirectX

API da Microsoft Windows API usada para acessar funções de baixo nível

Direct Draw – Toda renderização passa por ele Direct 3DRM – Sistema de alto nível baseado 

em objetos e frames para programas 3D Direct 3DIM – Suporte 3D de baixo nível para 

DirectX DirectX Graphics – A partir do DirectX 8.0, os 

três sistemas acima foram unidos no DirectX Graphics

Page 36: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009736

Open Inventor

Open Inventor é uma biblioteca orientada a objeto baseada no OpenGL que implementa objetos e métodos para a criação de aplicações gráficas tridimensionais interativas 

Considerado por muitos como a biblioteca padrão para visualização tridimensional e software de simulação visual na comunidade científica

Page 37: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009737

Open Inventor

Open Inventor oferece: Objetos e um modelo de 

eventos para interação com o usuário

Componentes de aplicações de alto nível para a criação e edição de cenas 3D

Impressão e conversão de dados para vários formatos

Page 38: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009738

Open Inventor (Coin)

Coin implementa a API do Open Inventor

Gratuita, com versões para Unix, Linux, BSD, Mac OS e Windows

Com bindings para Qt, Win32, Xt/Motif e Mac OS X GUI

Page 39: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009739

Estado da Arte em Computação Gráfica Simulação de fluidos, fumaça, 

viscosidade Renderização não­fotorealista (NPR) Renderização baseada em imagens  Renderização baseada em vídeos Simplificação e deformação de malhas 

tridimensionais

Page 40: Computação Gr ficamotta/dim102/Introducao.pdf · rotinas que usam comandos OpenGL para mudar projeções, desenhar superfícies, etc. (acompanha OpenGL) OpenGL Extension to the

DIM009740

Estado da Arte em Computação Gráfica Caracterização e extração de 

movimento para animação Programação de unidades de 

processamento gráfico (GPUs) Modelagem interativa Renderização de áudio Animação de personagens 

influenciada por dados