baixe aqui - Computação Gráfica
Transcrição
baixe aqui - Computação Gráfica
Disciplina Computação Gráfica Sobre o autor Abinael Gomes Barreiros Bacharel em Ciência da Computação pela Universidade Nove de Julho – UNINOVE. Lato Sensu em TI – Tecnologia da Informação. Professor de informática IFSP – campus Guarulhos – Tutor Presencial no Curso EAD – Evesp pela Secretaria de Educação SP. Professor de universitário da Universidade de Guarulhos – UNG. Professor Pronatec – Anhanguera. Apresentação Este material didático apresenta os conteúdos da disciplina Computação Gráfica, objetivando da obra e desencadear processos de reflexão capazes de provocar a analise critica dos conteúdos e ao mesmo tempo, promover a compreensão. Pretende provocar aprendizagens nos alunos, por meio de propostas de estratégias relacionais garantidora da disciplina. Os tópicos centrais selecionados da disciplina abordam os temas, conceitos e conteúdos relevantes e possibilitam o contato com atividades, leitura complementares, bibliografia, voltada para a expansão, inter-relação e aprofundamento dos conhecimentos. O autor espera ter contribuído para que desta forma significativa, critica e compreensiva traduzam em praticas pedagógicas desenvolvimento de uma educação de qualidade. favoráveis ao Sumário Aula 1 - Introdução a Computação Gráfica Introdução ...........................................................................................01 Aula 2 – Dispositivos Gráficos Tipos de dispositivos gráficos...............................................................12 Aula 3 – Métodos da Computação Gráfica Principais métodos .............................................................................25 Aula 4 – Técnicas de produção de imagem Dispositivos móveis .............................................................................32 Aula 5 – Primitivas Gráficas Primitivas de desenho. ........................................................................42 Aula 6 – Conceitos de aplicativos gráficos Ambientes gráficos ..............................................................................48 Aula 7 – Tipos de Coordenadas Transformações Geométricas ..............................................................53 Aula 8 – Tratamento de imagem Introdução ao Software ........................................................................58 Aula 9 – Processamento de imagem digital Visão geral sobre editor .......................................................................63 Aula 10 – O processo de rendering Conceito sobre rendering .................................................................67 Trabalho Final ....................................................................................73 Referencias Bibliográficas ................................................................72 Projeto instrucional Apresentação da disciplina Ementa: Metodologias e técnicas de produção de imagem pelo computador; Introdução aos dispositivos Gráficos; Conceituação de computação gráfica e áreas de aplicação; Conceituação de aplicativos gráficos; Algoritmos de transformação de primitivas gráficas 2D e 3D (coordenadas homogêneas, rotação, translação, escalamento, e projeções). Projeto instrucional 1. Introdução a Computação Gráfica. • Um breve histórico sobre computação gráfica. 2. Dispositivos Gráficos • Tipos de dispositivos I/O • Dispositivos de interatividade 3. Métodos de Computação Gráfica em modo 2D • Métodos tratamento de imagens 2D • Associação destes métodos • Dispositivos 3D 4. Técnicas de produção de imagem pelo computador • Recursos de produção imagens • Inserção das técnicas produção imagens • Abordagem das mídias digitais 5. Primitivas Gráficas • Conceitos de primitivas • Conversão matricial 6. Conceitos de aplicativos gráficos • Ambientes gráficos • Algoritmos básicos 7. Tipos de coordenadas • Exemplos de transformações • Mudanças de coordenadas 8. Tratamento de imagem • Principais softwares de tratamento de imagem. • Aspectos de cada software. 9. Processamento de imagem digital • Conceito sobre os editor 3D • A importância da modelagem 10. O processo de Rendering • Conceito sobre rendering • Acabamento visual Aula 1 Introdução a Computação Gráfica Definição CG Historia Objetivos de aprendizado: Conhecer os recursos da computação gráfica. Pouco da historia da computação gráfica. Introdução A Computação gráfica, abreviado comumente como CG, é a área da ciência da computação que estuda a geração, manipulação e interpretação de imagens. Simplificando este conceito e voltando no sentido original da palavra, o termo computação gráfica define o processo de produzir imagens sintéticas e partir da descrição simbólica de uma cena, sendo esta um conjunto de elementos gráficos (pontos, linhas, arestas, áreas) que representam objetos, posição, movimento, aparência, iluminação, etc. Ate a década de 80 o maior emprego da computação gráfica era em pesquisas espaciais, no qual as imagens capturadas fora da Terra eram transmitidas e recebidas como arranjos numéricos representando a intensidade captada pelos sensores das sondas espaciais. Atualmente, a computação gráfica encontra-se muito mais difundida, sendo parte essencial de qualquer interface com os usuários em diversas aplicações e áreas do conhecimento humano como, por exemplo, na medicina quando são geradas imagens do corpo humano em exames de raios-X e tomografia. Breve historia O termo computação gráfica que utilizamos atualmente foi utilizado pela primeira vez pelo DR. Ivan Sutherland no inicio da década de 60. Ele introduziu esse conceito em sua tese de doutorado no MIT ( Massachusetts Institute of 1 Technology) quando programou terminais gráficos vetoriais que mais tarde levou o surgimento dos sistemas CAD para criação de plantas esquemáticas. Já na década de 70 foram desenvolvidas muitas técnicas e algoritmos que são utilizados ate hoje, tal como o algoritmo de z-buffer (memória de profundidade), mas o alto custo do hardware tornava inviável popularização dessa tecnologia na época. O grande “salto” da computação gráfica foi com o surgimento da tecnologia de circuitos integrados e, posteriormente, na década de 80, o lançamento dos primeiros computadores pessoais de baixo custo, como o IBM-PC e o Macintosh da Apple. Computação gráfica. Síntese de imagens Área de computação gráfica que estuda a produção de imagens sintéticas a partir da descrição matemática dos objetos. Essas imagens geradas oriundos da modelagem dos dados constituem uma representação visual que tentam ou não reproduzir a realidade, na forma bi ou tri dimensional (2D ou 3D) e que podem ser visualizadas em algum dispositivo como, por exemplo, terminais de vídeos, impressoras, etc. 2 Analise de imagens Também chamada de visão computacional, é a área da CG que busca obter a especificação dos componentes de uma imagem a partir de sua representação visual, ou seja, através da informação pictórica da imagem (a própria imagem) produz-se uma informação não visual de forma a facilitar o entendimento e/ou obter algum dado relevante da imagem. 3 PROCESSAMENTO DE IMAGENS Área de estudo que abrange a pesquisa de técnicas para realizar a manipulação de imagens, tais como ajustes de cor, brilho, contrastes, aplicações de filtros, entre outros. O processo parte de imagens já prontas para serem visualizadas, mas que são transferidas para o computador para serem manipuladas visando diferentes objetivos. Um exemplo de aplicação do processamento de imagens é, por exemplo, em consultórios de cirurgiões plásticos e salões de beleza. Neste caso, uma pessoa pode ver como será o resultado de uma plástica ou corte de cabelo através de simulações no computador. Outro exemplo muito comum é a utilização de tratamento de imagens para retirar “objetos indesejados” de fotos publicitárias. Aplicações da Computação Gráfica A lista de aplicações da Computação Gráfica é muita extensa, mas, entre as mais comuns estão: • Interfaces: qualquer dispositivo digital que se utiliza de uma interface gráfica para interagir com usuário. Exemplos: computadores, videogames, celulares, etc. 4 • Automação de escritórios: o uso de gráficos na disseminação de informações cresceu muito depois do surgimento de software para editoração eletrônica em computadores pessoais. Este tipo de software permite a criação de documentos que combinam texto, tabelas e gráficos – os quais tanto podem ser “desenhados” pelo usuário ou obtidos a partir de imagens digitalizadas. 5 • CAD (Computer Aided Design – Desenho Assistido por Computador): sistemas gráficos interativos são utilizados para projetar componentes, peças, sistemas de dispositivos mecânicos, elétricos, eletromecânicos e eletrônicos. Isto inclui edifícios, carcaças de automóveis, aviões, navios, redes telefônicas e de computador. • Controle de processos: sistemas de controle de tráfego aéreo e espacial, sistemas de controle de refinarias e de usinas de energia mostram graficamente os dados coletados por sensores conectados a componentes críticos dos sistemas, de forma que os operadores possam responder adequadamente a condições críticas. 6 • Cartografia: a computação gráfica é usada para produzir representações precisas e esquemáticas de fenômenos naturais e geográficos obtidos a partir da coleta de dados. 7 • Entretenimento: a indústria do cinema é um exemplo de aplicação da computação gráfica que tem sido bastante desenvolvida. Além dos efeitos especiais, foi possível criar animações com animais, simular humanos virtuais e até mesmo criar grandes multidões. Reprodução de ser humano virtual Outra técnica que vem evoluindo bastante nos cinemas é a criação de personagens com movimentos e expressões idênticos aos do ser humano. Para isso, são utilizados dispositivos especiais que captam movimentos e expressões do corpo humano para reproduzir em personagens digitais. 8 Computação gráfica nos cinemas Ainda sobre a aplicação da computação gráfica nos cinemas, segue abaixo um vídeo no qual a empresa de efeitos especiais ILM (Industrial Light and Magic) mostra parte do seu trabalho realizado no filme “Os Vingadores”. No vídeo, podemos observar as cenas mais trabalhas com a computação gráfica e que contou mais de 200 profissionais, como artistas, cientista e engenheiros. Realidade aumentada A nova tecnologia ainda a tem um nome pouco popular, mas isso deve mudar em breve. A realidade aumentada proporciona uma nova forma de visualizar imagens. O sistema reconhece imagens através de webcam e projeta sobre elas objetos em 3D ou até mesmo animações. A tecnologia tem sido aprimorada para se tornar desde ferramenta de trabalho até mesmo forma de entretenimento. 9 1. Defina a computação gráfica. 2. A implementação de desenhos como computação gráfica se deu em 1963, quem foi o precursor dessa idéia revolucionária? 3. A General Motors foi precursora na utilização de computação gráfica para auxiliar o desenvolvimento industrial. Que nome tem esse tipo de programa, que é utilizado até hoje? 4. O que são Fractais? 5. Qual a importância dos Fractais Pratica: Em dupla Exercício sobre Rastreamento: O objetivo deste exercício é realizar o rastreamento óptico de objetos. Para tanto, vocês deverá desenvolver um vídeo que identifica os pontos em movimento e realiza o rastreamento. - caminhada virtual 10 Ammeral L. e Zhang K. Computação Gráfica para programadores Java, 2 ed, Rio de Janeiro: LTC Editora, 2008. Azevedo, E. et all, Computação Gráfica: Teoria e Prática, Rio de Janeiro: Campus, 2003. 11 Aula 2 Dispositivos Gráficos Tipos de dispositivos I/O Dispositivos de interatividade Objetivos de aprendizado: Conhecer os Dispositivos Gráficos. Compreender as Homem/Maquina. interações Tipos de dispositivos gráficos Os sistemas de computação gráfica precisam de dispositivos gráficos de I/O ligados a um computador; Permitem a interação com o sistema, na busca de extensões dos limites do nosso corpo e melhor comunicação com a máquina. Dispositivos Gráficos de Entrada São componentes eletrônicos que permitem a movimentação e interação com os sistemas; Teclado; Mouse; Joysticks; Tablet; Mesa digitalizadora. Teclado Basicamente podemos definir um teclado como um conjunto de teclas associadas a um código que corresponde ao caractere ou função; Diversos dispositivos de teclado foram inventados ao longo de décadas, porém o mais usado é o teclado QWERTY; É irônico pensar que esse teclado foi inventado para a redução da velocidade do digitador e, como conseqüência, causar menores danos à sua saúde. 12 Mouse Os mouses atuais utilizados por profissionais da computação gráfica são compostos por sensores óticos e processadores digitais para escanear a superfície sob o mouse sem a bola de rolagem; Enviam 1.500 sinais por segundo para rastear com segurança o menor movimento possível. Joysticks São alavancas de comando que determinam a direção e velocidade do cursor na tela; Usados geralmente nos jogos de videogame, estações de realidade virtual e estações industriais de controle de robôs. Tablets Os tablets são extensões dos monitores sensíveis ao toque; Os novos tablets são calibrados com perfeição para ler com absoluta precisão os movimentos da caneta, que opera com 1.024 níveis de sensibilidade à pressão; Estes são traduzidos em curvas suaves, transições graduais e controles precisos do 13 traço; Um software incluso nos pacotes dos hardwares de tablet possibilita o reconhecimento da escrita. Mesa Digitalizadora Dispositivo vetorial que consiste de uma mesa e de um apontador; A cada vez que o usuário toca a mesa com o apontador é informado ao computador a coordenada deste ponto da mesa; Existem diversos trabalhos em andamento para a substituição deste periférico por sistemas mais baratos com câmeras digitais e softwares de reconhecimento de padrões. Dispositivos de Entrada 3D Permitem a movimentação e interação dentro de uma espaço 3D qualquer. Digitalizador 3D Trata-se de um dispositivo vetorial e consiste em uma espécie de braço mecânico com um sensor de toque na ponta; A cada vez que o 14 sensor atinge um ponto na superfície de um objeto, a coordenada deste ponto em relação a um ponto referencial (origem) é transmitida ao computador. Scanner 3D Existem diversas tecnologias de scanners disponíveis no mercado; As mais baratas utilizam câmeras digitais acopladas a uma mesa especial que fornece as coordenadas para os sistemas. Esta tecnologia quase sempre requer a intervenção de modeladores para o acabamento das peças; A tecnologia de scanners a laser, de alto custo, é sem dúvida a tecnologia de dispositivos de entrada que vem atraindo mais atenção no mundo. Suas aplicações são grandes e muitas delas ainda estão por se descobrir. Luvas 3D Luvas para interação 3D são dispositivos que, através de sensores, detectam e medem as flexões e pressões dos dedos; Os sensores podem ser mecânicos, ópticos ou híbridos. 15 Capacetes - Head-mounted display Existem diversos tipos de capacetes para visualização de Realidade Virtual disponíveis no mercado; A principal característica desses equipamentos é que podem ser: Estereoscópicos ou monoscópicos (isto é, usados com uma ou duas cenas); Binoculares ou monoculares (um ou os dois, olhos são estimulados); Opacos ou translúcidos (substituem ou complementam a realidade). 3D Controllers São dispositivos para interatividade com ambientes 3D capazes de tornar o ambiente participativo, seguindo os movimentos executados pelo usuário; Trabalham tanto em cima de uma mesa como no ar, pois possuem um giroscópio que tem comunicação por rádio com o computador; São capazes de medir a velocidade e a força que estão sendo aplicadas pelo usuário. 16 Roupa de RV A roupa para Realidade Virtual (ou data suits) é uma indumentária que permite a interação com o mundo virtual; A comunicação pode ser realizada de várias maneiras, sendo que o acompanhamento óptico de marcadores vem sendo o mais utilizado; Essas roupas são usadas para gerar informações do movimento humano, a partir daí surge uma infinidade de aplicações para animações, esporte, desenvolvimento de produtos, medicina etc. Dispositivos Gráficos de Saída É possível classificar os dispositivos de saída em duas principais categorias, segundo a forma pela qual as imagens são 17 geradas (veja seção anterior de descrição vetorial e matricial de imagens): vetoriais e matriciais; Os dispositivos vetoriais conseguem traçar segmentos de reta perfeitos entre dois pontos; Os dispositivos matriciais apenas conseguem traçar pontos, ou seja, segmentos de reta são traçados como seqüências de pontos próximos, são entretanto, bastante adequados para desenhar áreas cheias e sombras, onde os vetoriais mostram deficiência. Impressoras de Jato de Tinta São equipamentos matriciais com cabeçote que ejetam tinta sobre o papel; Podem utilizar tintas de várias cores e chegar a níveis altos de realismo na imagem impressa. Impressoras Laser São as que têm melhor qualidade; Um feixe de raio laser varre uma chapa em processo ótico parecido com o do cabeçote de uma impressora, o bombardeio do feixe deixa a chapa carregada com uma carga eletrostática; Por efeito da atração elétrica, uma tintura (toner) adere à chapa e por pressão e aquecimento é fixada no papel formando a imagem. 18 Impressoras Térmicas São equipamentos silenciosos, com boa resolução, podem trabalhar com ampla gama de cores; As impressoras térmicas precisam utilizar um papel termo-sensível especial.(impressão de etiquetas). Plotters São dispositivos vetoriais e eletromecânicos que, de uma forma geral, produzem o desenho pelo movimento de uma caneta na superfície do papel; Existem dois tipos, em um, o papel permanece fixo e a caneta produz desenhos sobre o mesmo pela combinação de movimentos horizontais e verticais; No outro tipo, o desenho é produzido pela combinação dos movimentos do papel e da caneta. 19 Monitores Um monitor de vídeo, ou simplesmente monitor, é um dispositivo de saída do computador que serve de interface visual para o usuário, na medida em que permite a visualização dos dados e sua interação com eles; Os monitores são classificados de acordo com a tecnologia de amostragem de vídeo utilizada na formação da imagem. Monitores - CRT Cathodic Ray Tube (Tubo de raios catódicos) é o monitor "tradicional", em que a tela é repetidamente atingida por um feixe de elétrons, que atuam no material fosforescente que a reveste, assim formando as imagens; Este tipo de monitor tem como principais vantagens: Sua longa vida útil; Baixo custo de fabricação; Grande banda dinâmica de cores e contrastes; e Grande versatilidade (uma vez que pode funcionar em diversas resoluções, sem que ocorram grandes distorções na imagem). As maiores desvantagens deste tipo de monitor são: Suas dimensões (um monitor CRT de 20 polegadas pode ter até 50cm de profundidade e pesar mais de 20kg); O consumo elevado de energia; Seu efeito de cintilação (flicker); e A possibilidade de emitir radiação que está fora do espectro luminoso (raios x), danosa à saúde no caso de longos períodos de exposição. Monitores CRT Diagrama em corte de um tubo de raios catódicos de deflexão eletromagnética , usado em televisões e monitores coloridos. 1: Canhões de elétrons e lentes eletrônicas de focalização; 2: Bobinas defletoras (deflexão eletromagnética); 3: Anodo de alta tensão; 4: Máscara de sombra; 5: Detalhe da matriz de pontos coloridos RGB (vermelho, verde, azul). 20 Monitores LCD LCD (Liquid Cristal Display, em inglês, sigla de tela de cristal líquido) é um tipo mais moderno de monitor. Nele, a tela é composta por cristais que são polarizados para gerar as cores. Tem como vantagens: O baixo consumo de energia; As dimensões reduzidas; A não-emissão de radiações nocivas; A capacidade de formar uma imagem praticamente perfeita, estável, sem cintilação, que cansa menos a visão - desde que esteja operando na resolução nativa; e O fato de que o preto que ele cria emite um pouco de luz, o que confere à imagem um aspecto acinzentado ou azulado, mais agradável aos olhos em termos estéticos e também de brilho. As maiores desvantagens são: O maior custo de fabricação; O fato de que, ao trabalhar em uma resolução diferente daquela para a qual foi projetado, o monitor LCD utiliza vários artifícios de composição de imagem que acabam degradando a qualidade final da mesma; e Um fato não-divulgado pelos fabricantes: se o cristal liquido da tela do monitor for danificado e ficar exposto ao ar, pode emitir alguns compostos tóxicos, tais como o óxido de zinco e o sulfeto de zinco. Este será um problema quando alguns dos monitores fabricados hoje em dia chegarem ao fim de sua vida útil (estimada em 20 anos). 21 Monitores OLED Organic Light-Emitting Diode ou diodo orgânico emissor de luz é uma tecnologia criada pela Kodak em 1980 e que promete telas planas muito mais finas, leves e baratas que as atuais telas de LCD; A idéia é usar diodos orgânicos, compostos por moléculas de carbono que emitem luz ao receberem uma carga elétrica; A vantagem é que ao contrário dos diodos tradicionais, essas moléculas podem ser diretamente aplicadas sobre a superfície da tela, usando um método de impressão; Acrescentados os filamentos metálicos que conduzem os impulsos elétricos a cada célula, está pronta uma tela a um custo extremamente baixo; Uma das principais características da tela orgânica é que ela possui luz própria; Com isto não necessita de luz de fundo ou luz lateral, (backlight ou sidelight) e ocupa menos espaço, dois fatores que tornam a tecnologia muito interessante para uso em computadores de mão e notebooks; Outra importante característica é que por emitir luz própria cada OLED quando não polarizado torna-se obscuro obtendo-se assim o "preto real", diferentemente do que ocorre com LCDs que não conseguem obstruir completamente a luz de fundo e ainda neste caso não há consumo de energia para a modulação de luz de fundo. 22 1. A computação gráfica é uma área multidisciplinar. Descreva as disciplinas e de que forma ocorre essa abrangência. 2. A computação gráfica é subdividida em 3 grandes áreas, defina cada uma delas. 3. Defina a divisão funcional da computação gráfica. 4. Quanto a aplicação da computação gráfica, como podemos classificá-la? 5. O que é imagem digital? 6. O que é imagem raster? 7. O que é desenho vetorial? 8. Defina o pixel. 9. Explique a resolução de imagens 23 24 Aula 3 Métodos da Computação Gráfica Tipos de processamento de imagens. Objetivos de aprendizado: Mecanismos de estudo das imagens. Como funcionam os processos das imagens. Quais são os métodos de estudo das imagens. Principais Métodos O Processamento de imagens é certamente uma área em crescimento. Diversos temas científicos são abordados e em alguns casos de caráter interdisciplinar. Entre eles podemos citar: a compreensão de imagens, a análise em multi-resolução e em multi-frequência, a análise estatística, a codificação e a transmissão de imagens, etc. “Os métodos de estudo do procesamento de Imagens” vem na realidade do Processamento de Sinais. Os sinais, como as imagens, e na realidade um suporte físico que carrega no seu interior uma determinada INFORMAÇÃO. Esta INFORMAÇÃO pode estar associada a uma medida (neste caso falamos de um sinal em associação a um fenômeno físico), ou pode estar associada à um nível cognitivo (neste caso falamos de conhecimento). Processar uma imagem consiste em transformá-la sucessivamente com o objetivo de extrair mais facilmente a INFORMAÇÃO nela presente. Cabe neste momento fazer uma comparação entre o Processamento de Imagem e área de Computação Gráfica, técnica que encontramos freqüentemente aplicadas através de seqüências animadas na televisão ou em filmes de cinema. A Computação Gráfica parte de uma INFORMAÇÃO precisa para obter uma imagem ou um filme. O Processamento de Imagens parte da imagem (de uma informação inicial que é geralmente captada por uma camera) ou de uma seqüência de imagens para obtermos a “INFORMAÇÃO”. 25 Analise O termo análise está relacionada a parte do tratamento onde existe uma descrição da INFORMAÇÃO presente na imagem. Esta parte é chamada de parametrização e é nela que várias medidas quantitativas (parâmetros) são utilizadas para descrever diferentes informações dentro de uma imagem. Algumas aplicações típicas são: a determinação do número de células presentes em um tecido biológico, o cálculo das formas dos contornos de uma célula ou ainda a determinação da distribuição de uma população específica de um conjunto de células. As técnicas dedicadas a análise de imagens podem variar significativamente segundo a sua complexidade e a necessidade em tempo de processamento. “Image Enhancement” O termo “enhancement” esta associado a melhoria da qualidade de uma imagem, com o objetivo posterior de ser julgado por um observador humano. De uma forma geral nós vamos trabalhar nos níveis de cinza da imagem, transformando-os para aumentar o contraste ou para colocar em evidência alguma região de interesse particular. Alguns exemplos deste tipo de técnica é a subtração da imagem por uma imagem referência, a utilização de coresfalsas, a utilização de filtros espaciais, a correção de deformações espaciais devido a ótica ou devido a uma variação de inomogeneidade da iluminação de fundo. Os sistemas dedicados a melhorar a qualidade da imagem trabalham geralmente muito rápido, pois são construídos em “hardware” ou “firmeware”, permitindo rapidamente ao usuário um julgamento sobre várias imagens processadas, segundo o tipo de tratamento. Esta técnica é encontrada na maioria dos programas de tratamento de imagens ou fotografias que estão atualmente no mercado, mas com algoritmos implementados em software, para computadores do tipo PC. 26 Sistema Geral de Visão Um sistema geral de visão, isto é, um sistema que deve responder a todas as situações, como é o caso do Sistema Visual Humano, é extremamente desenvolvido e complexo. O interesse em se compreender um tal sistema é fundamentalmente de orientar a pesquisa de uma máquina de reconhecimento genérica com as mesmas características do SVH. Atualmente algumas correntes científicas consideram o cérebro humano uma máquina com grande capacidade de explorar as informações sensoriais. Filosoficamente não se pretende, com estas linhas de pesquisas, retirar as qualidades humanas associadas ao cérebro ou aos homens. Mas devemos atentar para alguns pontos fundamentais: os computadores atuais são extremamente eficientes para trabalharem com base de dados, cálculos numéricos e formais, mas eles não conseguem realizar eficientemente algumas tarefas “simples” realizadas por animais e seres-humanos. Fica então uma questão, que é parte integrante das linhas de pesquisas modernas em processamento de imagens: Seria realmente o computador a maquina mais adaptada para resolver estes problemas? Um exemplo prático é o processo de reconhecimento de uma pessoa pelo SVH. O trabalho realizado pelo cérebro nos parece muito simples e bastante elementar; porém uma análise detalhada mostra que o cérebro humano é capaz, a partir de uma grande quantidade de informações de luminância e crominância (captada pelos olhos) de realizar esta tarefa de reconhecimento em apenas 150ms. Os computadores atuais são na pratica sistemas experimentais que nos ajudam a melhor compreender estas tarefas e consequentemente modelizá-las e reproduzí-las. Sistemas Experimentais Quando o sistema se restringe a sistemas experimentais, isto é, ele é orientado para a solução de um problema específico, a tarefa prática é de uma certa forma simplificada, pois poderemos controlar alguns parâmetros que um sistema geral de visão não tem acesso. A dificuldade está no fato de que devemos dar uma descrição objetiva ao problema e para aquelas análises que 27 são científicas é ainda importante que esta descrição seja quantitativa. O objetivo neste caso é desenvolver um sistema de tratamento da informação onde cada fase vai exigir métodos para retirar da imagem os parâmetros que exprimam esta informação. Fica assim evidente que o processamento de imagens, quando associado a sistemas experimentais, é bastante dependente do problema a ser resolvido. Neste instante as fases de pré-tratamento (seja na imagem ou fora dela, como por exemplo, o controle da iluminação externa) podem ter um peso importante quando queremos aumentar o desempenho computacional do sistema. Um sistema de processamento de imagens pode ser de uma maneira geral dividido nas seguintes etapas: Pixel e Conectividade Um pixel ("picture element" ou "pel") é o elemento básico em uma imagem. A forma mais comum para o pixel é a forma retangular ou quadrada. O pixel é também um elemento de dimensões FINITAS na representação de uma imagem digital. Freqüentemente, a organização de uma imagem sob a forma de uma matriz de pixels é feita em uma simetria quadrada, i.e., na forma de um tabuleiro de xadrez. Isto se deve a facilidade de implementação eletrônica, seja dos sistemas de aquisição seja dos sistemas de visualização de imagens. É importante lembrar que este tipo de organização provoca o aparecimento de 28 dois problemas importantes nas técnicas de processamento. Em primeiro lugar um pixel não apresenta as mesmas propriedades em todas as direções. Chamamos de primitivas gráficas os comandos e funções que manipulam e alteram os elementos gráficos de uma imagem. Também entram na definição os elementos básicos de gráficos a partir dos quais são construídos outros, mais complexos.(Hetem Annibal Jr.,2006, p3). Pontos O ponto é a unidade gráfica fundamental e também pode ser chamada de pixel. Propriedades de um pixel : - Posição no plano gráfico (x,y) - Cor Representação de pixel (coordenada - y) (x,y) preto (coordenada - x) Para se obter um pixel é necessário informar o par ordenado (x,y), que possibilita as coordenadas de linha e coluna onde será pintada a grade do vídeo; de acordo com a resolução especificada no sistema operacional. Eixo de coordenadas (800x600) ou (1024x768) 29 Nesta aula procuramos abordar alguns aspectos importantes sobre os processamentos de imagens. Começamos abordando diversos temas relacionados a codificação e transmissão de imagens, etc. Definição de informação para processar uma imagem, e como consiste em transformar sucessivamente a informação neste contesto na área de computação gráfica. 30 1. Quanto à iluminação, qual a diferença entre Luz emitida e Luz refletida? 2. O que é sistema de cor Aditiva? 3. O que é sistema de cor subtrativa? 4. Explique o modelo RGB. 5. Em que tipos de dispositivos normalmente se utiliza o sistema de cores RGB? 6. Explique o modelo CMYK. 31 Aula 4 Técnicas de produção de imagem Recursos de produção imagens Objetivos de aprendizado: Inserção das técnicas produção imagens Abordagem das mídias digitais Conhecer os tipos de produção de imagem pelo computador. Compreender os termos técnicos e ferramentas computacionais. Dispositvos móveis São as técnicas utilizadas na criação, planejamento, implantação e execução de projetos para ambientes digitais, como websites, redes sociais, dispositivos móveis (celulares e tablets) e portais na internet. Para essa finalidade, esse profissional utiliza recursos de texto, imagem, som e animação que permitem a interatividade. Em vídeo, ele atua na edição de imagens e na inserção de vinhetas eletrônicas, em trilhas sonoras e em textos, além de criar e roteirizar peças em diversas mídias. Cuida da fotografia e dos trabalhos em computação gráfica para cinema, TV e mídia digital. Promove convergências de mídias, como web rádios e web TVs. Lida com a realidade virtual e cria ambientes interativos utilizando softwares, linguagens computacionais e ferramentas de navegação pela internet. Em parceria com jornalistas, esse profissional pode trabalhar em provedores de conteúdo, agências de publicidade e editoras. Podem atuar em produtoras de vídeo, agências de publicidade, emissoras de rádio, televisão e portais de internet. Design digital Coordenar desenhistas, ilustradores e diagramadores na elaboração do desenho das páginas de sites na internet, equilibrando texto e imagem. Dominar ferramentas de computação gráfica para desenvolver interfaces de mídias digitais. Edição de som 32 Montar arquivos com músicas, diálogos, monólogos ou vinhetas para veiculação em mídia eletrônica. Edição de texto Participar de equipes multidisciplinares na elaboração e montagem de textos e hipertextos para auxiliar a navegação na internet e em CDs-ROM. Tecnologia da mídia Definir e acompanhar a aplicação de softwares para a internet. Estabelecer links, abrir imagens, reproduzir arquivos de som e amarrar hipertextos. Computação gráfica Criar interfaces para cinema, TV e mídia digital. O processo de visualização por computador se realiza por meio de um conjunto de técnicas que permitem transformar os dados na memória da maquina em uma imagem que pode ser mostrada em diversos suportes bidimensionais, tais como monitor de TV, filme, vídeo, papel etc. Uma componente importante desse processo é o tipo de tratamento gráfico dos objetos na imagem. A visualização é conhecida no jargão da área como “rendering''. Esse termo, de um modo geral, é usado para se referir à representação visual de um determinado objeto. Neste artigo, pretendemos discutir a evolução da visualização desde o começo da Computação Gráfica, e fazer uma análise da situação atual face as aplicações em diversas áreas. De início observamos que o tipo de tratamento gráfico desejado em uma determinada imagem gerada por computador sofre dois tipos de influência. Por um lado temos o problema do equipamento disponível, que impõe limites à qualidade visual da imagem que podemos obter. Por outro lado, a evolução das técnicas da Computação Gráfica (assim como em outras áreas da ciência), depende da escolha dos problemas considerados relevantes pela comunidade dos pesquisadores. Pela natureza da Computação Gráfica, esses dois fatores devem ser considerados em qualquer estudo sobre o desenvolvimento da área. É importante ressaltar que eles agem de forma interdependente. À medida que as técnicas se aprimoram e os equipamentos evoluem, as aplicações nas 33 diversas áreas avançam e passam a ter grande influência nas pesquisas, canalizando dessa forma o desenvolvimento da área em determinadas direções. Faremos a seguir uma análise crítica dessa evolução pelo lado da linguagem visual que é exatamente a face mais conhecida da Computação Gráfica. Equipamentos Gráficos Os equipamentos gráficos podem ser divididos em duas grandes categorias que correspondem à natureza dos dados por eles utilizados. Temos assim os dispositívos vetoriais e matriciais. Os equipamentos do tipo vetorial trabalham com informações geométricas definidas por suas coordenadas espaciais, tais como pontos e linhas. Exemplos de equipamentos vetoriais de entrada e saida são respectivamente o “mouse'', que permite especificar pontos no plano, e os plotadores, que possibilitam o traçado de linhas. Os equipamentos do tipo matricial trabalham com informações de cor associadas à uma região do espaço. Exemplos de equipamentos matriciais de entrada e sáida são respectivamente o “scanner’’ que permite a aquisição de imagens e os monitores de video que possibilitam a exibição de imagens”. Os equipamentos vetoriais são baseados em uma tecnologia mais simples, mecânica / analógica, e por isso foram os primeiros dispositívos gráficos a serem desenvolvidos. Os equipamentos matriciais são baseados numa tecnologia mais sofisticada que requer alta capacidade de memória digital e só posteriormente se tornaram viáveis, em parte devido à consolidação da indústria de vídeo. Cada um desses tipos de dispositívo de entrada e saida gráfica é mais adequado à uma finalidade específica. Sendo, por esse motivo, todos igualmente importantes. Na realidade, eles podem ser considerados, de certa forma, complementares. Esse fato pode ser constatado nas estações gráficas, que congregam diversos tipos de equipamentos de entrada, processamento e saida, formando um sistema integrado. 34 É interessante notar que os dispositivos matriciais de saida são capazes de exibir dados vetoriais pela utilização da técnica de rasterização, que realiza a conversão entre os formatos vetorial e matricial. Por outro lado, a técnica de segmentação permite a conversão de dados matriciais em dados vetoriais. Essa é a base tecnológica que constitui o suporte operacional da Computação Gráfica. Nela, se necessário, podemos nos aprofundar indentificando subcategorias e analisando as características de cada uma delas. Veremos que a compreensão desses recursos gráficos é fundamental para o estudo dos sistemas de visualização. Técnicas de Visualização Vamos investigar as técnicas de visualização de acordo com a dimensão dos dados a serem visualizados. Temos então, os sistemas de visualização 2D (bidimensionais), 3D (tridimensionais) e genéricos (n-dimensionais). O resultado do processo de visualização é sempre uma imagem. Portanto, esses sistemas produzem informações visuais em um suporte bidimensional para representar dados de dimensão e natureza diversas. No caso de dados bidimensionais existe uma correspondencia entre as dimensões dos objetos visualizados e do espaço de representação. Nos outros casos, algum tipo de projeção deverá ser efetuado o que acarreta em uma perda inevitável de informação. Os sistemas de visualização 2D se dividem em programas de pintura e programas de desenho. Nos programas de pintura, o usuário especifica a cor de cada ponto da imagem utilizando técnicas interativas e de processamento de imagem. Nesse tipo de sistema, os dados correspondem exatamante às informações visuais a serem exibidas. Os objetos que podem ser manipulados se restringem à imagem (ou blocos da imagem) e seus elementos (pontos associados à informações de cor). Os sistemas de pintura requerem necessáriamente, para a saida de dados, dispositivos matriciais e para entrada de dados, dispositivos vetoriais que podem ser complementados por dispositivos matriciais. Exemplos de 35 programas de pintura disponíveis no mercado são o Paintbox, o Adobe Photoshop e o Fractal Painter. Nos programas de desenho, o usuário trabalha com objetos geométricos que possuem atributos visuais, tais como cor, de modo a serem convertidos em imagem. Com isso, acrescentamos uma etapa intermediária ao processo, aumentando o seu poder de descrição. Uma conseqüência importante é que passamos a ter o modelo geométrico, uma entidade independente da imagem que pode ser manipulada como tal (a noção de modelo irá assumir uma importancia ainda maior nos sistemas de visualização n-dimensionais, onde inexiste uma correspondencia direta entre os dados e a imagem). Os sistemas de desenho podem utilizar para saida de dados tanto dispositivos vetoriais quanto matriciais. Para entrada de dados, eles se utilizam primordialmente de dispositivos vetoriais. É possivel utilizar dispositivos matriciais em um sistema de desenho. Nesse caso o sistema deve ter recursos de segmentação para converter dados matriciais em vetoriais. Nos programas de desenho esse tipo de ferramenta é conhecida como “auto-trace'' (traçado automatico). Exemplos de programas de desenho disponíveis no mercado são o Corel Draw, o Adobe Illustrator e o Aldus Free Hand. Os programas de visualização 3D podem ser considerados como uma extensão dos programas de desenho em que os modelos geométricos são tridimensionais. Para a partir deles poder gerar uma imagem, devemos primeiro projeta-los no plano tornando-os bidimensionais. Esse processo emprega a metáfora da camera virtual: o usuário define imagens sintéticas de objetos tridimensionais como se os estivesse fotografando. Note que, além dos modelos geométricos, temos o modelo da camera o qual determina o tipo de projeção. Podemos ainda, simular a propagação da luz para formar a imagem tal como numa fotografia. Assim, necessitamos de um modelo da iluminação que inclue superfícies, fontes de luz e o meio transmissivo. Exemplos de programas de visualização 3D disponíveis no mercado são o 3D Studio e o Renderman. 36 Nos programas de visualização N-dimensionais, o problema é análogo ao caso tridimensional, com duas diferenças. Primeiro não existe uma familiaridade com espaços de dimensão maior que três. Segundo, os dados visualizados, em geral, nao tem nenhum significado geométrico à priori. Nesse tipo de sistema, procura-se representar o máximo de informações dimensionais usando todos os artifícios disponíveis, por exemplo, através de variações cromáticas e temporais. Representação Visual Podemos fazer uma análise da representação visual utilizada pela computação gráfica sob dois pontos de vista, a saber: dos meios e das técnicas de representação. Com relação aos meios de representação temos as imagens do tipo vetorial e do tipo matricial. As imagens vetoriais são constituidas por linhas de espessura e cor constantes. Consequentemente, os elementos gráficos se restringem as retas, curvas e padrões de linhas. Já nas imagens matriciais a cor pode variar a cada ponto do suporte visual. Os elementos gráficos matriciais são: regiões de cor sólida, gradações de cor e texturas. As imagens matriciais podem representar também elementos gráficos vetoriais através da rasterização. Por esses motivos, a representação matricial é mais completa e engloba a representação vetorial. Com relação às técnicas de representação temos as diversas maneiras de estruturar os elementos gráicos descritos acima. Essas técnicas são implementadas, como operações primitivas nos sistemas de visualização que constituem as diversas ferramentas de criação dos objetos gráficos e manipulação de seus atributos. Nos sistemas de pintura, essas ferramentas cumprem as funções de um pincel sintético, determinando a cor dos pontos da imagem ao longo da tragetória de cada pincelada. Nos sistemas de desenho, as ferramentas gráficas atuam como régua e compasso virtuais de modo a permitir a definição de figuras geométricas, tais como círculos e retângulos. 37 Nos sistemas 3D as ferramentas servem para manipular os elementos da cena, as fontes de luz e a camera virtual. Linguagem Visual Na fase inicial os objetos gerados pelo computador tinham a aparência de maquetes confeccionadas com arame. Na realidade, esses objetos aparecem na imagem através do traçado de diversos segmentos de linha reta, que procuram definir a sua forma. Esse tipo de representação tinha influência dos equipamentos vetoriais que cumpriam muito bem a função de traçar segmentos de linha reta. Essa fase se estendeu desde o início da década de 60 até meados da década de 70, e é conhecida como “era dos modelos de arame”. A partir de meados da década de 70 iniciaram as pesquisas com a finalidade de obter um tipo de representação dos objetos com texturas, de modo a evidenciar as superfícies que constituem esses objetos. Essa fase pode convenientemente ser rotulada por era da visualização de superfícies''. Já se inicia no momento a terceira etapa na evolução da qualidade estética das imagens produzidas pelo computador. De um ponto de vista científico essa fase é motivada pelo fato de que o mundo físico possui volume, e os objetos que pretendemos construir e visualizar no computador são na realidade sólidos. Desse modo, as técnicas de visualização devem ser orientadas para volumes e não para superfícies. O meio ambiente, no qual a energia luminosa se propaga, deve ser levado em consideração no processo. Essa nova fase pode ser chamada de era da visualização volumétrica''. Os equipamentos atuais não são plenamente adequados para esse tipo de representação. Apesar disso, é muito grande o número de pesquisas em andamento nesse sentido. Visualidade e Estilos A evolução da linguagem visual da computação gráfica foi influenciada de forma significativa pelo aprimoramento dos meios e técnicas de representação. Essa tendência se evidencia principalmente nos sistemas de visualização 3D. Até recentemente a ênfase tem sido dada em se obter, no computador, o realismo fotográfico'', ou seja, conseguir gerar imagens que possam ser 38 confundidas com fotografias. A síntese de imagens fotorealistas foi um grande desafio para os pesquisadores da área e por isso mesmo teve um papel importante no desenvolvimento das técnicas de visualização. Isso se deve a dois motivos principais: Em primeiro lugar, a busca do realismo implicava na simulação dos processos físicos de formação da imagem, bem como de aspectos perceptuais. Além disso, estabeleceu um objetivo concreto, que embora difícil de ser atingido, tinha um termo de comparação direto e de verificação imediata. Em segundo lugar, os métodos gráficos criados para a geração de imagens realistas constituem uma base sólida para a pesquisa de outros estilos de representação visual. Podemos dizer que a computação gráfica já domina completamente a tecnologia da síntese de imagens fotorealistas. Nesse sentido, o maior problema ainda é o da construção dos modelos geométricos que compõem uma imagem complexa. Atualmente, ultrapassada a fase realista, a comunidade de computação gráfica começa a se preocupar com outros estilos de representação visual. Várias pesquisas estão sendo feitas no sentido de permitir o uso de recursos de desenho e pintura nos sistemas de visualização 3D. Para isso são utlizados sistemas híbridos 3D e 2D que combinam a síntese e o processamento de imagens em ferramentas de alto nível. Conclusão A análise acima fornece uma visão geral dos sistemas de Computação Gráfica. Diferentemente dos meios convencionais de expressão visual, nos quais as relações entre o usuário e os recursos de produção estão definidas à priori, nos sistemas de visualização estas devem ser programadas com base em um conjunto de critérios pré-estabelecidos. Para superar esses problemas a Computação Gráfica deveria possibilitar o uso conjunto e simultâneo de diferentes técnicas de visualização. 39 A Computação Gráfica pode ser utilizada de forma integrada em diversas aplicações. As considerações feitas acima são válidas em muitas áreas que vêm se utilizando dos métodos e técnicas da Computação Gráfica. Dessa aventura devem participar cientistas, artistas e profissionais de diversas áreas de aplicação, enfatizando ainda mais o caráter multidisciplinar inerente à Computação Gráfica. 40 1. Em que tipos de dispositivos normalmente se utiliza o sistema de cores CMYK? 2. Por que razão a cor preta teve de ser incorporada no sistema de cores CMYK? 3. Que tipos de problemas podem ocorrer na conversão entre os modelos de cores. 4. Quais as vantagens e desvantagens do modelo HSB 5. O que são cores indexadas? 6. Explique a conversão entre bitmaps. 7. Como ocorre a conversão de arquivos bitmaps para vetores? 8. Como ocorre a conversão de vetores para bitmaps? 41 Aula 5 Primitivas Gráficas Conceitos de primitivas Conversão matricial Objetivos de aprendizado: Conhecer as Primitivas Gráficas. Compreender a conversão matricial Primitivas de desenho O objetivo desta prática é entender como desenhar objetos simples. Para tanto, a biblioteca oferece um conjunto de primitivas de desenho, que podem ser utilizadas tanto em 2D como em 3D. Conversão matricial E o processo que permite realizar a conversão de um desenho qualquer armazenado na memória de imagem para um dispositivo matricial (ou raster) que siginifica (Imagens raster (ou bitmap, que significa mapa de bits em inglês) são imagens que contêm a descrição de cada pixel, em oposição aos gráficos vectoriais) Primitivas Gráficas Primitivos são elementos geometricos básicos que podemos utilizar na representação gráfica de nossa aplicação. Exemplo: São retas, circunferência, elipse e etc. 42 Primitivas de Desenho São formas de interpretar informação geométrica. Como visto em aula, e como mostra na figura acima. Traçado de Retas A reta é a primitiva 2D mais comum. Todos wireframes(modelos de arame) 3D são eventualmente retas 2D. Os algoritmos aperfeiçoados contêm numerosas técnicas e truques que ajudam a projetar algoritmos mais avançados. Características Desejáveis para o Traçado de Retas Linearidade Os pixelstraçados devem dar a aparência de que estão sobre uma reta Espessura (densidade) uniforme 43 A densidade da reta é dada pelo número de pixelstraçados dividido pelo comprimento da reta. Para manter a densidade constante, os pixels devem ser igualmente espaçados. A imagem do segmento de reta não deve variar de espessura ao longo de sua extensão. Correção no Traçado de Retas Propriedades Exigidas no Traçado de Retas Precisão Os segmentos devem iniciar e terminar nos pontos especificados. Caso isso não ocorra, pequenos gapspodem surgir entre o final de um segmento e o início de outro Densidade independente da inclinação 44 Para segmentos de retas de diferentes inclinações Continuidade A imagem não apresenta interrupções indesejáveis Rapidez no traçado dos segmentos Retas Rápidas Queremos desenhar uma reta entre os pontos (x1,y1) Instanciamento de Primitivas(justaposição de sólidos primitivos) Esta técnica de modelagem cria novos objetos através do posicionamento de objetos por transformações geométricas Outra forma de criar objetos com esta técnica é o uso de Primitivas Parametrizáveis. Com isto pode-se criar, por exemplo, um conjunto de peças mecânicas ou roupas, com apenas alguns comandos. Na figura a seguir pode-se observar uma cadeira que foi modelada pela justaposição de paralelepípedos e uma sala modelada pela justaposição de cadeiras e de uma mesa. Geometria Sólida Constritiva (CSG-Contrutive Solid Geometry) Método de CSG consiste em construir um objeto a partir da combinação operatória (união, intersecção e diferença) de dois ou mais sólidos. A figura 4exemplifica o uso desta técnica. No exemplo pode-se observar a realização de uma diferença entre um retângulo e uma elipse. 45 Modelagem por Varredura(sweep) A representação por varredura cria objetos baseada na noção de que uma curva C1 quando deslocada no espaço ao longo de uma trajetória dada por uma outra curva C2 descreve uma superfície que pode ser usada para definir um sólido. À curva C1 dá-se o nome de CONTORNO ou GERATRIZ e à C2, o nome de CAMINHO OU DIRETRIZ. Varredura Translacional(Extrusão) Um objeto "O" definido por varredura translacional é obtido pela translação de uma curva C ao longo de um vetor V, por uma distância D. A figura abaixo exemplifica a criação de dois objetos por esta técnica. A varredura translacional de um retângulo gera um paralelepípedo, de uma circunferência gera um cilindro. 46 Varredura Rotacional Neste tipo de modelagem por varredura a superfície do objeto é descrita por uma curva que gira em torno de um eixo. Na figura acima temos, à esquerda, uma curva C e à direita o objeto gerado pela rotação de C em torno do eixo Y. Modelagem por Seções Transversais Esta técnica permite gerarem sólidos através de cortes. A idéia básica é obter seções transversais do objeto que se deseja modelar. A partir destas seções, usem-se seus pontos através de triângulos. A sfatias podem ser obtdas pelo corte do objeto ou por processos como tomografia. Toma-se um eixo (segmento de reta) • Corta-se o sólido em fatias perpendiculares ao eixo • Digitaliza-se o contorno de cada fatia • Une-se as fatias com triângulos 47 1. A computação gráfica é uma área multidisciplinar. Descreva as disciplinas e de que forma ocorre essa abrangência. 2. A computação gráfica é subdividida em 3 grandes áreas, defina cada uma delas. 3. Defina a divisão funcional da computação gráfica. 4. Quanto a aplicação da computação gráfica, como podemos classificá-la? 5. O que é imagem digital? 6. O que é imagem raster? 7. O que é desenho vetorial? 8. Defina o pixel. 9. Explique a resolução de imagens 48 49 Aula 6 Conceitos de aplicativos gráficos Manipulação de ambiente gráfico Objetivos de aprendizado: Aplicativos gráficos Conhecer e manipular ambiente gráfico. Quais são os aplicativos disponível no mercado. Ambientes gráficos Atualmente todas as áreas da computação dependem de aplicações gráficas de alto desempenho. Isso requer naturalmente, grandes recursos de hardware para processar estes ambientes e interfaces, além naturalmente da necessidade de programadores experientes para lidar com as mais diversas bibliotecas e tecnologias existentes. A Computação Gráfica é uma área da Ciência da Computação dedicada ao estudo e desenvolvimento de técnicas e algoritmos para geração de imagens, bem como análise e manipulação das mesmas. Está presente em diversas áreas do conhecimento, que vão desde aplicações para Engenharia em projetos e modelagem de objetos, simuladores e na criação de jogos eletrônicos. A Computação Gráfica surge somente após a criação de periféricos gráficos de entrada e saída, pois antes as informações eram representadas somente por meio de caracteres alfanuméricos. A quantidade de cálculos matemáticos em aplicações gráficas necessita de muita memória e recursos de processamento em termos de velocidade. Para aproveitar melhor a capacidade de hardware e facilitar a criação de aplicações gráficas, o mais comum é que programadores utilizem bibliotecas 50 gráficos prontas que trazem uma infinidade de funcionalidades rotinas comuns. No caso específico da Computação Gráfica, programadores necessitam de rotinas gráficas para elaborar rapidamente programas sem ter a preocupação de desenvolver algoritmos básicos, tais como um segmento de reta, inclinação, preenchimento de objetos e etc. A Open Graphics Library – OpenGL pode ser compreendida como um conjunto de rotinas gráficas e de modelagem que facilita o desenvolvimento de aplicações gráficas, sejam elas bidimensionais ou tridimensionais. A OpenGL é gerenciada por um consórcio independente formado em 1992 formado por diversas empresas tais como 3DLabs, Apple, NVIDIA, SGI, ORACLE (SUN), Microsoft e diversas outras. A OpenGL se trata de uma API para a criação de programas gráficos 2D e 3D multiplataforma que serve tanto para estações de trabalho potentes ou computadores pessoais. Seu funcionamento é semelhante a uma biblioteca da linguagem de programação C. Um programa ou aplicação baseado em OpenGL pode ser escrito em alguma linguagem de programação que utiliza uma ou mais rotinas da biblioteca OpenGL. Para facilitar o desenvolvimento de aplicações gráficas, há algumas bibliotecas que nos auxiliam com diversas funções para criar janelas e gerenciar eventos. As mais utilizadas são a GLU e a GLUT. A GLU (OpenGL Utility Library) é mais comum e instalada com a OpenGL. Seguem uma rígida padronização nos nomes das funções, sendo utilizado sempre o prefixo glu. Destacamos que é usada na definição de matrizes para projeção e orientação da visualização, mapeamento de coordenadas e desenho de superfícies quadráticas. A GLUT (OpenGL Utility Toolkit) foi desenvolvida para facilitar o desenvolvimento de interfaces. É um kit de ferramentas independente de plataforma que inclui alguns elementos de GUI (Graphical User Interface). Com a CLUT podemos, por exemplo, criar menus pop-ups, gerenciar eventos de 51 teclado, mouse. Entendemos que a GLUT encapsula a complexidade das APIs dos vários sistemas de janelas que existem hoje em dia. Veremos a seguir como configurar o embiente de desenvolvimento para o uso a linguagem C ou C++, no entanto hoje é possível desenvolver aplicações gráficas usando linguagens modernas como C# ou Java[1]. A seguir as instruções consideram que o usuário esteja usando a ferramenta Dev C++. Para instalar o ambiente de desenvolvimento. Para instalar a biblioteca GLUT na ferramenta DEV-C++, selecione o menu Ferramentas/Atualizações. Na janela WebUpdate, selecione o servidor devpaks.org e clique em Check for updates. O programa irá baixar os pacotes disponíveis. Selecione o grupo OpenGL e marque a linha contendo glut. Clique no botão Download selected e aguarde. Siga as instruções da tela para que a instalação seja concluída. Para se certificar que a instalação foi concluída, verifique se existe a biblioteca litglut32 no diretório LIB do Dev C++. Agora que o nosso ambiente de programação (a ferramenta DEV C++) está pronto para estudarmos e experimentarmos os recursos da real Computação Gráfica. APLICATIVOS PARA COMPUTAÇÃO GRÁFICA Desenho Vetorial/Ilustradores • • • Illustrator Inkscape - aplicativo de código aberto CorelDraw Desenho de bitmaps/Edição de fotos • • • Adobe Photoshop Corel PHOTO-PAINT GIMP - aplicativo de código aberto Visualizadores de imagens • • XnView IrfanView 52 • Ulead Photo Explorer Edição de Vídeo • • • • • • After Effects VirtualDub - aplicativo de código aberto Adobe Premiere Sony Vegas Cinelerra - aplicativo de código aberto Final Cut Modeladores 3D • • • • • • • • Wings 3D Sculptris ZBrush Autocad SolidWorks Rhino3d FreeCad SketchUp Modeladores e Animadores 3D • • • • Blender- aplicativo de código aberto 3DsMax Cinema 4D Maya 53 De pesquisa: 1. Como ocorre a conversão de arquivos bitmaps para vetores? 2. Como ocorre a conversão de vetores para bitmaps? 3. O que é a compressão de imagens e em que é baseada? 4. Defina a compressão RLE. 5. Defina a compressão LZW. 6. Defina a compressão JPEG. 54 Aula 7 Tipos de Coordenadas Exemplos de transformações Objetivos de aprendizado: Conhecer a estrutura de transformação 2D e 3D. Mudanças de coordenadas Compreender coordenadas. as mudanças Identificar estas coordenadas. Transformações Geométricas As transformações geométricas têm papel de destaque na computação gráfica. Elas são a base matemática que permite a obtenção de resultados importantes em programas que trabalham com dados 2D e 3D. Dentre as várias aplicações das transformações geométricas, temos interesse especial em utilizá-las para fazer projeções seguindo o modelo da câmera sintética. Antes de utilizá-las, no entanto, é importante definí-las formalmente para que seu significado fique bem claro. As coordenadas homogêneas foram introduzidas nas matrizes de transformação para que todas as transformações geométricas ficassem uniformizadas na dimensão 4X4 de modo que o cálculo matricial pudesse ser realizado a partir do simples pilhamento das matrizes. Para ilustrar as matrizes de transformação a partir do programa Transformation, foram criadas subjanelas mostrando os elementos da matriz resultante do empilhamento de todas as transformações evidenciando os elementos que estão sendo alterados em função da transformação aplicada (rotação, translação e escala) e os elementos da matriz de projeção, onde aparecem as transformações perspectivas. 55 de Na figura abaixo, podemos observar que foram aplicadas transformações geométricas de translação e de rotação do objeto modelado. Observe e compare com a figura anterior, que na janela "Matriz Resultante", é possível visualizar o efeito do empilhamento das matrizes de transformação. Observe também que não há alterações na janela "Matriz de Projeção". Translação Podemos entender a transformação de translação como o sendo um deslocamento em linha reta. Podemos associar um fator de deslocamento a cada dimensão do espaço onde estamos trabalhando, de forma que uma translação pode ser representada por vetor. Não faz sentido aplicar uma translação a vetor, já que não estamos associando posição a ele. Rotação A rotação pode ser definida como um movimento de giro, num plano, em relação a um referencial. O resultado é um deslocamento que preserva a distância entre o ponto e o referencial. Esta transformação preserva ângulos e distâncias. No espaço tridimensional a rotação pode ser definida através da associação de um ponto com um vetor, que chamaremos de eixo 56 Assim, podemos dizer que um eixo é um vetor ao qual existe uma posição associada ou, “um vetor que passa por algum lugar”. Esta representação está de acordo com a idéia de giro, num plano em relação a um ponto. Escala A transformação de escala pode ser entendida como a mudança de unidade de medida em uma ou mais dimensões. Ela produz um efeito que pode ser associado ao zoom. Normalmente, a mudança de escala é igual em todas as dimensões, de forma a preservar ângulos, mas isso não é obrigatório. Associaremos um fator de escala a cada dimensão. Apesar de não preservar ângulos e distâncias, uma transformação de escala preserva o paralelismo entre linhas. Inclinação A transformação de inclinação (do inglês shear) não é uma transformação primária, ela pode ser definida em termos das transformações anteriores, entretanto, devido à sua utilidade, ela será vista separadamente. Uma transformação de inclinação tem o efeito de “puxar” um objeto em uma ou mais dimensões e não deve ser confundida com a rotação. Esta transformação é definida por um escalar (fator de inclinação) em cada dimensão que indica o quanto uma coordenada será transladada em função de outra coordenada em outra dimensão. Projeção Conforme comentado anteriormente, para gerar a imagem de um objeto 3D, precisamos converter as coordenadas 3D em coordenadas 2D que correspondem a uma visão específica do objeto. Esse processo é chamado de projeção. Existem dois tipos de projeção: a perspectiva e a paralela. A projeção perspectiva é aquela que acontece no processo de formação de imagens em nossos olhos ou numa câmera fotográfica. 57 No processo de síntese de imagens, o plano de projeção será uma representação de algum dispositivo de apresentação (ex.: vídeo ou papel num impressora), por isso é importante que exista um sistema de coordenadas embutido no plano de projeção (PP), de maneira que, a partir da coordenadas de pontos de um objeto. Projeção Paralela Para encontrar uma fórmula que nos permita fazer uma projeção paralela qualquer, vamos primeiro imaginar um projeção paralela simples o suficiente para que o cálculo da projeção seja trivial. Projeção Perspectiva Da mesma forma que no caso da projeção paralela, pretendemos encontrar uma projeção perspectiva com características especiais que permitam encontrar seu resultado de maneira trivial. 58 Pesquise mais sobre: 1. O que é e como funciona a técnica de pontilhamento de cores? 2. Diferencie a compressão com e sem perda. 3. O que é o processo de visualização bidimensional? 4. Defina imagem e modelo de objeto. 5. Quais as etapas de visualização 2D? Defina cada uma delas. 59 Aula 8 Tratamento de imagem Software de tratamento de imagem Objetivos de aprendizado: Aspectos de cada software Aplicação dos conceitos tratamento de imagem. Compreender aspectos software e a utilização. de Introdução ao software O Adobe PHOTOSHOP é um importante software para tratamento e construção de imagens. Dispõe de diversos recursos e efeitos o PHOTOSHOP leva sua mente a criar e editar figuras excelentes. No PHOTOSHOP além de editar imagens feitas no CorelDRAW e outros softwares, pode-se também editar fotos e construir suas próprias imagens. Os arquivos construídos no PHOTOSHOP ganham a extensão PSD, mas também pode-se salvar os seus arquivos no formato TIFF, BMP. E, além disso, para que você possa usar as imagens construídas no PHOTOSHOP na Internet, você pode salvar os arquivos como JPG(JPEG). Quando o PHOTOSHOP é iniciado, o programa lhe avisará sobre o produto que será mostrado e após o seu carregamento surgirá para a você a tela principal. O mesmo ao iniciar não apresenta nenhuma imagem aberta, deve-se abrir um arquivo de imagem suportado por ele. Quando o arquivo em questão é aberto também é apresentada uma janela com uma 60 cada Paletas de Trabalho A interface do PhotoShop contém algumas paletas para auxiliar em nosso trabalho com o programa. Geralmente, ao lado esquerdo da tela se encontra a PALETA DE FERRAMENTAS. Camadas do Photoshop A PALETA DE CAMADAS é com certeza, a mais importante do programa. Pois com ela iremos trabalhar a todo instante. Para cada objeto inserido na área de trabalho, cria-se automaticamente, uma nova camada, para podermos alterar as configurações ou ate mesmo aplicar efeitos em nosso trabalho, temos que fazê-lo através das camadas. Após a edição de cada camada, podemos mesclá-las, tornando às uma única imagem, através do meu CAMADA > ACHATAR CAMADAS. 61 Na paleta de camadas, existem as opções para CRIAR NOVA CAMADA, DELETAR UMA CAMADA. Lembrando que, um objeto inserido na tela de pintura, só poderá ser excluído do trabalho excluindo-se a camada à que ele pertence. Paleta Histórico A paleta HISTÓRICO, exibe todas as ações efetuadas no programa, ou seja, tudo que alterarmos desde o momento em que abrimos ou criamos uma nova imagem, estará descrito nesta paleta. Podendo então, ser desfeita uma ou mais ações. Os efeitos do aplicativo esta no menu filtro, onde são utilizados para gerar grande parte dos efeitos normalmente vistos em trabalhos profissionais. 62 63 Teórica: 1. Quais são os sistemas de referência? 2. Explique cada um dos 3 sistemas de referências. 3. O que é um Storyboard? Qual sua função? 4. O que é o processo de Renderização? 5. O que é Mesh? 6. O que é a 3D view? 7. Diferencie desenhar em 2D e modelar em 3D. É possível desenhar em 3D? 8. Descreva o que é um espaço tridimensional para a computação gráfica. 9. O que é uma GPU? PRÁTICA 1. Faça uma montagem, escolha 2 (duas) imagens para esta montagem. 2. Crie um efeito com seu nome, e salve. 3. Crie uma marca d’água, escolha uma imagem para esta técnica. 4. Modifique a cor de uma foto, escolha uma imagem ou foto e modifique-a. 5. Crie um Logotipo e uma Logomarca. 64 Aula 9 Processamento de imagem digital Conceitos sobre os editores 3D Objetivos de aprendizado: A importância da modelagem Compreender tipos de editores 2D e 3D. Conhecer como modelar objetos em 2D e 3D Visão geral sobre editor Segundo BRITO (2010 p. 15), Blender é um software de modelagem e animação 3D de código aberto. Ele está sob a licença GNU-GPL, que permite a qualquer pessoa ter acesso ao código-fonte do programa para que possa fazer melhorias, contanto que disponibilize tais melhorias à comunidade. Para facilitar as coisas, vamos pensar nos editores. Temos editores de textos como o LibreOffice, que nos permite dentre outras coisas, escrever textos, formatar esses textos, alterar as cores das letras, seus tamanhos, ordem de escrita, inserir imagens, rotacionar e redimensionar objetos, importar tabelas e até outros arquivos para dentro do documento. Com os editores de imagens acontece a mesma situação. Nós criamos imagens, alteramos imagens prontas, mudamos cores, inserimos textos, importamos alguns tipos de arquivo externos, mudamos as dimensões, rotação e assim por diante. O Blender é uma espécie de editor 3-D. Nele nós criamos cenas, objetos, alteramos as propriedades desse objeto, como as cores, dimensões, rotação. Importamos uma série de arquivos externos, escrevemos textos em 3-D dentre outras inúmeras possibilidades. Existem uma série de características 65 interessantes e de coisas bacanas que podem ser executadas no Blender. Obs. : Todos os exemplos mostrados a seguir foram feitos pelo criador desse material. No site do Blender e outros especializados no assunto há efeitos mais sofisticados e que exemplificam mais amplamente o uso das ferramentas. Modelagem Funciona como uma ferramenta de modelagem para propósitos gerais. Seja na criação de maquetes, ambientes internos, mascotes, humanoides e até objetos mecânicos. Animação Desde animações simples, como deslocamento e rotações, até a articulação de personagens e simulações de fluídos, tecidos, corpos rígidos e etc. Simulação de pelos e cabelo Com a esfera podemos criar varios tipo Hair, ou seja, cabelo. Foi ativado o Hair Dynamics, que possibilita dar movimento aos fios quando o corpo principal (esfera) é animado. Uma característica interessante do Hair no Blender é que você pode penteá-lo em tempo real. Isso mesmo! Você conta com ferramentas que além de pentear os cabelos virtuais, também os enrola, corta e faz crescer. É como ser um cabeleireiro com poderes extras. A partícula Hair pode ser usada também para simular grama e mesmo reagir com outros elementos, como vento, personagens caminhando ou corpos rígidos que eventualmente colidirão com ela. Simulação de tecidos Permite simular toda a sorte de tecidos, como algodão, cotton, couro e afins. O modificador de tecido ou Clothe, como é conhecido, foi combinado com o Hair, para criar o efeito de couro com lã. Quando visto de perto, podemos atestar a qualidade do efeito criado com a lã e sua deformação combinada com 66 a do tecido. Os cálculos de deformação do tecido, bem como dos outros modificadores semelhantes são feitos automaticamente, foi colocada uma esfera que levanta o tecido pelo meio. 67 PRÁTICA: 1. Faça uma modelagem de um cubo colorido. 2. Faça uma modelagem de uma caneca. 3. Faça uma modelagem de uma mesa. 4. Faça uma modelagem em 3D de um ambiente. 5. Fala uma Modelagem do logo da Microsoft. 68 Aula 10 O processo de rendering Conceito sobre rendering Objetivos de aprendizado: Acabamento visual Compreender rendering. os conceitos sobre Conhecer técnicas empregadas na área de design. Conceito sobre rendering Na área da computação gráfica isso se dá por meio do emprego de programas computacionais criados no exterior que, mesmo passando pela tradução de suas palavras e expressões lingüísticas, não conseguem forçar o usuário a mudar os termos que costuma utilizar para se expressar. Em geral, palavras que ainda não sofreram sua tradução para o português por não serem de uso corriqueiro acabam por serem empregadas na sua forma original. Isso facilita e agiliza, a troca de informações entre profissionais de países distintos, principalmente por meio da internet. Como exemplo dessa situação está o termo rendering, há muito utilizado no meio gráfico brasileiro. Esta expressão é empregada na ilustração 2d, manual ou computacional e na ilustração e animação 3d (exclusivamente computacionais). Quando empregado por artistas 2d o termo rendering significa uma técnica de ilustração que permite a obtenção de imagens com grande apelo visual e de forma rápida. Esta técnica é muito empregada na área do Design para ilustrar idéias de novos produtos. Já na área da computação gráfica 3D o rendering significa gerar uma imagem 2D a partir do modelo, para 3D previamente construído. Esse processo é realizado por um programa chamado renderer, que pode ser parte integrante do programa de modelagem 3D. O renderer faz cálculos para traduzir a 69 linguagem 3D do modelo para a linguagem 2D, refinando o acabamento visual original do modelo 3D. O resultado final são imagens dos mais variados formatos, como: jpeg, .tiff, .gif, etc. A necessidade do processo de gerar um rendering ou de renderizar um modelo 3d está relacionado a dois fatores. Primeiro, a geração de imagens 2d ou de uma animação, que nada mais é que uma seqüência de imagens 2d, permite que o modelo 3d seja visualizado em diferentes formatos ou diferentes mídias (computadores, celulares, tocadores de mp4, etc) sem a necessidade de possuirmos o programa computacional utilizado para sua criação. Por exemplo, não lhe pedirão para comprar um programa de modelagem e animação 3d como o Autodesk Maya ou o NewTek LightWave quando quiser assistir a um “Madagascar” ou um “300 de Esparta”. Segundo, a qualidade visual apresentada na tela do programa de modelagem e animação 3d, chamada de wireframe ou aramado é inferior à obtida pelo processo de rendering. Isso se deve ao fato da imagem apresentada por esses programas se basear no processamento feito pelas placas de vídeo do computador que, em geral, conseguem calcular apenas uma parcela dos parâmetros disponíveis para geral uma imagem com acabamento refinado. Dentre estes parâmetros, responsáveis pela qualidade de um rendering estão: a iluminação direta e indireta do modelo 3d, o sombreamento, a texturização, transparência, translucência, reflexão, refração, difração, etc. Por exemplo, são estes parâmetros que permitem a obtenção de imagens que mais parecem fotos tiradas de objetos reais, quando na verdade são modelos 3d. Devemos considerar ainda que o processo de renderizar possa ser feito em tempo real ou de forma prévia. O rendering em tempo real é utilizado em simulações e em jogos eletrônicos, nos quais o processamento que traduz o modelo 3d para uma imagem 2d é feita baseada na capacidade de processamento gráfico do conjunto de hardware, encabeçado pela placa gráfica. Em geral o rendering em tempo real apresenta qualidade visual inferior ao rendering prévio ou pre-rendering. 70 Por outro lado, como o próprio nome diz, o rendering prévio ou pre-rendering utiliza toda a capacidade de processamento da máquina empregada para esse fim, gerando imagens 2d que podem ser vistas em outras mídias sem a necessidade de refazer esse processamento, o que ocorre no rendering em tempo real. Além disso, a qualidade visual das imagens tende a ser superior, visto que esse é o processo para a criação de animações 3d e efeitos especiais para filmes. O processo de pre-rendering pode demorar de minutos a horas ou dias para serem concluídos, dependendo do poder de processamento da máquina e da complexidade do modelo 3d e dos parâmetros do rendering. Pare para pensar... Por fim, duas considerações importantes sobre o rendering, relacionadas ao trabalho com ilustração e animação 3d. Devido ao fato de a qualidade visual final da imagem 2d (também chamada de ilustração 3d, quando a imagem é gerada a partir de um modelo 3d) ou da animação 3d depender do processo de rendering o tempo de duração deste processo deve ser considerado na formação do custo do projeto. Além disso, o tempo de duração do rendering também deve ser contabilizado para o tempo total de execução de qualquer projeto de ilustração ou animação 3d, evitando-se atrasos na entrega de um projeto ou até mesmo seu cancelamento. 71 72 Trabalho Final Objetivos Objetivo: Aplicação das técnicas em Computação Gráfica, desenvolvido em uma Home Page ou um blog. Com o conteúdo abordado em aula. Datas das apresentações: Todas as apresentações devem ser entregues em pen drive antes do início da aula. Trabalhos entreguem após o prazo e momentos estabelecidos não serão avaliados; Apresentação deve seguir os critérios abaixo: Conteúdo: Objetivo; • Introdução • Fundamentação Teórica • Desenvolvimento • Conclusão • Referências; 73 Referências Bibliograficas BAUER, Peter. Photoshop Cs4 para Leigos. Rio de Janeiro: Alta Books, 2009 FIDALGO, João. Adobe Photoshop CS4: Técnicas Avançadas e Finalização. São Paulo: Érica, 2009 ANDRADE, Marcos Serafim de. Adobe Photoshop 7.0 : inclui recursos da versão CS. São Paulo: SENAC, 2005 Periodico REVISTA ESPIRITO LIVRE, Ed. n #041 - Agosto 2012 . Disponível em : <http://www.revista.espiritolivre.org/edicoes>. Acesso em 01 setembro de 2013. REVISTA ESPIRITO LIVRE - Ed. n #011 - Fevereiro 2010 .Disponível em: <http://www.revista.espiritolivre.org/edicoes>. Acesso em 01 setembro de 2013. REVISTA DESIGN. Disponível em: <http://www.revistadesign.com.br/2/>.Acesso em 01 setembro de 2013. REVISTA EDUCAÇÃO, TIC TECNOLOGIA-INFORMAÇÃO-COMUNICAÇÃO São Paulo, V4. Disponível NA em : <http://www.ticnaeducacao.com.br>. Acesso em 01 setembro de 2012. 74