Transcript
  • Introduo 1

    Marcelo Gattass 10/7/2013

    1. Introduo Este captulo apresenta as reas, as aplicaes, os profissionais e as ferramentas de programao utilizadas na Computao Grfica. Sugerimos uma leitura rpida para se familiarizar com a nomenclatura da rea. muito importante o exerccio de implementao de um programa fornecido que tem como objetivo exemplificar o uso do OpenGL e da GLUT.

    A Computao Grfica acompanha a evoluo dos computadores na sociedade e tambm teve um comeo restrito e pouco natural para hoje se tornar presente em praticamente todas as nossas atividades. Se observarmos a difuso dos computadores vemos que a Computao Grfica tem tido um papel decisivo nela. As interfaces grficas na forma de janelas, botes, menus e dispositivos de seleo1, por exemplo, foram muito importantes para a popularizao dos computadores pessoais da dcada de 1980. Dificilmente esta difuso dos computadores teria ocorrido no fossem estas interfaces grficas. Atualmente as cmeras digitais acopladas a computadores portteis de mo e a telefones mveis ainda esto impulsionando novos usos da informtica no nosso dia a dia.

    reas da CG A rea de entretenimento com os jogos eletrnicos e os efeitos especiais do cinema digital , provavelmente, a face mais conhecida e sedutora da Computao Grfica para o pblico em geral. A Computao Grfica, entretanto, no se restringe ela. Ela est presente nas atividades de projeto e construo de carros, casas e plantas industriais. A Fig. 1.1 ilustra um modelo de uma plataforma martima de petrleo, acrescida de efeitos artsticos para divulgao.

    Fig. 1.1- Modelo de uma plataforma martima de petrleo.

    1 Estas interfaces, denominadas WIMP para windows, icons, menus and poniter devicesapareceram na Xerox e se popularizaram com as diversas verses do sistema operacional Windows da MicroSoft.

  • Introduo 2

    Marcelo Gattass 10/7/2013

    Outras aplicaes importantes podem ser encontradas nas reas de imagens mdicas, cirurgia com realidade aumentada, superviso e controle, e simulao na Engenharia, Geologia, Ssmica, entre muitas. Uma boa maneira de estudarmos uma rea to ampla como a Computao Grfica consiste em dividi-la de forma a compreender suas partes e a estrutura do todo.

    Inicialmente a Computao Grfica foi dividida em trs grandes reas: sntese de imagens (redenring), processamento de imagens e viso computacional. Estas reas foram categorizadas em funo da entrada e sada dos seus algoritmos como ilustra a Fig. 1.2.

    Imagem digital

    Modelos e dados

    processamento de imagens

    viso computacional

    sntese de imagens

    (rendering)

    Fig. 1.2 Diviso clssica das reas da Computao Grfica.

    Sntese de imagens (rendering) Os algoritmos de sntese de imagens produzem imagens digitais a partir de dados e modelos computacionais de objetos, luzes e cmera. De certa forma so as mquinas fotogrficas do mundo virtual. Tiram fotos dos objetos que esto l. A Fig. 1.3 mostra, por exemplo, uma imagem de uma mesa de sinuca tirada de uma implementao do trabalho proposto no Captulo de Rastreamento de Raios.

    Fig. 1.3 Imagem pelo algoritmo de Rastreamento de Raios

  • Introduo 3

    Marcelo Gattass 10/7/2013

    Os algoritmos de sntese de imagens so fundamentais para sistemas de Realidade Virtual. A Fig. 1.4 ilustra um destes sistemas onde o modelo de uma plataforma martima est sendo examinado com o auxlio de culos que permitem que cada um dos olhos receba uma imagem correspondente a sua posio, reproduzindo o efeito de estereoscopia e criando uma sensao de imerso no mundo virtual.

    Fig. 1.4- Sntese de imagens.

    O objetivo dos algoritmos de sntese de imagens pode ser o realismo visual, como ilustra a Fig. 1.4, ou a transmisso de informaes tcnicas como mostram as visualizaes cientficas da Fig. 1.5. Nesta figura os programas de: (a) geotecnia, (b) engenharia de reservatrios, (c) cartografia, (d) estruturas navais, (e) ssmica, e (f) medicina, tem fortes requisitos de preciso geomtrica mas tratam de objetos abstratos que fogem a experincia visual de pessoas leigas.

    (a) poo horizontal

    (b) reservatrio de petrleo

  • Introduo 4

    Marcelo Gattass 10/7/2013

    (c) mapa temtico (d) estrutura martma

    (e) ssmica

    (f) exames mdicos

    Fig. 1.5- Sntese de imagens para visualizao cientfica.

    Processamento de imagens Os algoritmos de processamento de imagens modificam uma imagem para melhorar sua qualidade, eliminando rudos e realando caractersticas que facilitem o seu entendimento. Estes algoritmos no mudam a natureza dos dados, ou seja, eles processam imagens de entrada e geram imagens de sada. A Fig. 1.6 ilustra a este processamento sobre uma imagem mdica de um crebro humano. O objetivo do processamento ilustrado consiste em realar as regies do crebro para torn-las mais visveis.

  • Introduo 5

    Marcelo Gattass 10/7/2013

    corr

    eo

    gam

    a

    gradiente

    nega

    tivo

    Fig. 1.6 - Processamento de imagens.

    Viso computacional A viso computacional processa imagens visando obter informaes sobre objetos presentes nela. Ou seja, interpretam o que est na imagem extraindo dela informaes no puramente visuais. A Fig. 1.7 ilustra, por exemplo, um algoritmo capaz de ler o nmero de uma placa de automvel a partir de uma imagem dela.

    LAK 5519 Fig. 1.7 Viso Computacional.

    Realidade aumentada As aplicaes mais recentes da Computao Grfica no se encaixam em apenas uma das classes de algoritmos apresentada acima: sntese, processamento e viso. Os sistemas de realidade aumentada que misturam elementos virtuais em imagens reais so os exemplos

  • Introduo 6

    Marcelo Gattass 10/7/2013

    mais marcantes desta nova classe de aplicaes da Computao Grfica. A Fig. 1.8 mostra, no lado esquerdo um jogo da velha onde o computador v onde o usurio riscou o jogo e as suas jogadas e responde colocando na tela a imagem da cmera acrescida de objetos virtuais.

    Fig. 1.8 Jogo da velha com realidade aumentada

    O programa da Fig. 1.8 tem trs fases. Na primeira o programa captura cada quadro da cmera de vdeo, processa as imagens para reduzir os rudos e reala as linhas da figura obtendo a imagem mostrada do lado direito da Fig. 1.8. Ou seja, uma fase de Processamento de Imagens.

    Na segunda fase, o programa reconhece onde est a cmera e quais so seus parmetros pela deformao da moldura preta que envolve a rea onde o jogo ocorre. Reconhece tambm onde esto as linhas do jogo e as jogadas do usurio. uma fase tpica de Viso Computacional.

    Finalmente o computador sintetiza novos elementos na cena: as peas do jogo, as marcas dos cantos que fazem parte do algoritmo de viso e o bule de ch que no tem nada a ver com o contexto do jogo. uma fase de snteses de imagens.

    A Fig. 1.9 ilustra um outro programa de Realidade Aumentada que serve para acompanhar jogos de esportivos de campo ou quadra. Na fase de processamento de imagens o sistema descobre onde esto as linhas do campo. Na fase de viso o sistema acha as equaes destas linhas e a partir delas encontra o modelo de uma cmera que as v daquela forma distorcida. Na ultima fase o sistema acrescenta elementos na imagem para torn-la mas clara. Na imagem do lado direito da Fig. 1.9(a) o sistema reala a linhas de campo e a trave para ilustrar a preciso com que ele est capturando estes objetos. Na Fig. 1.9(b) vemos uma verificao de impedimento com marcao das linhas de profundidade dos jogadores mais importantes na jogada.

  • Introduo 7

    Marcelo Gattass 10/7/2013

    (a) calibrao de cmeras

    (b) medies no campo.

    Fig. 1.9 Acompanhamento de jogos esportivos

    Concluindo esta seo devemos dizer que a diviso da Computao Grfica ilustrada na Fig. 1.2 ainda persiste, mas cada vez mais comum encontrarmos programas que no se encaixam em apenas uma destas reas. Uma diviso mais atual seria a ilustrada na Fig. 1.10 que introduz a rea de Realidade Aumentada nas reas clssicas da Computao Grfica.

    Imagem digital

    Modelos e dados

    processamento de imagens

    viso computacional

    sntese de imagens

    (rendering)

    realidadeaumentada

    Fig. 1.10 reas da CG incluindo Realidade Aumentada

  • Introduo 8

    Marcelo Gattass 10/7/2013

    Requisitos de realismo e de eficincia

    Uma outra diviso importante da Computao Grfica diz respeito aos requisitos de realismo e eficincia que o programa deve ter. Na produo de filmes, por exemplo, comum utilizarmos grades de computadores trabalhando por longos perodos para gerar cada um dos quadros de uma animao. O importante nesta tarefa a qualidade da imagem gerada. O tempo um fator menos crtico. Programas que produzem vdeos e filmes so geralmente baseados no algoritmo de Rastreamento de Raios, que apesar de no ter baixa eficincia produz imagens bastante realistas.

    Em contrapartida a produo de filmes, ns temos os jogos de computador e os programa de Realidade Virtual, onde o usurio controla interativamente o que ele est vendo. A Fig. 1.4 ilustra o uso de um mouse 3D para controlar o vo do usurio no modelo da plataforma. Programas como estes precisam gerar as imagens num tempo muito pequeno para que no se quebre a sensao de imerso do usurio no mundo virtual. Estes programas normalmente utilizam Sistemas Grficos, como o OpenGL, que so baseados no algoritmo de Mapa de Profundidade (ZBuffer). Este algoritmo bem mais eficiente que o algoritmo de Rastreamento de Raios mas produz resultados com menor realismo visual.

    Estas duas linhas de algoritmos so importantes na Computao Grfica e so tratadas neste livro. interessante notarmos que cada um destes algoritmos tem evoludo de forma superar suas deficincias. O algoritmo de Rastreamento de Raios j tem implementaes eficientes e os jogos de computador conseguem imagens bastante realistas. A Fig. 1.11 mostra uma imagem de um modelo de uma plataforma gerada por um programa interativo feito com o OpenGL que utiliza o algoritmo de mapa de profundidade. Se compare a qualidade desta imagem com a mostrada na Fig. 1.1, obtida por um programa que utiliza o Rastreamento de Raios, vemos que no so to diferentes.

    Fig. 1.10 Imagem gerada com o algoritmo de mapa de profundidade.

    Os jogos de computador tambm produzem imagens muito boas, mas quando o programa no est respondendo a eventos do usurio e passa uma animao em vdeo podemos perceber claramente a melhora de qualidade.

  • Introduo 9

    Marcelo Gattass 10/7/2013

    Profissionais da Computao Grfica

    A Computao Grfica envolve diversos tipos de profissionais. Alguns precisam de mais do que outros dos conhecimentos dos fundamentos da Computao Grfica. Os fundamentos so entendidos aqui no s como os modelos fsicos e matemticos que do suporte a disciplina mas principalmente as classes de algoritmos que implementam as tarefas de sntese, processamento e viso computacional.

    Sob o ponto de vista de desenvolvimento de programas os profissionais envolvidos na Computao Grfica so de quatro tipos: usurios, customizadores, programadores de aplicaes e desenvolvedores de ferramentas.

    Os usurios constituem um grupo grande e variado. Suas caractersticas dependem da rea do conhecimento onde a Computao Grfica est sendo utilizada. Se o sistema for de interpretao Ssmica os usurios so geralmente Geofsicos, se for de exames mdicos os usurios so mdicos, e assim por diante. O conhecimento dos fundamentos da Computao Grfica no um requisito importante para estes profissionais.

    Um destaque especial deve ser dado aos usurios que produzem material udio visual utilizando programas como o 3ds max da Autodesk. A qualidade dos vdeos gerados por estes usurios depende, em grande parte, do conhecimento deles na rea da Computao Grfica propriamente dita. Uma boa noo dos modelos e algoritmos ajuda bastante a criao artstica destes profissionais.

    Os customizadores adaptam os programas existentes, atravs das linguagens de extenso, escrevendo procedimentos que visam criar efeitos especiais ou automatizar tarefas repetitivas. Eles precisam de um conhecimento bsico dos fundamentos da Computao Grfica.

    Os programadores de aplicao desenvolvem programas grficos utilizando sistemas como o OpenGL. Nesta categoria se enquadram os profissionais que escreveram os programas ilustrados nas figuras deste captulo. Eles certamente precisam de slidos conhecimentos dos fundamentos da Computao Grfica.

    Os desenvolvedores de ferramentas escrevem os sistemas do tipo OpenGL ou DirectX da Microsoft. Eles necessitam no s do conhecimento dos fundamentos da Computao Grfica, como tambm de uma slida formao na rea da Cincia da Computao em geral.

    O material deste livro enfoca estes fundamentos da Computao Grfica e procura explic-los a partir de requisitos mnimos de Matemtica e Programao. Como a maioria dos profissionais envolvidos na Computao Grfica tem estes conhecimentos, poderamos dizer que o livro pode ser interessante para todos os profissionais citados acima. Este material, entretanto, foi preparado para servir de base para um curso de Computao Grfica num programa de graduao em Engenharia da Computao ou em de Informtica. Esperamos que os leitores de reas tcnico-cientficas, como as Engenharias, que estejam interessados em desenvolver programas de aplicao tambm achem o enfoque apresentado interessante.

  • Introduo 10

    Marcelo Gattass 10/7/2013

    Ferramentas de programao

    O desenvolvimento de um programa que tenha uma interface grfica interativa requer duas ferramentas bsicas: um Sistema Grfico e um Sistema de Interface com o Usurio. O primeiro para gerar imagens em janelas gerenciadas pelo segundo. Ou seja, o sistema de interface gerencia os elementos do tipo de janelas, menus e botes enquanto que o sistema grfico desenha primitivas geomtricas do tipo pontos, linhas e polgonos e/ou imagens digitais nos elementos de interface denominados de canvas ou forms. A Tab. 1.1 ilustra a evoluo destas duas ferramentas.

    Sistemas Grficos Sistemas de Interface1978-core 1984-Macintosh

    1985-GKS 1987-XWindow v.11

    1988-PHIGS 1988-Motif

    1990-PEX 1990-Windows 3.0

    1991-GL 1993-Visual Basic v.3

    1993-OpenGL 1995-Delphi

    1996-Direct 3D 1996-Java

    Tab. 1.1 Evoluo dos Sistemas Grficos e de Interface com o Usurio

    A primeira proposta de Sistema Grfico, independente de fabricantes, foi o Core da ACM2 em 1978. Esta proposta visava um sistema grfico 3D capaz de fazer a sntese de imagens (rendering) mostrada na Figura 1.10. O sistema Core possua um modelo de cmera bem semelhante ao que utilizamos at hoje. A sua principal deficincia foi a falta de detalhes de como a proposta deveria ser implementada. Por exemplo, o nome e os parmetros das funes da proposta nas diversas linguagens de programao no era especificado. Assim, dadas duas implementaes do Sistema core, um programa escrito para uma, geralmente, teria que ser modificado para rodar na outra. A proposta tambm era bem deficiente no tratamento de imagens. Os monitores grficos da poca ainda eram predominantes vetoriais e o suporte para imagens digitais era praticamente inexistente.

    A partir da experincia do core, a DIN3 alem props o GKS, Graphical Kernel System. O GKS uma especificao de um Sistema Grfico que basicamente um subconjunto bi-dimensional do core acrescido de algumas funes para a sntese de imagens digitais. A grande vantagem desta proposta foi o seu alto grau de detalhamento. Programas escritos para uma implementao do GKS podem rodar em outra sem grandes modificaes do cdigo fonte.

    O PHIGS (Programmer's Hierarchical Interactive Graphics System), retomou a idia de cenas 3D do Core com modelos hierrquicos de objetos e transformaes. O PHIGS foi

    2 Association for Computing Machinery associao internacional educacional e cientfica dedicada ao avano das artes, cincias e aplicaes da tecnologia da informao. Apesar de internacional uma organizao fortemente americana. 3 Deutshes Institut fr Normung Instituto alemo de normas.

  • Introduo 11

    Marcelo Gattass 10/7/2013

    posteriormente estendido para suportar imagens digitais. Este novo sistema passou a ser denominado PHIGS+.

    Ao mesmo tempo em que a discusso acadmica sobre Sistemas Grficos evolua os Sistemas de Interface grficos foram sendo desenvolvidos. A coluna da direita da Tab. 1.1 ilustra as datas destes sistemas. interessante notarmos que os sistemas grfico e de interface competem pela gesto da rea da tela onde o desenho vai ser exibido. Sistemas como o XWindow, por exemplo, so baseados em arquiteturas cliente-servidor em que o acesso a uma janela encapsulado pela XLib que intrinsecamente um sistema grfico 2D. Implantar um sistema grfico 3D sob a XLib restringe fortemente a Ou seja, a programao 3D teria que ser feita por software. Para contornar este problema o PHIGS evoluiu para o PEX, que foi extenso do PHIGS para o X-Window.

    O PEX no vingou como padro porque na mesma poca a Silicon Graphics criou o GL (graphics library) que foi um sucesso absoluto. Este sistema foi posteriormente aberto e se tornou o OpenGL que atualmente o padro mais consagrado de Sistemas Grficos.

    Compete com o OpenGL o Direct3D que um sub-sistema do DirectX que a MicroSoft criou para dar suporte a programao de jogos. Com o avano dos computares a as placas de vdeo programveis o OpenGL tem ocupado este espao tambm.

    O foco central deste livro conceitual para que ele seja til para programadores de qualquer linguagem de computador utilizando qualquer Sistema Grfico e de Interface. Os cdigos apresentados no texto e no CD em anexo so todos escritos em ANSI C. Os cdigos utilizam a Sistema Grfico OpenGL e os Sistemas de Interface com o Usurio GLUT e IUP.

    Todos os sistemas utilizados neste livro so livres. O OpenGL e a GLUT podem ser obtidos em http://www.opengl.org e a IUP em http://www.tecgraf.puc-rio.br/iup.

    Projeto de programao Faa o download das bibliotecas OpenGL, GLUT e/ou IUP e instale na verso seu compilador C/C++ favorito em sua mquina. Compile, monte e rode o programa glutOpenGL.c fornecido.

    Exerccios 1) Qual a diferena entre Processamento de Imagens, Viso Computacional e Sntese de

    Imagens? Procure descrever um programa de cada uma destas reas que voc conhea.

    2) Porque um programa grfico interativo utiliza o algoritmo de mapa de profundidade e no o de Rastreamento de Raios?

    3) O que uma programa de aplicao? 4) Faa um breve histrico dos principais Sistemas Grficos.


Top Related