Prévia do material em texto
Universidade Paulista (UNIP) Instituto de Ciências Exatas e Tecnológicas (ICET) Disciplina: Computação Gráfica Projeções Quando se está trabalhando com a representação de objetos no espaço tridimensional existe uma etapa obrigatória: mapear suas representações 3D para imagens 2D que serão exibidas em um dispositivo como um monitor. Esta operação de obter representações bidimensionais de objetos tridimensionais é chamada de projeção. Como a maioria dos objetos é representada por uma coleção de vértices, sua projeção é definida por raios de projeção (segmentos de retas) chamados de projetantes, que passam através de cada vértice do objeto e interseccionam um plano de projeção. Esta classe de projeções é chamada de projeções geométricas planares. As projeções usualmente são divididas em dois tipos principais: Projeção Paralela Ortográfica, na qual as projetantes são paralelas entre si, passam pelos vértices dos objetos e interseccionam o plano com um ângulo de 90o; Projeção Perspectiva, quando as projetantes emanam de um único ponto que está a uma distância finita do plano de projeção e passam pelos vértices. Figura 1. Projeção de paralelepípedos usando a projeção paralela ortográfica (a) e a projeção perspectiva (b). Na projeção paralela ortográfica (Figura a) não há alteração nas medidas do objeto. Sua construção é bastante simples, pois, basicamente, consiste em omitir um dos componentes de cada vértice. Entretanto, a projeção perspectiva é mais utilizada, uma vez que representa melhor o que acontece na realidade. Por exemplo, se dois objetos possuem o mesmo tamanho e estão posicionados a diferentes distâncias do plano de projeção, o objeto que está mais longe vai parecer menor do que o objeto que está próximo, conforme ilustra a Figura b. Na visualização 3D também é preciso definir um volume de visualização, ou seja, a região exata do universo 3D que se deseja visualizar. O tamanho e a forma do volume de visualização dependem do tipo de projeção. Para a projeção paralela ortográfica, os quatro lados do volume de visualização e os planos frontal e traseiro na direção do eixo z, formam um paralelepípedo. Para a projeção perspectiva o volume de visualização é um tronco de pirâmide, limitado pelos planos frontal e traseiro, cujo topo é o centro de projeção, como demonstra a Figura b. Os planos frontal e traseiro do volume de visualização são paralelos ao plano de projeção, formando um volume de visualização limitado por seis planos e permitindo excluir partes da cena de acordo com a profundidade. Mapeamento para a Tela Mesmo após a etapa de projeção, as imagens já 2D no plano de projeção ainda não estão em coordenadas do Sistema de Referência da Tela (SRT) adotado no monitor do computador. Por exemplo, no SRT a origem fica no canto superior esquerdo do monitor e a resolução pode variar, enquanto que o Sistema de Referência de Projeção (SRP), que consiste no plano de projeção, é geralmente definido como [−1, 1]. Portanto, torna-se necessário realizar o mapeamento entre estes sistemas de referência, que consiste, basicamente, em uma regra de proporção. Além disso, é necessário definir em qual parte da tela se deseja exibir o que foi selecionado e projetado. A esta região dá-se o nome de janela de exibição ou viewport. Uma viewport é delimitada pelas coordenadas de seus cantos, os quais sempre são dados em valores que dizem respeito ao SRT. A Figura 2 ilustra o funcionamento do mapeamento. Figura 2. Mapeamento do SRP para diferentes viewports Rasterização Após a etapa de mapeamento para a tela, é preciso definir exatamente quais são os pixels que irão compor uma linha e como preencher os diferentes polígonos com uma determinada cor. Estes procedimentos são conhecidos como rasterização. Atualmente os algoritmos para desenhos de linhas, tal como o de Bresenham, e para preenchimento de polígonos, como o flood-fill, são implementados pelas bibliotecas gráficas, bastando apenas chamar as funções definidas para desenhar linhas e polígonos. Computer-Generated Imagery (CGI) Computer-Generated Imagery (CGI) ou “imagens geradas pelo computador” é qualquer imagem dentro de um filme que não foi gravada pela câmera, mas desenhada e posicionada na cena pelo computador. Há incontáveis filmes e jogos, onde o personagem é criado por um rascunho no programa e passa por diversas etapas até o produto final. Special Effects (SFX) Special Effects são os conhecidos efeitos especiais, porém, diferente do CGI, os efeitos especiais não são feitos pelo computador, mas contam como qualquer efeito utilizado durante a gravação. Isso inclui maquiagem, luz, explosões de verdade, canhões de ar, entre outros efeitos práticos, o que pode soar um tanto ultrapassado, mas os resultados podem ser surpreendentes. Um bom exemplo é uma das mais famosas cenas do filme Inception, também conhecido como A Origem no Brasil, onde os dois personagens estão conversando em uma cafeteria e, quando um deles percebeu que estava em um sonho, os elementos na cena começam a explodir, e isso não foi feito através da computação gráfica, mais sim através de canhões de ar estrategicamente posicionados e gravados em slow motion![1: Slow Motion é o nome em inglês dado para o efeito de câmera lenta, muito usado no cinema para criar tensão ou ampliar momentos de clímax. Além disso, também é usado como linguagem e ferramenta cinematográfica pelas super câmeras, capazes de gravar imagens que nossos olhos não conseguem captar. O efeito virou febre na internet por causa da popularização das câmeras digitais não tão caras e que conseguem bons resultados de vídeos lentos, por causa dos frames por segundos que conseguem alcançar. Outra razão para disseminação do slow motion é a oferta dos editores de vídeo (muitos deles grátis) que permitem colocar o efeito em prática em apenas alguns cliques. Com certeza você já viu em programas de TV ou pelo Youtube vídeos que mostram vidros sendo quebrados, pessoas sendo estapeadas e balões cheios de água sendo estourados tão lentamente e cheios de detalhes como se o próprio tempo estivesse passando devagar.] VFX O VFX possibilita reunir os elementos gravados no filme, juntamente com o SFX e, em seguida, passa o material por um processo complexo para adaptar a gravação em um ambiente virtual, e depois transferir o elemento feito pelo computador (CGI) para renderizar e adaptar o máximo possível cada elemento através de técnicas sofisticadas, deixando a cena com os efeitos mais reais possíveis, ao ponto dos espectadores não serem capaz de diferenciar o que é real e o que não é, possibilitando a imersão destes e fazer de uma cena fictícia um dos momentos mais memoráveis da história. Não é que ninguém percebe um bom VFX, é que a maioria dos efeitos acaba passando despercebido na tela, na forma de cidades, objetos, veículos, partículas, entre muitos outros. E enquanto os efeitos práticos, muitas vezes, roubam a cena, o CGI é o resto, mas estamos falando de um “resto” muito, muito importante. Algoritmo de Ray Tracing O algoritmo ray tracing é um algoritmo recursivo que consiste em projetar, a partir do observador, um vetor (raio) por cada um dos pixels constituintes da nossa cena/imagem, vetor este que irá intersectar os objetos que formam a cena em análise. As intersecções a que estão sujeitos cada um dos vetores projetados tem que ser confirmadas para todos os objetos que compõe a imagem a fim de determinar qual o que está mais próximo do observador. Se um determinado raio não intersectar nenhum objeto no seu trajeto, é atribuído ao pixel, por onde o raio passa, a cor do fundo da cena. No caso de o raio intersectar algum objeto, e após ter-se confirmado que esta é a intersecção mais próxima do observador para esse mesmo raio, é necessário determinar a cor do pixel correspondente. Para tal é necessário calcular a iluminação no ponto da cena que o raio atinge, iluminação esta que pode ser proveniente diretamente de fontesde luz, pode ser luz proveniente de outro objeto que por reflexão ilumina o ponto que estamos para analisar, pode ser luz refratada transmitida através do objeto e que assim ilumina o ponto, ou pode ainda ser uma combinação de mais do que uma destas formas de iluminação, que é a situação mais comum. Para a determinação das componentes de luz que atingem o ponto em análise, o algoritmo recorre a três tipos de raios diferentes a que chamamos de raios secundários. Raios refletidos; Raios refratados; Raios de sombra. Cada um destes raios possui características e objetivos diferentes que podem, facilmente, ser identificados pelo seu nome. A partir da intersecção destes raios secundários com os objetos, e de acordo com a informação que cada um deles transporta, o algoritmo calcula então as características da luz e qual a contribuição para a iluminação do ponto de intersecção do raio primário com o objeto que esta na cena. Um dos métodos utilizados para terminar a inspeção recursiva dos raios secundários, acontece quando a contribuição retornada pelos raios secundários para um determinado pixel se torna inferior a um determinado valor mínimo previamente definido, ou então tal com referimos anteriormente, quando um raio primário não intersecta qualquer objeto dentro dos limites da cena pré-estabelecidos atribuindo nesse caso a cor de fundo ao pixel em análise. As sombras são verificadas através de raios secundários que são lançados a partir do ponto de intersecção do raio primário com o objeto, em direção ao foco de luz. Se no seu trajeto o raio voltar a cruzar-se com um objeto, é porque o ponto em análise se encontra na sombra, se não, é porque recebe luz direta. Iluminação e sombreamento A iluminação e o sombreamento são os elementos fundamentais para a geração de imagens com o máximo de realismo possível. Porém, é muito difícil simular como a luz interage com os objetos de uma determinada cena. Luz A luz é um fenômeno complexo e podemos assumir que a luz é formada por fótons, partículas emitidas continuamente por uma fonte de luz. Cada fóton tem uma quantidade de energia, que é percebida como uma “cor” Intensidade ou fluxo luminoso É a quantidade de energia luminosa por unidade de área, por unidade de tempo. Quando fotons, viajando por um meio, encontram a superfície de um objeto pode ocorrer: Reflexão: a reflexão pode ser dividida em: Reflexão pura: A superfície é como um espelho Reflexão especular: Reflexão imperfeita (pouco espalhamento), como sobre uma superfície metálica ou plástica. Reflexão difusa: A luz se espalha, e, portanto, não é brilhante Transmissão: O foton atravessa a superfície que pode ser: Transparente: a transmissão é quase perfeita, como vidro. Translucida: sofre espalhamento, como a pele humana. Absorção: O foton é absorvido e sua energia é dissipada na forma de calor. Por exemplo, um objeto é percebido como verde pois reflete os fotons “verdes” e absorve os fotons de outras cores. Fontes de luz As fontes de luz que iluminam uma cena podem ter tamanhos e formas diversas, bem como ter comprimento de onda e intensidade também variável com a direção de propagação. A iluminação do ambiente depende ainda de reflexões indiretas, sendo estas: Luz ambiente: claridade espalhada pelo ambiente, de forma que mesmo um ponto "escondido" da fonte de luz recebe alguma iluminação Luz pontual: luz emitida a partir de um ponto. A iluminação sofre ainda com a Atenuação que é proporcional ao quadrado da distância. A física sugere I(P,Q) = I(Q) / |P-Q|2 . Sobreamento Os principais métodos utilizados pelo Sombreamento são: Sombreamento Constante (Flat Shading): No modelo de sombreamento constante, aplica-se o cálculo do componente de luz refletida apenas uma vez por superfície plana da imagem, determinando-se um único valor de cor e intensidade da luz refletida que é utilizado para o preenchimento de toda a superfície. Essa técnica é chamada também de flat shading, faceted shading ou constant shading e é usada mais frequentemente em primitivas poligonais. Os resultados que se obtêm com este método de sombreamento são de baixa qualidade uma vez que ficam visíveis as diferenças de cor nas fronteiras entre facetas, produzindo imagens muito pouco realistas. Figura 3. Imagem produzida pelo método de sombreamento constante Sombreamento de Gouraud (Gouraud Shading): Uma alternativa à técnica de sombreamento constante foi proposta por Henri Gouraud em 1971. O método de Gouraud aplica a iluminação em um subconjunto de pontos da superfície e interpola a intensidade dos pontos restantes na superfície. Usualmente, os vértices de cada uma das faces poligonais da superfície plana que representa o objeto são utilizados para o cálculo da luz refletida aplicando-se, então, interpoladores lineares para o cálculo da luz nos demais pontos da superfície. No caso de uma malha triangular, normalmente o modelo de iluminação é aplicado em cada vértice do triângulo e os tons no interior do triângulo são linearmente interpolados destes valores de vértice. Figura 4. Método de sombreamento de Gouraud Sombreamento de Phong (Phong Shading): Outra técnica bastante difundida para o cálculo da componente de luz refletida foi proposta por Bui-Tuong Phong (1942-1975). Phong, propôs a interpolação linear dos vetores normais para o cálculo do sombreamento, como posterior cálculo da iluminação. Ao contrário do modelo de Gouraud, que interpola as intensidades da luz refletida, o modelo de Phong interpola a variação do ângulo de incidência do feixe de luz na superfície, possibilitando a determinação de pontos de reflexão especular afastados das extremidades dos polígonos. O método de sombreamento de Phong é computacionalmente mais pesado uma vez que é necessário calcular a cor, por aplicação do modelo de sombreamento de Phong a todos as quadrículas da faceta. Figura 5. Método de sombreamento de Phong Cores em Computação Gráfica O uso de cores permite melhorar a legibilidade da informação, possibilita ainda gerar imagens realistas, focar a atenção do observador, passar emoções e muito mais informações. Colorimetria: Conjunto de técnicas que permitem definir e comparar cores. Estuda como o olho humano percebe cada cor. Qualquer cor pode ser definida por três parâmetros: Intensidade: indica o grau de intensidade luminosa da superfície examinada, normalmente associada ou brilho ou claridade do material. Tonalidade cromática: Caracteriza o comprimento da onda dominante da cor, também chamado de matiz. Saturação: mede a pureza da cor, ou seja, o quanto ela é saturada em um só tom. Processo de formação de cores Percepção de cores: As diferentes cores, ou espectros luminosos, que podem ser percebidos pelo sistema visual humano correspondem a uma pequena faixa de frequências do espectro eletromagnético, que inclui as ondas de rádio, microondas, os raios infravermelhos e os raios X, como mostrado na figura abaixo: Figura 6. Luz Visível ao Homem. Espectro Eletromagnético. A percepção visual do mundo baseada nas cores dos objetos Alguns animais só enxergam em preto e branco; Outros conseguem ver cores para nós invisíveis. Por outro lado, nos seres humanos conseguimos distinguir algumas dezenas de tons de cinza, discernimos vários milhões de cores diferentes e só percebemos as cores na presença de luz. Modelos de Cores É preciso de um método para definir cores e os modelos de cores fornecem diversos métodos para definir cores, cada modelo é definido usando componentes de cores específicos. Há vários modelos de cores que podem ser escolhidos ao se criar um gráfico, como por exemplo: Sistemas de cores aditivas: Usados nos monitores de vídeo e TV. A cor é gerada pela mistura de vários cumprimentos de onda luminosa, provocando uma sensação de cor quando atinge o olho. No processo aditivo, o preto é gerado pela ausência de qualquer cor, indicando que nenhuma luz é transmitida e o branco é a mistura de todas elas.Modelo de cor RGB: O modelo de cor RGB define a cor usando os seguintes componentes: – vermelho (R) – verde (G) – azul (B). Os componentes R, G e b são as quantidades de luz vermelha, verde e azul que uma cor RGB tem e são medidos em valores que variam de 0 a 255. Os monitores usam o modelo de cor RGB. Quando você adiciona luz vermelha, azul e verde juntas, de forma que o valor de cada componente seja 255, aparece a cor branca. Quando o valor de cada componente é 0, o resultado é preto puro. Canais RGB Figura 7. Canais RGB. Sistemas de cores subtrativas: Usados nas impressões e pinturas. Possui como cores primárias o Azul Ciano, o Magenta e Amarelo (CMY). No processo subtrativo, cores da luz branca são absorvidas. A luz branca ao atingir um objeto tem parte absorvida e parte refletida. O branco corresponde a ausência de qualquer cor e o preto a mistura de todas. Modelo de cor CMYK: O modelo de cor CMYK define a cor usando os seguintes componentes: ciano (C) magenta (M) amarelo (Y) preto (K) Os componentes C M Y K são quantidades de tinta ciano, magenta, amarelo e preto que uma cor CMYK contém e são medidos em porcentagem de 0 a 100. Os materiais impressos são reproduzidos usando o modelo de cor CMYK. Ao combinar ciano, magenta, amarelo e preto, de forma que o valor de cada componente seja 100, o resultado é preto. • Quando o valor de cada componente é 0, o resultado é branco puro. Modelos de Cores Figura 7. Aditivas X Subtrativa. Figura 8. Teoria das Cores. Modelo de cor HSV Um modelo de cor HSV define três componentes: matiz (H): determina a cor ou tonalidade (amarelo, laranja, vermelho, etc.) saturação (S): determina a profundidade ou “pureza” da cor (de esmaecida a intensa). brilho (V - Value): determina a intensidade percebida (cor mais clara ou mais escura) Neste modelo de cor o matiz descreve o pigmento de uma cor e é medido em graus de 0 a 359. Por exemplo, 0 grau é vermelho; 60 graus, amarelo; 120 graus, verde;, 180 graus, ciano; 240 graus, azul e 300 graus, magenta. A saturação descreve a vivacidade ou o esmaecimento de uma cor e é medida em porcentagem de 0 a 100 (quanto maior a porcentagem, maior a vivacidade da cor). O brilho descreve a quantidade de branco que uma cor contém e é medido em porcentagem de 0 a 100 (quanto maior a porcentagem, maior o brilho da cor). Por utilizar um sistema de cores que são mais intuitivas do que combinações de cores primárias, é mais adequada para ser usada na especificação de cores em nível de interface com o usuário. Figura 9. Modelo de cor HSV. O modelo HSL Também utiliza os conceitos de matiz (Hue), pureza de cor (Saturação) e luminosidade (Lightness). É um modelo comumente usado em aplicações gráficas por causa da forma como as cores são emuladas neste modelo que se aproxima mais de como o ser humano produz a percepção da cor. Permite que se pense em termos de cores mais “claras” e mais “escuras”. As cores são especificadas por meio de um ângulo. A escala de “cinzas” encontra-se em S=0; nesse modelo, os matizes com máxima saturação possuem L = 0.5, e como no modelo HSV, são definidos na extremidade do hexágono. Figura 10. Modelo de cor HSL x HSV.