Determinação de Superfícies Visíveis PDF
Document Details
Uploaded by Deleted User
Tags
Summary
Este documento trata de técnicas de visualização de superfícies em gráficos 3D. O texto cobre conceitos básicos de ordenação de superfícies em 3D e também apresenta exemplos de algoritmos como a rasterização e as etapas necessárias para determinar quais as partes visíveis dos objetos. Aspectos específicos que são abordados incluem: Algoritmos de cálculos de Visibilidade, com enfoques em Culling e Recorte; técnicas como o z-buffer, scan line e abordagens de partição espacial. Isso também descreve problemas e soluções relacionados, considerando técnicas de coerência e sombreamento.
Full Transcript
Determinação de Superfícies Visíveis Técnicas para Algoritmos eficientes Algoritmos do espaço imagem Algoritmos do espaço objecto Recordar: Pipeline de visualização...
Determinação de Superfícies Visíveis Técnicas para Algoritmos eficientes Algoritmos do espaço imagem Algoritmos do espaço objecto Recordar: Pipeline de visualização Transform Illuminate Transform Clip Project Rasterize modelo e pipeline de rendering Framebuffer Display câmara 2 Recordar: Pipeline de visualização grafo de cena / modelo 3D Resultado: transformação todos os vértices da cena estão especificados num referencial de modelação 3d comum – o sistema de coordenadas do mundo Efectuar Culling; evita iluminação e transformação cálculos de iluminação sombreado dos vértices de acordo com o modelo de iluminação Transformação Visualização transformação para o referencial de visualização (ou da câmara). Clipping/ Recorte recorte: preservar apenas os vértices que estão no interior do viewport Projecção projecção dos vértices para um plano 2D Rasterização 3 Cálculo de Visibilidade Numa cena 3D, geralmente não é possível ver todas as superfícies de todos os objetos Não queremos que objetos ou partes de objetos não visíveis apareçam na imagem Isto gera diferentes problemas, como: – Eliminar objetos que não podem ser vistos (culling) – Recortar objetos de forma a manter apenas as partes que podem ser vistas (clipping) – Desenhar apenas partes visíveis dos objetos No capítulo da rasterização, não consideramos o cálculo da visibilidade: – Não se considerou a ordenação de profundidade dos objetos Algumas partes estão na frente de outras, queremos sempre desenhar os objetos mais próximos sobre os mais distantes 5 – Esta será a fase final da pipeline gráfica Cálculo de Visibilidade Wireframe e HLR (Hidden-Line Removal) 5 Cálculo de Visibilidade Wireframe e HSR (Hidden Surface Removal) 6 Cálculo de Visibilidade A Rasterização converte as primitivas para pixels na imagem Contudo, devemos assegurar que os objetos que são tapados por outros não sejam desenhados Para cada pixel, qual o objeto mais próximo na cena? – Isto é o que devemos desenhar nesse pixel Desde que o objeto não seja transparente – Precisamos de determinar a superfície mais próxima ao observador que, consequentemente, estará visível Este problema envolve, basicamente, uma ordenação parcial até a primeira superfície opaca em cada vizinhança da imagem 7 Cálculo de Visibilidade Dado um conjunto de objetos 3D e a especificação de uma vista pretende-se determinar quais as partes dos objetos que são visíveis, a partir: – do centro de projeção (para projeções perspetivas) ou – ao longo da direção de projeção (para projeções paralelas) de forma a que possamos mostrar apenas as linhas ou superfícies visíveis Existem duas abordagens fundamentais ao problema: – algoritmos de precisão – imagem (2D): realizados à resolução do dispositivo de visualização, determinam a visibilidade em cada pixel – algoritmos de precisão – objeto (3D): realizados à precisão com a qual cada objeto é definido, determinam a visibilidade de cada objeto 8 Cálculo de Visibilidade 1ª abordagem: Determinar qual, de n objetos, é visível em cada pixel na imagem Para (cada pixel na imagem) fazer { determinar o objeto mais próximo do observador que é atravessado pelo projetor através desse pixel; desenhar o pixel na cor apropriada; } – Forma rápida e à “força bruta”: examinar todos os n objetos para determinar qual é mais próximo ao observador ao longo do projetor que passa através do pixel – Para p pixels, o esforço é proporcional a n * p, onde p é superior a um milhão para um monitor de alta resolução 9 Cálculo de Visibilidade 2ª abordagem: Comparar os objetos diretamente uns com os outros, eliminando objetos inteiros ou porções destes que não são visíveis Para (cada objeto na cena) fazer { determinar as partes do objeto não tapadas por ele ou por outros objetos; desenhar as partes visíveis na cor apropriada; } – Forma simples: comparar cada um dos n objetos consigo próprio e com os outros objetos, e descartar as porções invisíveis – O esforço computacional aqui é proporcional a n2 10 Cálculo de Visibilidade Comparação: – Espaço da imagem (2D) Dados matriciais (imagem) Dependente da resolução da imagem Estão interessados na solução correta do problema para um determinado nível de resolução Visibilidade determinada apenas em pontos (pixels) – Procuram resolver o problema no âmbito de cada pixel, analisando as profundidades relativas em cada raio de visão (projetor), sendo a visibilidade adiada até ao último momento Podem aproveitar aceleração por hardware Exemplos: – Orientada à área: Algoritmo de Warnock – Orientada à Linha: ScanLine – Orientada ao pixel: Z-Buffer, Ray Casting 11 Cálculo de Visibilidade Comparação: – Espaço do Objeto (3D) Dados geométricos (modelo, analítico) – Usam normalmente números reais com vírgula flutuante Calculam a solução exatamente e o resultado é uma lista ordenada das faces a serem projetadas no plano de projeção Independente da resolução da imagem Menor vulnerabilidade a aliasing (efeitos de amostragem) Rasterização ocorre depois Exemplos: – Algoritmo do Pintor – BSP-trees 12 Cálculo de Visibilidade Comparação: – Embora a abordagem ao espaço do Objeto pareça ser superior para n < p, os seus passos individuais são vulgarmente mais complexos e consomem mais tempo, por isso é na maioria das vezes mais lenta e mais difícil de implementar – Abordagens Híbridas: algoritmos mais recentes na sua maioria combinam ambos os cálculos: precisão-imagem e precisão-objeto, à precisão-objeto escolhidos pelo seu rigor (solução exata) à precisão-imagem por questões de velocidade (mais eficientes, em geral) 13 Técnicas para algoritmos eficientes Os algoritmos devem estar organizados de forma a que as operações de maior custo sejam efetuadas de forma eficiente e o menor nº. de vezes – minimizar o tempo de gerar uma figura Algumas técnicas que podem ser usadas estão relacionadas com: – Coerência – Transformação Perspetiva – Extensões e volumes fronteira – Back-face culling – Decomposição espacial – Hierarquia 14 Técnicas para algoritmos eficientes Coerência – É o grau de semelhanças locais que as partes de uma cena ou as suas projeções exibem – É explorada quando se reutiliza cálculos efetuados para uma parte da cena, para outras partes vizinhas, sem alterações, ou com alterações incrementais (mais eficientes, do que recalcular esta informação a partir do zero) – Muitos tipos diferentes têm sido identificados, tais como: Coerência de objetos Coerência de faces Coerência de arestas Coerência de aresta implícita Coerência de linhas de varrimento Coerência de área Coerência de profundidade Coerência de frames 15 Técnicas para algoritmos eficientes Coerência de objeto: se um objeto é completamente separado de outro, então pode não ser necessário fazer comparações entre as suas faces Coerência de face: as propriedades da superfície variam pouco ao longo de uma face, permitindo que uma parte seja modificada incrementalmente para aplicar a outra parte adjacente Coerência de linha de varrimento: o conjunto de porções de objetos visíveis (span) numa linha de varrimento difere pouco da anterior Coerência de profundidade: partes adjacentes de uma superfície são normalmente próximas em profundidade 16 Técnicas para algoritmos eficientes A Transformação de Perspetiva – A determinação de superfícies visíveis têm de ser efetuada num espaço 3D antes da projeção no espaço 2D a projeção destrói a informação sobre profundidade (z), necessária para as comparações de profundidade – As comparações de profundidade são normalmente efetuadas depois da transformação de normalização (do volume de visualização) ter sido aplicada, de tal forma que os projetores: são paralelos ao eixo z nas projeções paralelas, ou emanam a partir da origem nas projeções perspetivas 17 Técnicas para algoritmos eficientes A Transformação de Perspetiva – A comparação de profundidade num ponto reduz-se à questão: Dados 2 pontos P1=(x1,y1,z1) e P2=(x2,y2,z2), algum dos dois obscurece o outro? – Equivalente a: P1 e P2 estão no mesmo projetor (ver figura)? 18 Técnicas para algoritmos eficientes A Transformação de Perspetiva – Se sim (se estão no mesmo projetor) z1 e z2 são comparados para determinar qual o ponto que está mais próximo do observador. Se não, então nenhum ponto pode obscurecer o outro – Para uma projeção paralela: os pontos estão no mesmo projector se x1 = x2 e y1 = y2 – Para uma projeção perspetiva: São necessárias 4 divisões para determinar se x1/z1 = x2/z2 e y1/z1 = y2/z2, no caso em que os pontos estão no mesmo projector. Ainda, se P1 é depois comparado relativamente a P3, são requeridas mais 2 divisões – Por conveniência de notação, contudo, os exemplos aqui usam valores de z positivos decrescentes (a partir do observador) Plano de trás: z=0, Plano da frente: z=zmax 19 Técnicas para algoritmos eficientes Culling – Não desenhar aquilo que não se vai ver Crítico para obter uma maior eficiência – O que é que não se vai ver? Tudo o que seja tapado por outro objeto Tudo o que esteja fora do volume de visualização 20 Técnicas para algoritmos eficientes – View Frustum Culling Rejeitar qualquer objeto que estiver fora do volume de visualização o mais cedo possível Dado um conjunto de polígonos: – Testar a interseção com o volume visualização (frustum) – Qualquer polígono que não intersecte o frustum pode ser rejeitado Qual o problema deste simples algoritmo? – Então e se um objeto composto por um milhão de polígonos estivesse completamente fora do frustum? Não queremos testar cada um! 21 Técnicas para algoritmos eficientes – Culling com Janelas (2D) e Volumes fronteira (3D) Uma forma de evitar comparações desnecessárias entre os objetos ou entre as suas projeções O teste é semelhante ao teste de rejeição trivial no recorte (clipping) Fig. 2 – projeções e janelas das projeções a) Fig. 1 - Dois objetos, as suas projeções as janelas e as projeções sobrepõem-se; b) as 23 no plano (x,y) e as janelas das projeções janelas sobrepõem-se, mas as projeções não. Técnicas para algoritmos eficientes – Culling com Janelas (2D) e Volumes fronteira (3D) As janelas podem ser usadas para circundar os próprios objetos em vez das suas projeções: neste caso, tornam-se sólidos e são conhecidas como volumes fronteira (Bounding Volumes) Alternativamente, podem ser usadas para limitar uma só dimensão, para determinar por exemplo se 2 objetos se sobrepõem em Z Fig. – usando extensões 1D para determinar se os objetos se sobrepõem – Não há sobreposição em Z se: Zmax2 < Zmin1 ou Zmax1 < Zmin2 23 Técnicas para algoritmos eficientes – Culling com Janelas (2D) e Volumes fronteira (3D) Assim, testar o Volume fronteira primeiro – Se estiver fora do frustum, rejeitar o objeto – Noutro caso, testar as componentes individuais O volume convexo pode ser: – Bounding box: orientada com o objeto ou alinhada com os eixos – Bounding sphere: pode não se adaptar bem ao objeto 24 Técnicas para algoritmos eficientes – Back-Face Culling (eliminação de faces traseiras) Mesmo para os polígonos dentro do frustum, alguns podem ser rejeitados – Se assumirmos que os objetos são fechados 25 Técnicas para algoritmos eficientes – Back-Face Culling Se um objeto é aproximado por um poliedro sólido, então as faces poligonais envolvem completamente o volume do objeto Assumindo que todos os polígonos são definidos de forma a que a sua normal aponte para o exterior do objeto, então os polígonos cuja normal aponta para o lado oposto ao observador, pertencem a uma zona do objeto completamente tapada pelos restantes polígonos Tais polígonos posteriores (back-facing) invisíveis podem ser eliminados de processamento posterior - back-face culling – Por analogia, aqueles polígonos que não são back-facing são designados front-facing 26 Técnicas para algoritmos eficientes Back-Face Culling – Independentemente de estarem à frente ou atrás de outros – Se a cena for composta de objetos poliédricos fechados, pode-se reduzir o n.º de superfícies a desenhar: Desenhar apenas as superfícies do lado do observador Diminuição da complexidade da cena, reduzindo substancialmente o peso computacional – Como determinar as faces visíveis? 27 Técnicas para algoritmos eficientes – Back-Face Culling Para a determinação das faces traseiras, basta calcular o sinal da projeção (produto interno) da normal de cada superfície com a direção de observação (normalmente o eixo Z), ou seja: – em coordenadas de visualização, um polígono back-facing pode ser identificado pelo produto escalar não negativo que a sua normal à superfície forma com o vetor a partir do centro de projeção para qualquer ponto no polígono V.N < 0 front face V.N > 0 back face V.N = 0 visto de perfil 28 Técnicas para algoritmos eficientes – Back-Face Culling Num sistema direto com direção de visualização ao longo do eixo negativo do eixo Zv: – um polígono é back facing se C São modelos locais Por exemplo, objetos não causam sombras noutros objetos Modelos mais complexos, iluminação global, já o permitem: – Ray Tracing: Cálculo interações especulares Cálculo de sombras – Radiosidade 38 Cálculo de interações difusas modelos de iluminação locais iluminação ambiente reflexão difusa reflexão especular modelo de iluminação de Phong recordar: pipeline de visualização grafo de cena / modelo 3D Resultado: transformação todos os vértices da cena estão especificados num de modelação referencial 3d comum – o sistema de coordenadas do mundo Efectuar Culling; evita iluminação e transformação cálculos de iluminação sombreado dos vértices de acordo com o modelo de iluminação Transformação Visualização transformação para o referencial de visualização (ou da câmara). Clipping/ Recorte recorte: preservar apenas os vértices que estão no interior do viewport Projecção projecção dos vértices para um plano 2D Rasterização 3 iluminaçã o objetivo da CG – construção de modelos virtuais de cenas modelação iluminação (lighting) – modelação (geométrica) problema “fácil” pode ser demorado (oneroso) – iluminação (interações luz superfície) problema fundamental da CG simular luz numa cena (de uma forma rápida) as imagens obtidas deverão ser corretas ou “indistinguíveis” de uma imagem real (tal como a vemos). outro desafio (mais difícil): gerar imagens corretas em tempo real 4 iluminaçã o realismo em tempo real – iluminação é o problema central na síntese de imagens em tempo real fontes de luz com configurações arbitrárias mudanças (em tempo-real) das condições de iluminação sombras (em tempo real) reflexões (em tempo real) misturas de diferentes tipos de superfície – transparências, texturas 5 iluminaçã o illumination (iluminação) – transporte de energia entre superfícies emissão, reflexão, absorção iluminação direta e indireta lighting (?) – processo de cálculo da radiância (intensidade da luz) num ponto 3D (particularmente numa superfície) shading (sombreado/sombreamento) – processo de atribuição de cores a pixels da imagem sintetizada 6 lighting dado um modelo 3D e um ponto de observação 3D – determinar os fragmentos do modelo que são visíveis – determinar a cor dos pixels como determinar a cor de cada pixel? – modelos de iluminação modelo que simula as interacções da luz com os objectos – tipos de modelos de iluminação locais globais – baseados em leis da Física aproximações empíricas – em qualquer dos tipos existe sempre um grande conjunto de aproximações para reduzir complexidade do tratamento e acelerar o cálculo 7 modelos de iluminação (m.i.) modelos de iluminação – teóricos / fisicamente corretos baseados nas leis físicas – empíricos formulações simples que aproximam os fenómenos observados. Não tem em muitas das formulações um fundamento físico. mas funcionam…(com os devidos descontos) são geralmente mais rápidos (um dos objetivos) dada a sua menor complexidade (o que também ajuda) computação gráfica – normalmente modelos empíricos – mas cada vez mais são utilizados modelos baseados nas Leis da Física 8 modelos de iluminação (m.i.) em Computação Gráfica a iluminação simula como os objetos refletem a luz em tempo real é uma aproximação empírica da iluminação real, por vezes sem bases teóricas profundas que a sustentem, no entanto com resultados práticos bastante aceitáveis esta aproximação deve-se a dois fatores: – as equações da iluminação real não são totalmente conhecidas – mesmo os modelos simplificados da realidade são extremamente complexos 9 componentes de um m.i. luzes – emissores de luz emitem um determinado espectro de luz superfícies (propriedades) – refletem de forma especular (reflexão perfeita / espelho) de forma difusa de forma “acetinada”/ glossy – absorvem partes ou totalidade do espectro de luz – transmitem / refratam objetos com transparências 10 componentes: luzes fontes de luz ou emissores – emitem um determinado espectro de luz cor da luz – atributos geométricos posição direcção forma – atenuação direccional 11 componentes: superfícies propriedades da superfícies – espectro de reflectância cor da superfície – atributos geométricos posição orientação micro-estrutura 12 componentes: simplificações simplificações habituais (em aplicações interativas) – considerar apenas iluminação direta modelos de iluminação local sem interferência entre diversas superfícies – simplificação da geometria dos emissores (luzes) a casos triviais por exemplo: luz pontual – fonte de luz reduzida a um ponto – luz omnidirecional (emite luz de forma homogénea em todas as direções) 13 componentes: simplificações o modelo de iluminação mais simples: considerar que todos os objetos têm uma intensidade intrínseca para cada objeto é definida uma constante que indica a intensidade intrínseca I = ki – I é a intensidade resultante – ki é a intensidade intrínseca do objeto – Objetos mais claros têm uma intensidade intrínseca elevada, – Objetos escuros têm uma intensidade intrínseca reduzida 14 componentes: simplificações supondo que em vez de iluminação própria, temos: – Iluminação difusa; – Não direcional; – Produz múltiplas reflexões de luz a partir das várias superfícies existentes no ambiente. estamos na presença de Iluminação Ambiente 15 luz ambiente para simular a iluminação indireta – assim, objetos que não são diretamente iluminados continuam visíveis na cena partes de baixo das mesas tetos (quando as luzes são direcionais e para baixo) etc. – na realidade, esta iluminação indireta existe por reflexão da luz em paredes, chão, etc. – mas os fenómenos de iluminação indireta são, na maior parte dos casos, computacionalmente custosos 16 luz ambiente qual o truque ? introduzir na equação: – componente de luz ambiente – não tem características direcionais – ilumina cada superfície de uma forma homogénea – a quantidade refletida de luz ambiente, para cada superfície, depende das características da superfície, simulado por um parâmetro (coeficiente) de reflexão de luz ambiente Ka 17 luz ambiente para cada comprimento de onda – geralmente, apenas para as componentes RGB a luz ambiente reflectida depende – das propriedades da superfície – da intensidade (e distribuição espectral) da luz ambiente assim: Propriedade da luz Ireflectida= ka* Iambiente Propriedade do material 18 luz ambiente na equação de iluminação ambiente: I = Ia * ka – I é a intensidade (resultante) observada; – Ia é a intensidade da luz ambiente, assumida como constante para todos os objetos em todas as direções; – ka é a quantidade de luz ambiente refletida pela superfície de um objeto (coeficiente de reflexão ambiente [0, 1] ; próximo de 1, se o objeto for claro) 19 luz direcional fonte de luz direcional - simplificação: – raios de luz paralelos como se a luz estivesse bastante longe dos objetos uma boa aproximação para a luz solar a orientação de uma superfície relativamente à luz é importante na iluminação – com luzes direcionais a direção da luz é constante o que para além de ser, para alguns casos, uma boa aproximação a algumas fontes de luz, simplifica alguns cálculos 20 luz pontual uma fonte de luz pontual – emite luz de uma forma homogénea em todas as direções: omnidirecional – a direção da luz em pontos distintos de uma superfície é diferente necessário cálculo do vetor com a direção da luz, para cada ponto da superfície 21 outros tipos de luz spotlights – possuem atenuação direcional – suportadas pelo OpenGL áreas / superfícies emissoras de luz (area light sources) – discos / polígonos – exemplo: painéis fluorescentes – capazes de gerar sombras progressivas / suaves 22 reflexão: a física da reflexão difusão ideal – um difusor ideal, no seu nível microscópico, é uma superfície rugosa (por exemplo, giz). – por causa da sua microestrutura, a superfície, perante a incidência de luz, reflete-a de uma forma homogénea em todas as direções (na hemisfera de reflexão) – de que depende a intensidade da luz refletida? 23 reflexão: difusor ideal – de que depende a intensidade da luz reflectida? 24 reflexão: Lei de Lambert os difusores ideais comportam-se de acordo com a Lei de Lambert (do co-seno): – a energia refletida, por uma pequena superfície, de uma fonte de luz posicionada numa determinada direção, é proporcional ao co- seno do ângulo entre a direção da luz e a normal à superfície estas superfícies dizem-se – Lambertianas (ou de Lambert) notar que a intensidade refletida é independente do local do observador (ponto de vista) notar que dependem exclusivamente da posição relativa entre o ponto na superfície e a fonte de luz 25 reflexão: Lei de Lambert 26 reflexão: Lei de Lambert a este ângulo dá-se o nome de : – ângulo de incidência E a intensidade reflectida, como se calcula? Idifusa = kd * Iluz * cos na prática, com cálculo vectorial: Idifusa = kd * Iluz * (n l) 27 reflexão: Lei de Lambert esfera vista com a luz em diferentes posições apenas é necessário considerar ângulos de incidência entre 0º e 90º. 28 reflexão difusa Assim, para uma superfície, o brilho depende do ângulo entre a direcção L à fonte de luz e a normal da superfície N: I I p K d cos – I é a intensidade resultante; – Ip é a intensidade da fonte do ponto de luz; – kd é o coeficiente de reflexão difusa. Varia com o tipo de material; Numa superfície que satisfaz a lei de Lambert, a intensidade da luz – O ângulo deverá estar entre 0º e reflectida vista pelo observador é 90º se pretendermos que a fonte de independente da direcção do luz tenha algum efeito directo no observador e depende apenas do ângulo de incidência da luz ponto a ser iluminado. 29 reflexão difusa A equação anterior pode ser rescrita introduzindo um termo ambiente (mais realismo) Sendo a normal à superfície representada por um vector N e o raio de iluminação por um vector unitário L. Então cos = N. L: I I a * K a I p * K d *(N.L) Produto interno (N L) = ║N║*║L║* cos = nx * lx + ny * ly+ nz * lz Caso os vectores N e L estejam normalizados (║N║= 1 e ║L║= 1) pode-se substituir o co-seno pelo produto interno 30 reflexão especular Ao iluminar superfícies brilhantes, estas exibem regiões brilhantes (reflexão especular): – metal polido – pintura (brilhante) de carro uma luz incidente numa superfície especular provoca uma região de brilho intenso (spot) conhecido como – specular highlight (brilho especular) este tipo de reflexão é dependente da vista – a posição onde estes brilhos intensos aparecem depende da posição do observador 31 reflexão especular a um nível microscópico, as superfícies especulares são bastante suaves Assim os raios de luz são reflectidos de uma forma semelhante a um espelho Quanto mais suave a superfície, mais próximo fica de um espelho ideal. – exemplo: metal polido 32 reflexão especular sucede nas superfícies polidas, com especial relevo nas superfícies metálicas por ex., numa maça vermelha iluminada por uma luz branca brilhante: - o ponto brilhante é causado pela reflexão especular, e a luz refletida do resto da maça é o resultado da reflexão difusa – no ponto brilhante, a maça parece não ser vermelha, mas branca, a cor da luz incidente. A luz refletida especular duma superfície sem cor, tem a mesma cor da fonte de luz. as superfícies brilhantes reflectem luz de forma desigual 33 em diferentes direcções reflexão especular num refletor ideal (espelho perfeito), a luz é refletida apenas na direção de reflexão R, o qual é refletido (espelho) relativamente a N (o ângulo de incidência e o ângulo de reflexão especular têm o mesmo valor). assim o observador pode ver luz refletida de forma especular dum espelho só quando o ângulo (na fig.) é zero; é o ângulo entre R e a direção ao ponto de observação V. 34 reflexão: Lei de Snell a reflexão especular comporta-se de acordo com a Lei de Snell: – o raio incidente e o raio refletido estão numa superfície plana (em termos infinitesimais) com uma determinada normal. – o raio refletido forma com a normal da superfície um ângulo idêntico ao formado pelo raio incidente. 35 reflexão especular não perfeita: modelos empíricos como modelar este comportamento? 36 reflexão especular não perfeita a Lei de Snell aplica-se a superfícies espelhadas, mas para além de espelhos e cromados, poucas superfícies têm um comportamento especular perfeito Como se pode capturar as reflexões mais suaves de superfícies com brilhos acetinados (glossy)? Ideia 1: – modelar a micro-geometria das superfícies…. – … e calcular os efeitos da luz… Ideia 2: – modelo empírico : modelo de iluminação de Phong 37 reflexão especular não perfeita: modelos empíricos Ideias: – a maior parte da luz deverá ser refletida na direção definida pela Lei de Snell – mas devido às variações microscópicas, alguma luz deverá ser refletida em direções aproximadas à direção de reflexão especular perfeita – quanto maior for a distância entre um determinado ângulo e o ângulo da reflexão especular perfeita, menos quantidade de luz deverá ser refletida. 38 Reflexão Especular Modelo de Iluminação de Phong Phong Bui-Tuong desenvolveu um modelo popular de reflexão para refletores não perfeitos, como é por exemplo: a maçã Neste modelo calcula-se a intensidade da reflexão especular como sendo proporcional ao cosns, em que ns depende das características da face a visualizar (valor 1 para faces não polidas e 200 para faces perfeitamente polidas). Para um refletor perfeito: ns seria infinito. A reflexão especular também depende do ângulo de incidência . 39 reflexão especular não perfeita: modelo de Phong. modelo sugerido por Phong o coeficiente ns é uma constante empírica que determina como se dá o decaimento do brilho – Quanto maior o valor, mais pequeno é o ponto brilhante – Materiais metálicos tendem a ter valores altos, enquanto que materiais baços definem-se com valores baixos embora empírico, o modelo funciona (ou vai funcionando) na prática. I luz cos ns Iespecular ks 40 reflexão especular não perfeita: modelo de Phong. variação em função de ns. 41 Reflexão Especular Modelo de Iluminação de Phong Superfícies menos polidas Superfícies mais polidas Diferentes valores de cosns usados no modelo de iluminação de Phong 42 Reflexão Especular Modelo de Iluminação de Phong calculando o vetor de reflexão R: N cos = L+S S = N cos - L R= N cos +S= = N cos + N cos - L = 2N cos - L = 2N (N.L) - L R.V = (2 (N.L) N - L).V 43 reflexão especular não perfeita: modelo de Phong cálculo: I especular k s I luz R̂ Vˆ ns R̂ L̂ 2 N̂ L̂ N̂ R̂ 2 N̂ L̂ N̂ L̂ 44 modelo de iluminação de Phong inclui: ambiente, difusa e especular – Nota: para cada fonte de luz – Nota: para cada componente de cor #luzes I total k a I ambiente I i k d N̂ L̂ k s R̂ Vˆ ns i1 45 modelo de iluminação de Phong atenuação da fonte de luz baseada na distância – Ao sobrepor as projeções de 2 superfícies paralelas do mesmo material numa imagem não se consegue distinguir uma da outra, sejam quais forem as suas distâncias à fonte de luz. Assim, introduz-se um fator de atenuação fatt na equação anterior – A energia desde uma fonte luz, que atinge parte de uma superfície, cai o inverso do quadrado da distância dL (distância que a luz percorre desde a fonte pontual até à superfície): f att 1 (d L ) 2 46 modelo de iluminação de Phong atenuação da fonte de luz baseada na distância – No entanto, a escolha anterior (correta) não produz os efeitos desejados – Uma solução de compromisso é: fatt = min(1/(c1 + c2*d + c3*d2),1) c1,c2,c3: constantes associadas à fonte de luz c1: constante que evita que o denominador fique muito pequeno quando a luz está muito perto o cálculo do mínimo obriga a diminuir ou manter a intensidade, isto é, fatt