MCGAV 2004 – Universidade do Minho | tema | Ray Tracing Distribuído | autores | Robert L. Cook, Thomas Porter e Loren Carpenter | instituição | Computer Division - Lucasfilm Ltd. Rudolfo Quintas e Tiago Rodrigues | apresentação | Ray Tracing Distribuído :: Vantagem Uma das técnicas mais elegantes na computação gráfica. Permite representar sombras, reflexos e refracções de luz, sem grandes dificuldades. :: Desvantagem As direcções dos raios são determinadas de modo preciso. Não existe a simulação de fenómenos ruidosos Ray Tracing Distribuído :: Proposta Distribuição das direcções dos raios de acordo uma função analítica. Incorporação de fenómenos ruidosos. Soluções para motion blur, profundidade de campo, penumbras, translucidez e reflexões esbatidas. Os cálculos podem ser integrados nos cálculos da superfície visível. Ray Tracing Distribuído | 1. Introdução | ::As imagens traçadas por os raios resultam sharp porque as direcções dos raios são determinadas precisamente da geometria :: Esta abordagem não foi conseguida anteriormente por causa do aliasing :: O ray tracing é uma forma de amostragem por ponto teve sujeito ao artefacto do aliasing :: Este aliasing não é inerentepode Pode ser filtrado como qualquer outro método analítico. -> Jittering Ray Tracing Distribuído | 1. Introdução (continuação)| :: O antialiasing proposto é baseado na abordagem proposta por Rodney Stock. :: A técnica de antialiasing abre novas possibilidades para o ray tracing :: Calculado com o antaialiasing devido, os raios podem amostrar movimento, as lentes da câmara, a função de shading completa. :: A chave -> não são necessários raios extra para lá daqueles usados para a sobreamostragem espacial :: Por exemplo, em vez de tirar múltiplas amostragens temporais a todas as localizações espaciais,os raios são distribuídos no tempo de forma a que raios em localizações espaciais diferentes sejam traçados em diferentes instâncias do tempo. :: raios distribuídos oferecem benefícios substanciais com pouco custo adicional. Ray Tracing Distribuído | 1. Introdução (continuação)| :: Amostrar o raio reflectido de acordo com a função de distribuição especular produz gloss (reflexão esbatida) :: Amostrar o raio transmitido produz translucencia (transparência esbatida). :: Amostrar o ângulo sólido das fontes de luz produz penumbras. :: Amostrar as lentes da câmara produz o efeito de profundidade de campo. :: Amostrar ao longo do tempo produz motion blur Ray Tracing Distribuído | 2. Shading | A intensidade I da luz reflectida num ponto da superfície é um integral da função de iluminação L e da função da reflexão R no domínio representado pelo hemisfério acima da superfície. I( Φr, θr) = ∫ ∫ L(Φi, θi) R(Φi, θi, Φr, θr) dΦidθi Φi θi (Φi, θi) - o ângulo de incidência. (Φr, θr) - o ângulo de reflexão. :: Problema: Complexidade de cálculo do integral. :: Solução: Simplificar através de aproximações. Ray Tracing Distribuído :: Solução 1: O integral L é substituído por um somatório num domínio discreto de direcções. Estas direcções indicam as fontes de luz como fontes pontuais. Estes pressupostos originam sombras definidas. Ray Tracing Distribuído :: Solução 2: As direcções onde não existe uma fonte de luz são agrupadas numa fonte de luz ambiente. A luz ambiente é a mesma em qualquer direcção. Se L é independente de Φi e θi, então pode ser retirada do integral. O integral de R é substituído por uma média, ou ambiente, reflectância. Ray Tracing Distribuído :: Solução 3: A função R é simplificada de modo que uma superfície apenas reflicta a luz numa direcção, ou seja , que funcione como um espelho. Estes pressupostos originam superfícies com reflexos definidos. :: Solução 4: Um método equivalente ao acima referido pode ser aplicado para a luz transmitida. Estes pressupostos originam superfícies com refracções definidas. Ray Tracing Distribuído | 2.1. Gloss | (reflexão esbatida) :: As reflexões são processadas como espelhos na computação gráfica, mas na vida real são normalmente esbatidas ou desviadas/irregulares. :: A forma como uma superfície reflecte o seu meio ambiente é chamado gloss :: Qualquer simulação analítica destas reflexões tem que ser baseada no integral da reflectância sobre qualquer ângulo sólido. :: As reflexões espelhadas são determinadas traçando raios desde a superfície na direcção do espelho Ray Tracing Distribuído | Exemplos Gloss | Ray Trace Clássico Ray Trace Distribuído Ray Tracing Distribuído | 2.2. Translucidez| :: Similiar ao problema do gloss, a translucidez necessita um integral da luz transmitida. :: A translucidez difere da transparência porque as imagens observadas através de objectos translúcidos não são nítidas :: A translucidez é determinada pela distribuição dos raios secundários em torno da direcção da luz transmitida. :: A função de transmissão T: - Similar à que foi apresentada para a luz reflectida - O domínio é definido pelo hemisfério que se encontra por detrás da superfície - A luz transmitida contém componentes de luz ambiente, difusa e especular. - A distribuição dos raios transmitidos é definida pela função de transmissão especular. Ray Tracing Distribuído | 2.3 Penumbras | :: As penumbras ocorrem quando uma fonte de luz está parcialmente escondida/escurecida :: A intensidade reflectida devido a uma luz neste estado é proporcional ao angulo sólido da porção visível da luz ::Nota: O ângulo sólido foi explicitamente incluído num modelo de shading, mas nenhum algoritmo foi sugerido para determinar este ângulo sólido por causa da complexidade da computação envolvida :: As sombras são calculadas traçando raios desde a superfície até as fontes de luz, e as penumbras podem ser calculadas distribuindo estes raios secundários. :: O raio da sombra (shadow ray) pode sertraçado para qualquer ponto na fonte de luz Ray Tracing Distribuído | 2.3 Penumbras (continuação) | :: O raio da sombra (shadow ray) pode sertraçado para qualquer ponto na fonte de luz :: A distribuição destes raios de sombreamento deve ser pesada tendo em conta a área projectada e a luminosidade das diferentes partes da fonte de luz. :: O numero de raios traçados para cada região deveria ser proporcional à quantidade de energia de luz que viria dessa região se a luz não estivesse obstruída. :: A proporção de amostras de pontos iluminados numa região da superfície é igual á proporção dessa intensidade de luz que é visível nessa região Ray Tracing Distribuído |Exemplo Penumbras| Ray Trace Clássico Ray Trace Distribuído Ray Tracing Distribuído | 3. Profundidade de campo | :: Ray Tracing clássico O modelo de camera utilizado tem uma abertura infinitesimamente pequena. As imagens resultantes têm um campo de visão finito. Os objectos apresentam-se bem definidos nas imagens. Ray Tracing Distribuído | 3. Profundidade de campo (continuação) | :: Postmesil - Simulação de profundidade de campo com uma técnica de pós-processamento. - Primeiro, cada objecto é desenhado de modo definido. - Segundo, cada objecto é envolvido com um filtro definido pela dimensão do circulo confusion. - O programa despende a maior parte do tempo no pós-processamento. - O tempo de pós-processamento aumenta drasticamente à medida que a abertura de lente diminui. Ray Tracing Distribuído | 3. Profundidade de campo (continuação) | :: Postmesil (continuação) A abordagem de pós-processamento não é correcta porque a visibilidade é calculada a partir de um único ponto, o centro da lente. O visionamento do ambiente é diferente a partir das diferentes partes da lente, e as diferenças incluem mudanças na visibilidade e na aparência (shading). A informação sobre essas partes não estarão disponíveis no pós-processamento. Ray Tracing Distribuído | 3. Profundidade de campo (continuação) | :: Ray Tracing Distribuído As camera e o olho têm uma abertura de lente finita. Cada ponto na cena apresenta-se como um círculo (confusion) no plano da imagem.. O seu tamanho depende da distância do ponto e da distância focal. Ray Tracing Distribuído | 3. Profundidade de campo (continuação) | :: Ray Tracing Distribuído - A superfícies visíveis e a sua aparência (shading) podem ser diferentes de acordo as diferentes partes da lente. :: Seguir o percurso do raio - Primeiro é definida uma linha entre do pixel (plano da imagem) e um ponto escolhido no círculo definido pela lente (jittering relativamente ao centro da mesma) - O raio primário é disparado a partir deste ponto da lente passando pelo ponto focal. - O processo é repetido N vezes para cada pixel. As especificações da camera necessárias para estes cálculos são a distância focal e o diâmetro da lente. Este método não tem em consideração o efeito de difracção. Ray Tracing Distribuído | 4. Motion Blur | o problema do motion blur e as tentativas anteriores de o solucionar: :: O método de motion blur discutido por Potmesi não somente é dispendioso, mas também separa os cálculos das superfícies visíveis dos cálculos do motion blur :: na maior parte dos casos não podemos somente calcular uma só imagem e esbater o resultado :: Problemas com as imagens de fundo, rotação de objectos e mudanças de textura :: As sombras resultantes do motion blur também são importantes e não são processadas correctamente se calcularmos somente uma shade por frame Ray Tracing Distribuído | 4. Motion Blur (cotntinuação) | :: A técnica de pontos amostrados parece ser a única abordagem que oferece algum compromisso para resolver o problema do motion blur. :: Uma solução por pontos amostrados foi proposto por Karein e Badler. no entanto, amostra os pontos somente nos espaço e não no tempo. :: Problema:As amostragens do shading não são esbatidas pelo movimento. Ray Tracing Distribuído | 4. Motion Blur (cotntinuação) | :: O método envolve manter uma lista de todos os objectos que cruzam cada ponto de amostra durante o tempo da frame :: uma lista que poderia ser bastante grande para uma cena complexa com movimentos rápidos. :: Eles também impõem a restrição infeliz que ambos os vértices de uma aresta devem mover-se à mesma velocidade :: O algoritmo também está limitado ao movimento linear Ray Tracing Distribuído | 4. Motion Blur (cotntinuação) | Distribuindo os pontos de amostragem no tempo soluciona o problema do motion blur :: O único requisito é a habilidade para calcular a posição do objecto a um tempo específico :: mudanças na visibilidade e shading de um objecto são correctamente calculadas/tidas em conta. :: mudanças na visibilidade e shading de um objecto são correctamente calculadas/tidas em conta. :: As sombras (umbras e penumbras), profundidade de campo, reflexos e intersecções são todos correctamente esbatidos. Ray Tracing Distribuído | 4. Motion Blur (cotntinuação) | :: Noção Geral:Utilizando diferentes distribuições de raios, o movimento pode ser esbatido :: Esta distribuição dos pontos amostrados no tempo não envolve a adição de mais pontos de amostragem :: Actualizar as posições do objecto para cada momento de tempo é o único tempo extra que os cálculos necessitam parar fazer o motion blur Ray Tracing Distribuído | 4. Motion Blur (cotntinuação) | Imagens com Motion Blur com tempos de exposição diferentes Ray Tracing Distribuído | 5. Outras implicações do algoritmo | :: Determinar a posição Visto que cada raio ocorre num único instante do tempo, é necessário actualizar as posições dos objectos para esse instante do tempo. :: A união, a intersecção e a diferença. A intersecção de superfícies é lidada de modo trivial, apenas determina-se qual é o objecto que se encontra mais próximo, num determinado instante do tempo. Em cada ponto de amostragem, apenas uma das superfícies é visível. Ray Tracing Distribuído | 5. Outras implicações do algoritmo (continuação) | Sendo r a transparência e R a reflexão detectada por um raio num determinado instante e local. R e r são independentes do comprimento de onda r a cor da transparência não é necessariamente igual à cor da reflexão. Por exemplo, um plástico vermelho transparente pode ter brilho branco. Se existires n-1 superfícies transparentes em frente de uma superfície opaca, a luz que chega até ao observador é n-1 n-2 n i-1 i=1 i=1 i=1 j=1 Rn ∏ri + Rn-1 ∏ri + … + R2 ∏r1 + R1 = ∑ Ri ∏rj Ray Tracing Distribuído | 6. Sumário Do Algoritmo | 1- Escolher um momento no tempo para o raio e move os objectos de acordo 2-O numero de raios num determinado momento é proporcional aos valores do desejado filtro temporal nesse momento de tempo. 3- Construir um raio desde o ponto do olho (centro da lente) a um ponto no ecrã 4- Escolher uma localização na lente e traça um raio desde essa localização ao ponto focal do raio original 5- Determinar qual o objecto que está visível. 6- Calcular as sombras. 7- Para cada fonte de luz, escolher uma localização na luz e traçar um raio desde o ponto visível a essa localização Ray Tracing Distribuído | 6. Sumário Do Algoritmo (continuação) | 8- O numero de raios traçados a uma localização na luz deveria ser proporcional à intensidade e área projectada daquela localização como vista da superfície 9- Para reflexões, escolher uma direcção à volta do espelho de direcção e traçar um raio nessa direcção desde o ponto visível. 10- O número de raios traçados numa direcção específica deve ser proporcional à quantidade de luz desde essa direcção que è reflectida na direcção do observador 11- Para a luz transmitida, escolher uma direcção à volta da direcção da luz transmitida e traça um raio nessa direcção desde o ponto visível. 12- O número de raios traçados nessa direcção específica deve ser proporcional à quantidade de luz desde essa direcção que é transmitida até ao observador Ray Tracing Distribuído | 7. Conclusão | :: O ray tracing distribuído é um novo paradigma para a computação gráfica que resolve um conjunto de problemas ou problemas parcialmente resolvidos :: A abordagem também foi bem resolvida quando adaptada a uma algoritmo de scanline :: Incorpora os cálculos da profundidade de campo nos cálculos das superfícies visíveis, eliminando os problemas dos métodos anteriores :: Torna possivel os fenómentos esbatidos, como as penumbras, o gloss e translucencia. Tudo isto pose ser esbatido com o movimento distribuindo os raios no tempo. :: Esta abordagem na síntese de imagens é praticamente tão dispendiosa quanto o ray tracing clássico e resolve todos estes problemas de uma só vez. Ray Tracing Distribuído | 7. Conclusão (continuação) | :: Os problemas nunca poderiam ser resolvidos separadamente porque estão todos interligados :: Diferenças no shading, nas penumbras e na visibilidade são tidas em conta para os cálculos da profundidade de campo :: As mudanças na profundidade de campo e na visibilidade são esbatidas com o movimento. :: Os cálculos de penumbras e de shading são esbatidos com o movimento -Todos este fenómenos estão interligados e a nova abordagem soluciona todos eles de uma só vez amostrando (by sampling) o espaço multidimensional que eles definem :: A chave para isto é a habilidade de esbater a amostra por ponto (antialias point sampling).