Fundamentos de Computação Gráfica Prof. Marcelo Gattass Guilherme Schirmer de Souza O objetivo dessa apresentação é fazer uma breve descrição teórica do primeiro trabalho da disciplina de Fundamentos de Computação Gráfica além de mostrar os resultados obtidos. O Trabalho consistia em através de um determinado espectro de luz mostrar os diversos tipos de reflexão em um determinado objeto. Fisicamente a cor é produzida por uma radiação eletromagnética cujo comprimento de onda está na faixa visível (entre 380 nm e 800 nm aproximadamente). Devido aos diversos tipos de radiação, a CIE, criou tipos padrão de iluminantes, como o Iluminante C e o Iluminante D65, para representar algumas das diferentes fontes de iluminação que existem. O Iluminante D65 (CIE D65), por exemplo, representa a luz do dia (vide Figura 1). z( ) 2 y( ) 1 x( ) 0 380 480 580 680 780 Figura 2 Figura 1 Além disso, a CIE criou o sistema CIE-XYZ de cores, para poder representar as cores visíveis do espaço. Tal sistema é baseado em três dimensões (sensores) devido ao fato do sistema visual humano possuir moléculas fotossensíveis de amostragem nas faixas Vermelho, Verde e Azul (vide Figura 2). Para calcular a cor XYZ de um espectro utilizase as seguintes equações: 780 X k P( ) x( )d k 380 100 780 780 Y k P( ) y ( )d w ( ) y ( )d 380 380 780 Z k P( ) z ( )d 380 sendo P o espectro o qual se deseja a cor, x, y e z os sensores do modelo e Ф o iluminante considerado como branco padrão (no caso, D65). Para o caso discreto, as equações são as seguintes: _ X k 380 P x 780 _ Y k 380 P y 780 _ Z k 380 P z 780 k 100 780 _ y 380 Os monitores dos computadores não utilizam o sistema XYZ de cores, sendo assim as cores XYZ devem ser convertidas para o espaço RGB de cor. Porém, cada dispositivo usa seu próprio tipo específico de sistema de cor RGB. Por isso, foi criado o sistema sRGB, de forma a padronizar as cores e as estratégias de manipulação das mesmas. A conversão de XYZ para sRGB é feita da seguinte forma: ref_X = 95.047 ref_Y = 100.000 ref_Z = 108.883 //Observer = 2°, Illuminant = D65 var_X = X / 100 var_Y = Y / 100 var_Z = Z / 100 //X = From 0 to ref_X //Y = From 0 to ref_Y //Z = From 0 to ref_Y var_R = var_X * 3.2406 + var_Y * -1.5372 + var_Z * -0.4986 var_G = var_X * -0.9689 + var_Y * 1.8758 + var_Z * 0.0415 var_B = var_X * 0.0557 + var_Y * -0.2040 + var_Z * 1.0570 if ( var_R > 0.0031308 ) var_R = 1.055 * ( var_R ^ ( 1 / 2.4 ) ) - 0.055 else var_R = 12.92 * var_R if ( var_G > 0.0031308 ) var_G = 1.055 * ( var_G ^ ( 1 / 2.4 ) ) - 0.055 else var_G = 12.92 * var_G if ( var_B > 0.0031308 ) var_B = 1.055 * ( var_B ^ ( 1 / 2.4 ) ) - 0.055 else var_B = 12.92 * var_B R = var_R * 255 G = var_G * 255 B = var_B * 255 Em um ambiente físico, os objetos não são iluminados apenas pela luz de uma lâmpada e pela luz solar. Eles também são iluminados pelos demais objetos do meio que se encontram, através da reflexão desses com as fontes de luz supracitadas. Vários fatores influenciam a forma como cada objeto reflete a luz recebida como o ângulo de incidência do raio de luz, o espectro da luz incidente e a direção da qual se mede a reflexão. Através de várias medições realizadas, foi verificado que a luz que incide numa superfície divide-se em uma parcela absorvida (reflexão ambiente), uma parcela refletida sem direção preferencial (reflexão difusa), uma parte que é refletida na direção do reflexo (reflexão especular), entre outras (vide figura 3). Dessa forma, para calcular as cores de um objeto iluminado, para cada uma dessas parcelas, existem diversos modelos, sendo uns bem simples e outros bem complexos e realistas. Figura 3 A reflexão ambiente é um artifício introduzido para simular as reflexões mútuas entre os objetos. A intensidade da iluminação ambiente em um objeto é dada por: S a ka I a onde ka é o coeficiente de reflexão ambiente específico de cada objeto e Ia é a intensidade da luz ambiente. Superfícies que refletem de forma perfeitamente difusa seguem a lei de Lambert, que afirma que a intensidade da radiação refletida por unidade de área independe da direção de reflexão (vide figura 4). A reflexão difusa é dada por: Sd IKd cos( ) ou S d IKd N . L onde θ é o ângulo entre a luz (L) e a normal da superfície (N), kd é o coeficiente de difusão específico do objeto (determina a cor do objeto) e I é a intensidade da luz. luz incidente luz incidente Figura 4 luz incidente Superfícies lisas ou brilhantes refletem a fonte de luz e causam um espalhamento da luz ao redor do reflexo. Este efeito é simulado pelo modelo de Phong. O espalhamento é conseguido por um aumento na intensidade de luz em direções próximas da reflexão especular R (vide Figura 5). A intensidade depende da posição V do observador, e é máxima na direção de R. O vetor R é obtido pela fórmula: R 2( N L) N L A reflexão é dada por: n ou S k I cos n Se ke I R .V e e onde ke é o coeficiente especular de cada objeto e n é uma constante característica da superfície. O modelo de Phong é um modelo empírico, baseado em observações físicas. Figura 5 O modelo de Blinn-Phong é muito similar ao modelo de Phong. A diferença é a utilização do vetor H (bissetriz entre a luz e o observador) e da normal N ao invés de R e V no cálculo do coeficiente especular. O objetivo é otimizar pois a bissetriz H só precisa ser calculada uma vez, ao contrário do R. A reflexão da luz de superfícies reais tem sido objeto de muito estudo teórico e experimental. Os resultados experimentais foram próximos do modelo de Phong, porém com algumas diferenças. As diferenças são que a intensidade da reflexão especular varia de acordo com a direção da fonte de luz e o ângulo de pico da reflexão especular não é sempre o ângulo de incidência. Com isso, Cook e Torrance criaram um modelo diferente de reflexão levando em conta essas diferenças físicas. Assim, é suposto que a superfície simulada é composta por uma coleção de micro facetas espelhadas que são orientadas de forma aleatória na superfície. Além disso, é assumido que a componente especular da luz refletida vem da reflexão das facetas orientas na direção H (o mesmo H do modelo Blinn-Phong). Portanto a reflexão especular é uma combinação dos seguintes fatores: DGF Se ke I ( N .V ) onde D é a função de distribuição da direção das micro facetas, G é a quantidade de sombra e cobertura que as facetas provocam entre si e F é a lei de reflexão de Fresnel. A luz refletida especularmente em uma determinada direção pode vir somente das facetas orientadas para refletir a luz naquele direção, ou seja, as facetas orientadas na direção de H. D representa exatamente essa quantia. O cálculo exato de D é na forma de uma exponencial (distribuição de Beckmann), porém para facilitar a sua obtenção, D pode ser calculado da seguinte forma: c2 D 2 2 cos ( NH ) c 1 1 2 Essa fórmula é baseada no modelo de micro facetas como elipsóides de revolução e c é a excentricidade dos elipsóides. c é 0 para superfícies brilhantes e 1 para superfícies difusas. Algumas das facetas provocam sombras nas outras, reduzindo assim a luz que chegua em cada uma delas. O fator de atenuação (G) é o valor dessa atenuação e varia de 0 a 1 para representar a proporção de luz remasnecente. O cálculo de G leva em conta todas as situações: quando não existe interferência entre as micro facetas, quando a reflexão é bloqueada e quando a luz incidente é bloqueada. O valor de G é portando o menor entre esses 3 valores: Para o caso a Ga = 1.0 Para o caso b Gb = 2(N·H)(N·E)/(E·H) Para o caso c Gc = 2(N·H)(N·L)/(E·H) G = min (Ga, Gb, Gc) Figura 6 A reflexão de Fresnel obtém a fração de luz incidente em uma faceta que é refletida ao invés de absorvida. 2 2 g c cg c 1 1 F 2 2 2g c cg c 1 2 2 c V H g n c 1 onde , de refração do objeto e n é o índice A intensidade global de iluminação de um ponto é dado, portanto, pelo somatório das componentes ambiente, difusa e especular: S S a S d Se Cook Blin-Phong Phong Material: Alumínio ka = (0,0,0); kd=(0.6,0.6,0.6); ks=(0.4,0.4,0.4) n (Phong) = 200; n (Blinn-Phong) = 200; n (Cook) = 200 c = 0.35 (Cook) Iluminante: D65 Cook Blin-Phong Phong Material: Aleatório ka = (0.9,0.2,0.2); kd=(0.9,0.2,0.2); ks=(1,1,1) n (Phong) = 50; n (Blinn-Phong) = 50; n (Cook) = 50 c = 0.35 (Cook) Iluminante: D65 Cook Blin-Phong Phong Material: Cerâmica de óxido de magnésio ka = (0,0,0); kd=(0.333,0.333,0.333); ks=(0.667,0.667,0.667) n (Phong) = 58; n (Blinn-Phong) = 58; n (Cook) = 1.8 c = 0.35 (Cook) Iluminante: D65 Notas de aula. http://www.cie.co.at/publ/abst/datatables15_20 04/sid65.txt http://www.isc.tamu.edu/~astro/color/cie_xyz1 964.html http://en.wikipedia.org/wiki/D65 http://en.wikipedia.org/wiki/Chromaticity_c oordinate#The_CIE_xy_chromaticity_diagram Gomes, Jonas; Velho, Luiz. Computação Gráfica, Vol 1. Rio de Janeiro, IMPA, 1998. http://users.directnet.com.br/val/tutor/tutor.ht ml#capit5 https://www.siggraph.org/education/materi als/HyperGraph/illumin/similum0.htm http://en.wikipedia.org/wiki/CookTorrance#Cook.E2.80.93Torrance_model