Prévia do material em texto
CENTRO UNIVERSITÁRIO CARIOCA – UNICARIOCA CAROLINE RIBEIRO CAETANO / 2015201868 DARIO GONÇALVES FERNANDES / 2015201868 JULIO CESAR DE SOUZA LIMA / 2013201790 MICHEL OLIVEIRA DA COSTA MOREIRA / 2014104002 TAISSA CRISTINA DOS SANTOS KOBI / 2014102297 RIO DE JANEIRO 2018 CAROLINE RIBEIRO CAETANO / 2015201868 DARIO GONÇALVES FERNANDES / 2015201868 JULIO CESAR DE SOUZA LIMA / 2013201790 MICHEL OLIVEIRA DA COSTA MOREIRA / 2014104002 TAISSA CRISTINA DOS SANTOS KOBI / 2014102297 COMPUTAÇÃO GRÁFICA Atividade supervisionada da disciplina Computação Gráfica do curso de Ciência da Computação Orientador: Prof. Catiuscia Albuquerque Benevente Borges M.SC. RIO DE JANEIRO 2018 CAROLINE RIBEIRO CAETANO / 2015201868 DARIO GONÇALVES FERNANDES / 2015201868 JULIO CESAR DE SOUZA LIMA / 2013201790 MICHEL OLIVEIRA DA COSTA MOREIRA / 2014104002 TAISSA CRISTINA DOS SANTOS KOBI / 2014102297 COMPUTAÇÃO GRÁFICA Atividade supervisionada da disciplina Computação Gráfica do curso de Ciência da Computação Aprovada em 2018 Banca Examinadora ______________________________________________ Prof. Catiuscia Albuquerque Benevente Borges M.Sc - Orientador Centro Universitário Carioca Resumo Este artigo irá apresentar estudos relacionados a computação gráfica. O que se entende de realismo visual, como funciona o processo rasterização de imagens. Apresentará a iluminação seus tipos emissores, reflexão e seus tipos. Será descrito também a técnica Ray Tracing e seus objetivos, a determinação de textura e onde pode ser aplicada . Palavras chave: Técnica de Ray Tracing; iluminação; emissores. Abstract This article will present studies related to computer graphics. What if understands of visual realism, how the process of rasterizing images works. It will present lighting its emitter types, reflection and their types. Will be described Ray Tracing technique and its objectives, the determination of texture and where can be applied. Keywords Ray Tracing Technique; lighting; emitters. LISTA DE ILUSTRAÇÕES Figura 1 - Exemplo de realismo visual 9 Figura 2 - Exemplo de realismo visual 9 Figura 3 – Exemplo de renderização 10 Figura 4 - Exemplo de renderização 11 Figura 5 – Exemplo de renderização 11 Figura 6 – Exemplo de rasterização 13 Figura 7 – Exemplo de rasterização de polígonos 15 Figura 8 - Exemplo de iluminação de luz ambiente 16 Figura 9 - Exemplo de iluminação de reflexão ambiente 17 Figura 10 - Exemplo de reflexão difusa objeto 18 Figura 11 - Exemplo de reflexão difusa ambiente 18 Figura 12 - Exemplo de reflexão especular e com espelhamento 19 Figura 13 - Exemplo de reflexão especular objeto 19 Figura 14 - Exemplo de reflexão especular ambiente 20 Figura 15 - Exemplo de transparência interpolada 21 Figura 16 - Exemplo de transparência filtrada 21 Figura 17 - Exemplo de transparência com refração 22 Figura 18 - Exemplo sombreamento constante 22 Figura 19 - Exemplo de sombreamento gouraud 23 Figura 20 - Exemplo do modelo de phong 23 Figura 21 - Exemplo do modelo de iluminação global 24 Figura 22 - Exemplo do modelo de Ray tracing 26 Figura 23 - Exemplo de textura 27 1 – REALISMO VISUAL O ser humano, no decorrer da sua história, sempre buscou representar cenas do seu cotidiano através de imagens e gravuras. Desde a Pré-História, quando os primeiros seres humanos retratavam cenas de caça e de animais nas paredes das cavernas, passando pelas primeiras civilizações, como o Egito que usava de gravuras para enaltecer suas divindades e seus governantes, até chegar os dias de hoje, nova técnica vem sendo desenvolvidas para deixar essa representação cada vez mais próxima da realidade. Com o surgimento e avanço da tecnologia, métodos computacionais que tratavam objetos (formas primitivas, por exemplo) com o objetivo de deixá-los mais próximo da realidade começaram a surgir, denominando um conjunto de técnicas que pode ser definido por Realismo Visual, que se encontram presentes em vários aspectos do nosso cotidiano (entretenimento, educação, medicina, engenharia, etc...). Realismo visual são técnicas de tratamento computacional aplicadas em modelagem de sólidos, com objetivo de criar um ambiente 3D o mais próximo da realidade. Tem como objetivo aperfeiçoar o entendimento das cenas e o dos objetos criado. Tendo em vista a possibilidade de representar dados, objetos e cenas complexas. O realismo é fundamental nas simulações, no entretenimento, na educação e muitas outras aplicações. Diversos fatores contribuem para se criar realismo visual na cena como, por exemplo, iluminação e sombras. Esse realismo pode estar associado a objetos estáticos ou a objetos dinâmicos. É importante salientarmos a diferença entre os dois, pois podemos criar uma figura humana (avatar) estática extremamente realista que, ao ser movimentada, provoca a perda do realismo da cena. O realismo é dividido em duas etapas, temos a estática que onde são tratados os objetos e cenas estáticas é trabalhado o chamado realismo fotográfico. E a dinâmica que é a parte dinâmica relacionada ao movimento da cena e seus personagens, chamada de animação. Figura 1 - E xemplo de realismo visual Figura 2 - E xemplo de realismo visual 1.1 – Rendering Qualquer imagem antes de ser exibida no seu aspecto final, ela passa por uma série de processos que vão tratar de seus dados e informações. Como toda imagem é um reflexo do Real, seus objetos e cenas trazem consigo características como: cor, iluminação, textura, ângulos, etc. A conversão dessas informações em imagens digitais é denominado síntese de imagens. Sintetizar uma imagem tem por objetivo a geração de imagens a partir de modelos matemáticos com uso extensivo de técnicas de computação gráfica. Utilizado para criar imagens de protótipos industriais, imagens ambientais com cores e sombras, simular ambientes, etc. Neste processo a entrada é, em geral, um ou mais modelos geométricos e a saída é uma imagem gerada a partir desse modelo. Porém, ao sintetizarmos essa imagem utilizando modelos computacionais para representar aspectos, como iluminação e textura, por exemplo, podemos chegar a uma imagem final pouco fiel ao objeto real que queremos representar. Então ela precisa passar por um processo para ser introduzida no realismo fotográfico denominado rendering (renderização). Se procurarmos um significado para rendering, acharemos algo parecido com “Interpretar, traduzir, representar”. Nisso podemos definir rendering como a conversão (síntese) desses dados para deixá-los com aspecto realista. Figura 3 – Exemplo de renderização Quando os modelos e cenários 3D são construídos, tudo é gerado usando arames e superfícies, o chamado Wireframe. O Render entra exatamente para finalizar o Wireframe. Nesse acabamento são considerados vários aspectos, como a projeção dos raios luminosos, materiais e simulação das superfícies entre outros. Figura 4 - Exemplo de renderização Figura 5 – Exemplo de renderização 1.2 – Fases do Realismo Visual O processo de realismo consiste em sete fases distintas. O uso dessas fases pode variar de acordo com o projeto e com o resultado que se deseja obter.1 – Construção do Modelo: consiste em utilizar técnicas de modelagem para construir um modelo que conterá todas as informações para o processo de realismo visual. 2 – Aplicar Aparência Tridimensional: são utilizadas projeções e perspectivas adequadas em transformações lineares no modelo, de modo que ele tenha aparência tridimensional nos diversos dispositivos (geralmente bidimensionais). 3 – Eliminação de Polígonos e Faces Escondidas: essa fase reside na eliminação de polígonos ou faces escondidas devido a posição relativa entre os objetos da cena e o observador (culling back-faces). Essas técnicas são aplicadas toda vez que há uma mudança de perspectiva de observação. 4 – Recortes na Cena: partes da cena que não serão mostradas irão ser desconsideradas. Essa fase se assemelha a quando observamos uma paisagem pela janela: o que você visualiza é uma parte da paisagem completa, que você não enxerga devido o bloqueio da parede ou porque está fora do seu campo de visão. Essa técnica que “corta” dados da cena para deixa-la mais real chama-se clipping. 5 – Renderização: a representação tridimensional é convertida em pixels. As linhas e áreas contínuas serão transformadas em conjuntos de pixels. Nessa fase, os modelos gerados são introduzidos no Mundo Digital. 6 – Eliminação de Partes escondidas: trata da eliminação de partes de um objeto que devem ser removidas. Parecida com a terceira fase, essa fase consiste e tratar as partes de objetos que se sobrepõem sobre outras. Alguns autores englobam estas duas partes no que se chama tratamento de partes escondidas (hidden). 7 – Coloração dos Pixels: Cada pixel da imagem é colorido. Nessa última fase, começa a ser percebido o realismo fotográfico. Existem alguns fatores para que a fase aconteça, levando em consideração as luzes presentes na cena, intensidades e direções em que o objeto se encontra. Características das superfícies influenciam, como a transparência, brilho, reflexão e textura. 2 – RASTERIZAÇÃO Uma imagem vetorial é uma imagem formada por formas primitivas (pontos, linhas, retas, formas e polígono), todas expressas através de uma fórmula matemática. Já uma imagem matricial é formada por uma matriz de pontos (pixels), em que cada ponto armazenara uma cor. Rasterização é o processo de conversão da representação vetorial para a matricial. Ela permite realizar a conversão de um desenho tridimensional qualquer em uma representação inteira possível de ser armazenada na memória (de vídeo ou impressão) de um dispositivo raster. 2.1 – Rasterização de retas e polígonos 2.1.1 - Rasterização de retas Apesar de parecer simples, a exibição de uma reta em um dispositivo de vídeo requer uma rotina de tratamento. Por se tratar de uma forma primitiva, essa imagem, que se apresenta como vetorial, terá que ser exibida em uma forma matricial, ou seja, através de pixels. Isso significa que essa reta poderá não ter uma aparência fiel, como se fosse desenha em uma folha de papel. Ao ser exibida matricialmente, essa reta poderá apresentar uma aparência serrilhada devido à passagem de um ponto para outro, que pode variar de acordo com a inclinação, o tamanho de ponto ou a resolução do dispositivo. Esse serrilhado é denominado aliasing. Existem rotinas de tratamento (Algoritmos) que buscam suavizar essa passagem de um ponto para outro, de forma que o olho humano não perceba. Essas rotinas são chamadas anti-aliasing. Elas conseguem suavizar esse serrilhado deixando as bordas do desenho menos nítidas, usando uma cor intermediária entre a cor da linha e a cor do fundo. A figura abaixo mostra uma reta A que não foi tratada e uma reta B que passou por uma rotina de tratamento anti-aliasing. Figura 6 – Exemplo de rasterização Essas rotinas de rasterização de retas consistem em, num quadrado, dados os dois pixels extremos de um segmento de reta, determinar que pixels localizados entre eles devam ser selecionados para compor visualmente o segmento. O algoritmo de Bresenham para Traçado de Linhas é um exemplo de uma rotina de tratamento: x = x1 y = y1 Dx = x2 – x1 Dy = y2 – y1 m = Dy/Dx e = m – ½ for i = 1 to Dx do desenhaPonto(x,y) while e >= 0 do y = y + 1 e = e – 1 end while x = x + 1 e = e + m end for 2.1.2 – Rasterização de polígonos Polígonos são definidos através dos seus vértices, que são armazenados na memória, e exibidos projetando-se esses pontos, que se conectam por linhas virtuais, formando as laterais 2D desses objetos. A rasterização desses polígonos é feita inicialmente pelas suas laterais, calculando a interseção que a linha do objeto faz com as linhas horizontais do vídeo, que são chamadas scan lines. A figura abaixo demonstra esse processo. Figura 7 – Exemplo de rasterização de polígonos A forma usual de calcular essas interseções é referida como (DDA – Digital Differential Analyser), sendo a equação da linha entre dois pontos (x1; y1) e (x2; y2) dada por: Y = y1 + (∆y/∆x)x ou X= x1 + (∆x/∆y)y, onde: ∆x = x2 – x1 e ∆y = y2 – y1. Para implementar um algoritmo DDA simples, o maior dos valores de ∆x ou ∆y é escolhido como unidade de rasterização resultado no seguinte algoritmo: Se abs(x2 – x1) ≥ abs(y2 – y1) então Tamanho = abs(x2 – x1) else Tamanho = abs(y2 – y1) end if {Seleciona o maior dos valores entre ∆x e ∆y como unidade rasterização} ∆x = (x2 – x1) / Tamanho ∆y = (y2 – y1) / Tamanho i = 1 Enquanto i ≤ Tamanho faça DesenhaPonto(Arredonda(x), Arredonda(y)) {Arredonda: valor arredondado de x e y} x = x + ∆x y = y + ∆y i = i + 1 FimEnquantO 3 - ILUMINAÇÃO A iluminação é determinada pela interação entre fontes de luzes e superfícies. Os modelos de Iluminação são técnicas usadas para calcular a intensidade da cor de um ponto a ser exibido. Também chamados modelos de reflexão. 3.1 - Luz Ambiente Não tem uma direção identificada, determina o nível de iluminação das superfícies no ambiente. Figura 8 - Exemplo de iluminação de luz ambiente 3.2 - Emissores de Luz Artificiais Simulam as lâmpadas convencionais. 3.2 – Reflexão A reflexão se deve à interação dos raios de luz com uma superfície, considerando as propriedades da superfície e a natureza da fonte de luz incidente. Pois a maioria dos objetos não emite luz própria, pelo contrário, refletem a radiação neles incidente em diferentes comprimentos de onda. Tem como objetivo exibir os objetos tridimensionais na tela bidimensional de maneira que os mesmos se aproximem da realidade. 3.2.1 - Reflexão Ambiente A reflexão ou iluminação ambiente é um artifício introduzido no equacionamento matemático da iluminação que tenta simular as reflexões mútuas entre os objetos. A formulação deste efeito faz com que os objetos adquiram uma luz própria, isto é, passem a emitir luz. Contudo, está "luz emitida" não possui a propriedade de iluminar outros objetos. Superfícies que não recebem raios de luz diretos da fonte são visíveis devido à luz ambiente, caso contrário seriam exibidas com a cor preta. Figura 9 - Exemplo de iluminação de reflexão ambiente 3.2.2 - Reflexão Difusa Figura 10 - Exemplo de reflexão difusa objeto Figura 11 - Exemplo de reflexão difusa ambienteIluminação recebida por uma superfície e que é refletida uniformemente em todas as direções; Característica de materiais foscos; esse tipo de reflexão é também chamada de reflexão lambertiana; A luminosidade aparente da superfície não depende do observador, mas apenas do cosseno do ângulo de incidência da luz. 3.2.3 - Reflexão Especular Este tipo de reflexão é o que ocorre em superfície polidas onde a luz refletida fica mais concentrada em determinada local do objeto (pontos de brilho), sendo que quantomais polida for a superfície mais concentrada estará a luz refletida. A luz refletida de uma superfície reflexiva deixa a superfície com o mesmo ângulo que o raio de luz incidente forma com o vetor normal à superfície. Por meio da Reflexão Especular é possível fazer com que objetos do tipo espelho apresentem em sua superfície a imagem de outros objetos do universo. Em uma superfície irregular, entretanto, podemos ter reflexão com espalhamento (não especular). Figura 12 - Exemplo de reflexão especular e com espelhamento Figura 13 - Exemplo de reflexão especular objeto Figura 14 - Exemplo de reflexão especular ambiente 3.3 - Refração A refração é um fenômeno muito importante para o realismo de cenas com água. O processo de obtenção de um mapa de refração (RefractionMap) é análogo ao do mapa de reflexão, contudo, o ponto de vista é diferente. A inclinação que a luz sofre para diferentes velocidades em diferentes materiais. Tendo em vista os índices de refração tais como: Luz viaja à velocidade c/n em um material com índice n C é a velocidade da luz no vácuo (n=1) Varia de acordo com o comprimento de onda Prismas E arco-íris (luz branca quebrada em várias) 3.4 - Transparência sem Refração Nos modelos sem refração, os raios de luz não sofrem desvios ao atravessar a superfície. Apesar de não ser tão realístico, este modelo produz resultados razoáveis quando modelamos objetos transparentes finos. Existem dois métodos para modelar transparências sem refração: Transparência interpolada e Transparência filtrada. 3.4.1 - Transparência Interpolada Considere dois polígonos P1 e P2. As intensidades das componentes de cor I em um pixel são dadas pela interpolação linear das intensidades individuais I 1 e I 2 em P1 e P2. A interpolação é feita com base em um coeficiente de transparência Kt1 [0,1] do polígono P1. Figura 15 - Exemplo de transparência interpolada 3.4.2 - Transparência Filtrada Na transparência filtrada, os polígonos são tratados como filtros transparentes. Eles deixam passar diferentes comprimentos de onda seletivamente. Este tipo de transparência é modelado através da seguinte equação: Figura 16 - Exemplo de transparência filtrada 3.4.3 - Transparência com Refração Os efeitos de transparência com refração são baseados nas leis físicas que regem os processos de refração de luz. Neste fenômeno, o caminho que a luz refratada segue é distinto do caminho seguido pela luz incidente, devido às diferenças na velocidade da luz em cada um dos meios. O índice de refração de um material é dado pela razão entre a velocidade da luz no vácuo e a velocidade da luz no material. Figura 17 - Exemplo de transparência com refração 3.5 - Sombreamento Sombreamento(shading) é a determinação de um objeto em relação ao piso abaixo. Com objetivo de calcular a cor de cada ponto das superfícies visíveis. Existem dois modelos, sobreamento constante e o sobreamento interpolado(Smooth Shading) que trata do algoritmo de Gouraud e do Algoritmo de Phong. No modelo de sombreamento constante, aplica-se o cálculo da 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 freqüentemente em primitivas poligonais. Figura 18 - Exemplo sombreamento constante 3.5.1 - Sombreamento de Gouraud 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. Figura 19 - Exemplo de sombreamento gouraud 3.5.2 - Modelo de Phong Outra técnica bastante difundida para o cálculo da componente de luz refletida propõe 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. Figura 20 - Exemplo do modelo de phong Figura 20 - Exemplo do modelo de phong 3.6 - Modelo de Iluminação Global No modelo de iluminação global todos os objetos podem (e devem) ser considerados para efeitos de iluminação, além das interações consideradas na iluminação local, uma vez que a luz direta origina um conjunto de reflexões e refracções. Os algoritmos apresentados tentam-se aproximar de um modelo mais real, considerando a componente difusa, especular e transmitida a um nível global e não local. Traçado de raios e radiosidade são exemplos de modelos de iluminação global. Figura 21 - Exemplo do modelo de iluminação global 3.7 - Ray Tracing Ray tracing (traçado de raios) é um algoritmo de computação gráfica usado para síntese (renderização) de imagens tridimensionais. O ray tracing projeta um raio de luz que sai de quem está observando e deve atingir todos os objetos da imagem, determinando o que está mais próximo e o que está mais longe dele. O método utilizado pelo algoritmo, baseia-se na simulação do trajeto que os raios de luz percorreriam no mundo real. Ou seja, no mundo real, os raios de luz são emitidos a partir de uma fonte de luz, percorrendo o espaço até encontrar um objeto. Figura 22 - Exemplo do modelo de Ray tracing 4 - TEXTURAS Aplicadas em 1D,2D ou 3D a primitivas geométricas. As texturas é uma técnica que quando aplicada junto à iluminação, procura dar às superfícies dos objetos características que os façam parecer mais reais, quando comparados a simples técnicas de iluminação e sombreamento. Bastante utilizadas para simular madeira, granito, tijolo, usadas para reduzir complexidade geométrica e fazer simulação de fenômeno naturais (ou outros) tais como a (reflexões, refracção, luz, lens flare). A técnica é utilizada pois os modelos de iluminação não são apropriados para descrever todas as diferenças de cor observáveis em uma superfície. A ideia básica reproduzir sobre a superfície do objeto as propriedades de alguma função ou mapeamento bidimensional. Figura 23 - Exemplo de textura Existem três tipos de mapeamento de textura: 4.1 - Texture Mapping Usa imagens para preencher os polígonos. 4.2 - Bump Mapping Altera as normais à superfície durante a visualização. 4.3 - Environment (reflection) Mapping Usa um snapshot da cena para fazer texture mapping e permite simular superfícies altamente especulares sem traçado de raios. 5.0 - Bibliografia UTIEL, Wagner ; KIRNER, Claudio . Realismo Visual em Ambientes Interativos como Ferramentas de Auxilio à Educação. 2009. Disponível em: <http://seer.ufrgs.br/index.php/renote/article/view/13907/7816>. Acesso em: 21 maio 2018. CAVALCANTI, Jorge. Computação Gráfica - 12. 2005. Disponível em: <http://www.univasf.edu.br/~jorge.cavalcanti/comput_graf12_Realismo.pdf>. Acesso em: 22 maio 2018. DESCONHECIDO, Desconhecido. Realismo Visual. 2014. Disponível <http://www2.ic.uff.br/~aconci/RealismoVisual.pdf>.Acesso em: 22 maio 2018. em: MENDES, Vilson Berilli . Realismo Visual. 2009. Disponível em: <http://www2.ic.uff.br/~aconci/realismo.htm>. Acesso em: 22 maio 2018. BRITO, Allan . Você sabe o que é Render?. 2007. Disponível em: <https://www.allanbrito.com/2007/04/02/voce-sabe-o-que-e-render/>. Acesso em: 21 maio 2018. TEIXEIRA , Marcelo . O que é RENDER?. 2013. Disponível em: <http://www.archtechulture.com.br/o-que-e-render/>. Acesso em: 21 maio 2018. LOPES, Joao. Rasterizacao. 2013. Disponível em: <http://disciplinas.ist.utl.pt/leic- cg/textos/livro/Rasterizacao.pdf>. Acesso em: 23 maio 2018. ESPERANÇA, Claudio ; CAVALCANTI, Paulo Roma . Introdução à Computação Gráfica Iluminação. 2007. Disponível em: <http://www.dei.isep.ipp.pt/~jpp/sgrai/Iluminacao.pdf>. Acesso em: 24 maio 2018. PINHO, Márcio Sarroglia . Iluminação. 2007. Disponível em: <https://www.inf.pucrs.br/~pinho/CG/Aulas/Iluminacao/Ilumina.html>. Acesso em: 24 maio 2018. MONTENEGRO, Anselmo . Iluminação. 2008. Disponível em: <http://www2.ic.uff.br/~anselmo/cursos/CGI/slidesGrad/CG_aula12(iluminacao).pdf>. Acesso em: 19 maio 2018. NEVES, John Dalton . Iluminação. 2014. Disponível em: <https://prezi.com/b5e2swwd4nas/computacao-grafica/>. Acesso em: 22 maio 2018. SANTOS, Flavia. Modelos de Iluminação. 2014. Disponível em: <http://docplayer.com.br/13787365-Modelos-de-iluminacao.html>. Acesso em: 22 maio 2018. DESCONHECIDO, Desconhecido. Shading (sombreamento) & Smooth Shading. 2015. Disponível em: <https://paginas.fe.up.pt/~aas/pub/Aulas/CG/Slides/04_ShadingTexturas.pdf>. Acesso em: 22 maio 2018. GOMES, Mario. Shading (sombreamento) & Smooth Shading. 2013. Disponível em: <https://paginas.fe.up.pt/~aas/pub/Aulas/CG/Slides/04_ShadingTexturas.pdf>. Acesso em: 2 maio 2018. http://www.keepcad.com.br/blog/2015/03/58/Renderizacao,-a-ilusao-do-irreal.