ine 5341

Programa

OpenGL

Links

Bibliografia

Plano de Ensino

Trabalhos de
Alunos de 
Semestres
Passados

Radiosidade

1. Luz Direta e Indireta
2. Exemplos de Métodos de Renderização
3. Interreflexão Difusa
4. Introdução à Radiosidade
5. A Equação de Radiosidade
6. O Fator de Forma
7. A Analogia Nusselt
8. O Semicubo
9. O Semicubo em Ação
10. A Matriz de Radiosidade Total
11. O Algoritmo de Radiosidade Progressiva
12. Exemplos de Radiosidade Progressiva
13. Implementando Radiosidade com o POV-Ray

Referencias:  Este material foi em parte baseado em um conjunto de Slides Educacionais de Stephen Spencer preparados para o SIGGRAPH 1993. A grande maioria dos exemplos foi re-renderizada utilizando-se o POV-Ray. O material foi preparado e formatado por Levi Ferreira em seu Estágio de Docência em Ciência da Computação.

Esta página objetiva explicar o metodo de radiosidade para a geração de imagens por computador e demonstrar a forma de utilização desta técnica no ambiente do POV-RAY. Para visualizar melhor os exemplos aqui e perceber em detalhes as suttilezas dos exemplos de reflexo e distribuição da luz, apague a luz ou feche as cortinas e preste atenção às nunaces em seu monitor.

Luz Direta e Indireta

Toda superficie em um ambiente é iluminada por uma combinação de luz direta e refletida. A luz direta é proveniente da energia luminosa vinda diretamente da fonte de luz ou das fontes de luz, atenuada somente pelo meio (fumaça, neblina, poeira). A luz refletida é a energia luminosa que, após ser emitida pela fonte de luz ou fontes de luz, é refletida por uma ou mais superficies do ambiente.

Quando a energia luminosa é refletida por uma superfície ela é atenuada pela refletividade da superfície, bem como parte dela é absorvida pela superfície, e parte dela atravessa a superfície. A reflectividade de uma superfície é comumente definida de acordo com a sua cor.

A iluminação em um ponto dado no ambiente é uma combinação da luz recebida diretamente de uma fonte de luz e a luz que é refletida uma ou mais vezes pelas superfícies do ambiente.

Exemplos de Métodos de Renderização

Três imagens são mostradas abaixo, ilustrando várias facetas da geração de imagens por computador.

A imagem no alto à direita foi renderizada com um algoritmo de renderização por linhas, onde o conjunto de iluminação ambiente é aproximado com um valor constante. Isto resulta em nenhuma sombra, nem em areas onde sombras ou menos iluminação seriam esperadas. Nenhuma sombra é calculada.

A imagem no centro e a imagem no canto inferior esquerdo foram ambas renderizadas com um algoritmo de "ray tracing" com iluminação global.A imagem ao centro exibe algumas caracteristicas de um típico algoritmo de "ray tracing": reflexão espelhada e nenhuma componente de luz ambiente. Note contornos bem definidos das sombras produzidas pelas fontes de luz. A imagem no canto inferior esquerdo mantem a reflexão espelhada tipica de um algoritmo de "ray tracing" tipico, e adiciona uma acurada componente de luz ambiente, através da re-reflexão da energia luminosa através do ambiente, mostrando assim sombras com contornos atenuados.


Interreflexão Difusa

Se a superfície é definida para ser um "refletor difuso" de energia luminosa, qualquer energia luminosa que atinja a superfície será refletida em todas as direções, dependendo somente do ângulo entre a normal à superfície e o vetor da luz incidente.Esta relação é conhecida como Lei de Lambert.

Luz que é refletida por uma superfície é atenuada pela reflectividade da superfície, a qual está intimamente ligada com a cor da superfície. A energia luminosa refletida geralmente é colorida, até certo ponto, pela cor da superfície pela qual foi refletida.

Esta reflexão de energia luminosa em um ambiente produz um fenomeno conhecido como "color bleeding" (sangramento). Onde a cor de uma superfície colorida brilhante irá "despejar" sua cor sobre as superfícies adjacentes. A imagem abaixo ilustra este fenômeno. Note como as paredes vermelha e verde estão "despejando" suas cores sobre a parede branca, o teto e o piso.

 

Exemplo do Pov-Ray (cornel.pov)

 


Introdução à Radiosidade

O método de "radiosidade" de geração de imagens por computador tem suas bases no campo da transferência de calor. A teoria da transferência de calor descreve radiação como a transferência de energia de uma superfície quando aquela superfície foi excitada termicamente. Isto inclui ambas superfícies as quais são emissoras basicas de energia, assim como as fontes de luz, e superfícies que recebem energia de outras superfícies e deste modo têm energia para tranferir.

Esta teoria de "radiação térmica" pode ser usada para descrever a transferência de muitos tipos de energia entre superfícies, incluindo energia luminosa.

Como na transferência de calor, o método básico de radiosidade para a geração de imagens por computador supõe que superfícies são difusos emissores e refletores de energia, emitindo e refletindo energia uniformemente sobre toda a sua área. Ele também assume que uma solução equilibrada pode ser alcançada; que toda a energia em um ambiente é calculada, através de absorção e reflexão.

Deve-se notar que o metodo básico de radiosidade é independente do ponto de vista: a solução será a mesma de qualquer ponto de vista da imagem.


O que é Radiosidade ?

A radiosidade de uma superfície é a taxa pela qual a energia deixa a superfície (energia / tempo / área). Ela inclui a energia emitida pela superfície bem como a energia refletida de outras superfícies.

Técnicas de modelagem da transferência de energia entre superfícies baseada em radiosidade foram usadas primeiro em análise de transferência de calor entre superfícies em um ambiente fechado. A mesma técnica pode ser usada para analizar a tranferência de energia radiante entre superfícies em computação gráfica.

Métodos de radiosidade permitem computar as intensidades das energias radiantes chegando a uma superfície. Estas intensidades podem ser utilizadas para determinadar as áreas de penumbra da superfície.


A Equação de Radiosidade

A "Equação de Radiosidade" descreve a quantidade de energia que pode ser emitida de uma superficie, como a soma de energia inerente à superfície (uma fonte luminosa, por exemplo) e a energia que atinge a superfície, sendo emitida de alguma outra superfície.

A energia que deixa a superfície (superfície "j") e atinge outra superfície (superfície "i") é atenuada por dois fatores:

  • o "fator forma" entre as superfícies "i" e "j", que leva em conta a relação fisica entre as duas superfícies.
  • a reflectividade da superfície "i", a qual vai absorver uma certa percentagem da energia luminosa que atinge a superfície.

     


O Fator de Forma

O fator de forma descreve a fração de energia que deixa uma superfície e chega a uma segunda superficie. Ele leva em conta a distância entre as superfícies, calcula as distâncias entre o centro de cada superfície, e sua orientação no espaço com relação à outra, computada como o ângulo entre cada vetor normal às superfícies e o vetor desenhado do centro de uma superfície para o centro de outra superfície. Ele é uma medida sem dimensão.

O fator de forma, como inicialmente mostrado, descreve o fator de forma entre duas áreas diferentes; que é, um fator de forma ponto a ponto. Para sua utilização com superfícies que tem uma área positiva, a equação deve ser integrada sobre a área de uma ou sobre ambas as áreas das superfícies. O fator de forma entre um ponto em uma superfície e outra superfície com área positiva pode ser usado se supusermos que o ponto representa todos os pontos da superfície.

O fator de forma é definido como a fração de energia que sai de uma superfície e chega à outra. Ele é puramente uma relação geométrica, independente do ponto de vista ou dos atributos da superfície. Entre áreas diferenciais, o fator de forma pode ser expresso assim:

 


A Analogia Nusselt

A diferenciação da equação do fator de forma básico é dificil inclusive para superfícies simples. Nusselt desenvolveu uma analogia geométrica que permite o calculo simples e preciso do fator de forma entre uma superfície e um ponto em uma segunda superfície.

A "analogia de Nusselt" envolve o posicionamento de um corpo com projeção hemisférico, com raio unitário, em um ponto na superfície. A segunda superfície é esféricamente projetada sobre o corpo de projeção, então cilindricamente projetas sobre a base do hemisferio. O fator de forma é, então, a área projetada na base do hemisfério dividido pela área da base do hemisfério.

 

Nusselt desenvolveu uma analogia geométrica para o fator de forma diferencial, para ajudar no cálculo deste fator.

A "Analogia Nusselt" é mostrada aqui em duas e tres dimensões.

Em ambos os diagramas, o fator de forma é igual à área projetada dividida pela área da base, ou (A / B).

 

 

O Semicubo

O método de cálculo do fator de forma por "semicubo" envolve posicionar o centro de um cubo em um ponto na superfície, e usando a metade superior do cubo (o "semicubo" que é visível sobre a superfície) como uma corpo de projeção como definido pela "analogia Nusselt".

Cada face do semicubo é dividida em um conjunto de pequenas áreas, geralmente quadradas, cada qual tem um fator de forma pre-calculado. Quando uma superfície é projetada sobre o semicubo, a soma dos valores de fatores de forma, das áreas discretas das faces do semicubo, as quais são cobertas pela projeção da superfície, é o fator de forma entre o ponto na primeira superfície ( sobre a qual o cubo está colocado) e a segunda superfície (que foi projetada) .

A velocidade e precisão deste metodo de calculo do fator de forma pode ser afetado pela mudança de tamanho e número de áreas discretas na superfície do semicubo.

 

O Semicubo Em Ação

Esta figua demonstra o cálculo do fator de forma entre uma superfície particular na parede de um quarto e várias superfícies de objetos no quarto.

Um algoritmo padrão de geração de imagens com radiosidade vai computar o fator de forma de um ponto da superfície para todas as outras superfícies sobre o semicubo e armazenar, em cada área discreta, o indice de identificação da superfície que é mais próxima do ponto. Quando todas as superfícies tiverem sido projetadas no semicubo, as áreas discretas contem os indices para as superfícies que são ultimamente visíveis ao ponto. De lá o fator de forma entre o ponto e as superfícies são calculados.

Para uma maior precisão. uma superfície larga deveria ser tipicamente quebrada em um conjunto de pequenas superfícies antes de qualquer cálculo de fator de forma ser realizado.

 

A "Matriz Total" de Radiosidade

Duas classes de algoritmos de radiosidade tem sido desenvolvidos os quais calculam a solução do equilíbrio de energia em um ambiente.

A "matriz total" de radiosidade calcula o fator de forma entre cada par de superfícies no ambiente, então forma uma série de equações lineares, como mostrado na figura superior. Esta matriz de equações é resolvida pelos valores "B", os quais podem ser usados como o valor de intensidade final (ou cor) de cada superfície.

Este método produz uma solução completa, porem com um custo substancial. Cada passo pose ser caro se o número de superfícies for grande: ambientes complexos tipicamente têm milhares de superfícies, e ambientes com milhões de superfícies não são incomuns. Isto leva a um custo substancial não somente em tempo mas tambem em espaço de memória.

A solução da matriz total de radiosidade requer o calculo do fator de forma entre cada superfície, para a solução da equação:

 

O Algoritmo de Radiosidade Progressiva.

A solução de radiosidade progressiva é um método incremental, produzindo resultados intermediários com baixo custo de processamento e memória. Cada iteração do algoritmo requer o calculo do fator de forma entre um ponto em uma unica superfície e todas as outras superfícies, ao invés de N² fatores de forma (onde "N" é o número de superfícies no ambiente). Depois do calculo dos fatores de forma, os valores de radiosidade do ambiente são atualizados.

Este método eventualmente produzirá a mesma solução que a matriz total, ainda que, diferente dela ele produza resultados intermediários, cada um mais apurado que o ultimo. Ele pode ser interrompido quando a aproximação desejada for atingida.

Algoritmo:

Para cada iteração:

selecione uma superfície i

calcule Fij para todas as superfícies j

para cada superfície j:

atualize a radiosidade da superfície j

atualize a emissão da superfície j

defina a emissão da superfície i = 0

 

Exemplos de Radiosidade Progressiva.

A imagem ilustra a natureza iterativa do método progressivo. A imagem mostra que se o numero de iterações aumenta, a precisão da imagem tambem aumenta. Esta imagem foi criada com o calculo de tres imagens separadas, cada uma com o processo interrompido em um diferente estágio de renderização.

 

Radiosidade no Pov-Ray.

Para utilizarmos a radiosidade no Pov-Ray precisamos adicionar um bloco de parametros globais no arquivo a ser renderizado. Este bloco ira definir os parâmetros de renderização:

 

global_settings { // utilizando valores padrão.

radiosity {

pretrace_start 0.08
pretrace_end 0.04
count 35

nearest_count 5
error_bound 1.8
recursion_limit 3

low_error_factor 0.5
gray_threshold 0.0
minimum_reuse 0.015
brightness 1

adc_bailout 0.01/2

}

}

 

Variando os parâmetros deste bloco podemos trabalhar a radiosidade ajustando-a até a obtenção de um resultado almejado.

pretrace_start e pretrace_end - definem o passo de calculo. Tornando opasso menor e portanto pmais preciso se o valor for pequeno. O que utiliza maior processamento.

Ex: pretrace_start = 1 e pretrace_end =1

pretrace_start = 0,1 e pretrace_end = 0,1

count, error_bound, nearest_count, recursion_limite - definem a qualidade geral. Se torna mais lento para ,elhorar qualidade.

Ex: Count =3

Count = 50

Ex: error_bound = 1.8

error_bound = 18

Ex: nearest_count = 5

nearest_count = 20

Ex: recursion_limite = 3

recursion_limite = 20

low_error_factor - reduz a taxa de erros na ultima passada eliminando atefatos (defeitos).

Ex: low_error_factor = 0.5

low_error_factor = 10

gray_threshold - reduz o efeito das cores na renderização.

Ex: gray_threshold = 0.0

gray_threshold = 1.0

minimum_reuse - define a taxa de reuso dos valores pre calculados. Valores menores utilizam maior processamento mas aumenta a qualidade.

Ex: minimum_reuse = 0.015

minimum_reuse = 0.1

brightness - define a intensidade da radiosidade.

Ex: brightness = 1

brightness = 2

Exemplo utilizando valores definidos como melhor qualidade:


 




 
 
The Cyclops Project
German-Brazilian Cooperation Programme on IT
CNPq GMD DLR