Você está na página 1de 11

1

Introduo

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.

Marcelo Gattass

10/7/2013

Introduo

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.

processamento de imagens

Imagem digital
sntese de
imagens
(rendering)

viso
computacional

Modelos e dados
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

Marcelo Gattass

10/7/2013

Introduo

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

Marcelo Gattass

(b) reservatrio de petrleo

10/7/2013

Introduo

(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.

Marcelo Gattass

10/7/2013

negativo

correo gama

Introduo

gradiente

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
Marcelo Gattass

10/7/2013

Introduo

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.

Marcelo Gattass

10/7/2013

Introduo

(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.

processamento de imagens

Imagem digital
sntese de
imagens
(rendering)

realidade
aumentada

viso
computacional

Modelos e dados
Fig. 1.10 reas da CG incluindo Realidade Aumentada
Marcelo Gattass

10/7/2013

Introduo

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.

Marcelo Gattass

10/7/2013

Introduo

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 expliclos 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.

Marcelo Gattass

10/7/2013

10

Introduo

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 Interface
1978-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 bidimensional 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.

Deutshes Institut fr Normung Instituto alemo de normas.

Marcelo Gattass

10/7/2013

11

Introduo

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.

Marcelo Gattass

10/7/2013