Iluminação harmônica esférica - o que ela realiza?

8

Pelo meu entendimento, as harmônicas esféricas às vezes são usadas para aproximar certos aspectos da iluminação (dependendo da aplicação).

Por exemplo, parece que você pode aproximar a causa da iluminação difusa por uma fonte de luz direcional em um ponto de superfície ou em partes dele, calculando os coeficientes SH para todas as bandas que você está usando (para qualquer precisão que desejar) na direção da superfície normal e escalando-o com o que for necessário para escaloná-lo (por exemplo, intensidade de cor clara, ponto (n, l), etc.).

O que ainda não entendi é o que isso deve realizar. Quais são as vantagens reais de fazê-lo dessa maneira, em vez de avaliar o BRDF difuso da maneira normal. Você salva cálculos em algum lugar? Há alguma informação adicional contida na representação SH que você não pode obter dos resultados escalares da avaliação normal?

TravisG
fonte
se você acha que há algo que você não gosta com resposta, talvez eu possa elaborar?
precisa

Respostas:

10

O motivo para usar harmônicos esféricos é aproximar a distribuição de luz recebida em torno de um ponto - normalmente luz indireta calculada por algum algoritmo de iluminação global. Em seguida, o BRDF também é aproximado com harmônicos esféricos, para permitir calcular com eficiência a luz de saída vista pelo espectador, pegando o produto escalar dos coeficientes SH de entrada de luz com os coeficientes SH de BRDF. Isso aproxima a convolução da luz recebida com o BRDF, como visto na equação de renderização.

Se você deseja apenas receber luz de fontes pontuais, não precisa de SH. As luzes pontuais são tratadas com mais precisão apenas avaliando o BRDF diretamente. Além disso, se você tiver um ambiente fixo (céu etc.) do qual deseja receber luz, poderá gerar mapas de cubo pré-convoluídos offline (usando CubeMapGen por exemplo) que fazem um bom trabalho ao aproximar a convolução do mapa do ambiente com o BRDF. Também não há necessidade de SH aqui.

Onde a SH é realmente útil é quando você tem uma cena complexa e deseja iluminação indireta, ou seja, iluminação de rejeição. Nesse caso, a distribuição da luz varia de um lugar para outro. Em princípio, cada ponto individual da cena possui um ambiente de iluminação diferente, com base em seus arredores. Na prática, amostramos a iluminação em pontos discretos usando algum algoritmo de iluminação global. Existem várias maneiras de fazer isso - você pode experimentar a iluminação em cada vértice das superfícies, por exemplo, ou em cada texel de um mapa de luz. Ou crie uma representação volumétrica usando uma grade ou uma malha tetraédrica .

A questão é que há um grande número de pontos em que a iluminação é amostrada e, portanto, precisamos de uma representação flexível, mas muito compacta, da iluminação em torno de um ponto, para evitar o consumo de muita memória. SH cumpre esse papel muito bem. Também possui a propriedade útil de que funciona bem com interpolação, ou seja, os coeficientes SH podem ser interpolados de um ponto de amostra para outro e a iluminação intermediária se comportará razoavelmente. E como captura a distribuição angular geral da luz recebida, não apenas a luz de uma direção, você pode usá-la com uma superfície mapeada normal e obter bons resultados.

Note-se, no entanto, que a SH é realmente útil apenas para iluminação difusa. A menos que você use um número verdadeiramente insano de coeficientes SH, isso embaçará demais a distribuição angular da luz recebida. Para iluminação indireta especular de alta qualidade, é necessário algo mais, como mapas de cubo com correção de paralaxe e / ou rastreamento de raios no espaço da tela.

Nathan Reed
fonte
> O ponto é que há um grande número de pontos nos quais a iluminação é amostrada e, portanto, precisamos de uma representação flexível, mas muito compacta, da iluminação em torno de um ponto, para evitar o consumo de muita memória. SH cumpre bem esse papel <É isso que está me confundindo. Parece-me que você pode representar a luz em torno de um ponto (isso é irradiância, não é?) Também com uma representação de intensidade normal, e você precisa de menos memória para isso também, já que apenas 2 bandas SH usam 4 coeficientes por cor, enquanto a intensidade é de apenas 3 no total.
TravisG
Bem, vamos dar um exemplo específico: você, por acaso, conhece o algoritmo Light Propagation Volume usado no Cryengine 3? Eu me pergunto por que não é prático representar a iluminação na LPV da mesma forma que as intensidades.
TravisG
@TravisG Não é apenas um único valor de intensidade RGB, porque diferentes quantidades de luz vêm de diferentes direções. A idéia é representar a distribuição angular da luz que entra, não apenas a luz de uma direção específica ou a média em todas as direções. Considere se você tem uma luz verde à esquerda e uma luz vermelha à direita. Uma superfície mapeada normal deve refletir verde onde os normais apontam para a esquerda e vermelho onde apontam para a direita. Uma única intensidade RGB não pode representar essa situação, mas uma base SH de 2 ou 3 bandas pode.
Re
@TravisG Da mesma forma com o LPV, você precisa acompanhar a direção na qual a luz está se propagando. Ele não se espalha apenas em todas as direções (a menos que seja espalhado por partículas no ar ou algo parecido); continua na direção em que foi emitida. Por exemplo, um nó na LPV pode conter luz vermelha viajando para a direita e luz verde viajando para a esquerda ao mesmo tempo. Portanto, cada nó precisa acompanhar a distribuição angular da luz que passa por ele.
Re
3

O que ainda não entendi é o que isso deve realizar?

Resposta curta, cálculos de luz física mais precisos. (com relação a algumas características de interação da superfície da luz).

Por que não avaliar tudo com o BRDF difuso da maneira normal?

Infelizmente, o problema está na definição da maneira normal . O modelo de reflexão phong "normal" foi adotado há muito tempo pela comunidade de renderização em tempo real desde o início e tem sido o padrão de fato devido à sua simplicidade que o torna apropriado para o uso da renderização em tempo real.

O problema , porém , é que a interação luz / material na vida real é tão complicada que não pode ser modelada por um único BRDF.

Os BRDFs são uma abstração de como a interação real com a luz deve ocorrer. phong é apenas mais um, que tem a vantagem da simplicidade.

Mas quais são as vantagens reais?

Na computação gráfica, existem diferentes BRDFs que se enquadram em duas categorias principais:

  1. Baseado na teoria física.
  2. Projetado para se ajustar a uma classe específica de tipo de superfície e geralmente é usado em renderização em tempo real.

Falando sobre a segunda categoria, cada BRDF tenta alcançar certas características com a interação superficial da luz. O BRDF mais simples possível é o lambertiano, que tenta modelar a dispersão da subsuperfície e é frequentemente usado em computação gráfica.

Em gráficos de computador em tempo real, geralmente os BRDFs são selecionados manualmente e seus parâmetros definidos para obter a aparência desejada (por exemplo, usando Phong com certos valores para modelar uma superfície plástica ou cromada).

Por outro lado, às vezes os BRDFs são medidos diretamente da superfície desejada (e não são representados por uma equação matemática). Isso nos fornece dados muito mais precisos fisicamente sobre a superfície que, de outra forma, são difíceis de realizar analiticamente.

Um método para ajustar esses dados capturados é selecionar um BRDF analítico e ajustá-los a ele. Harmônicos esféricos é apenas uma técnica usada para representar essas quantidades medidas e ajustá-las em um modelo analítico de BRDF.

O melhor recurso para a teoria BRDF pode ser encontrado na renderização em tempo real

  • 7.5 Teoria do BRDF.
  • Em harmônicos esféricos, revise 7.7.2 Representações para BRDFs medidos.
concept3d
fonte
Obrigado pela resposta, mas está faltando um pouco o que estou procurando. Tanto quanto eu entendo, você pode aproximar qualquer função f (x) usando harmônicos esféricos, e por algum motivo as pessoas decidem aproximar partes de um modelo de iluminação usando harmônicos esféricos (o que depende exatamente da aplicação, mas, por exemplo, termo difuso lambertiano é algo que me deparei com frequência). Eu me pergunto por que isso é, parece-me que os harmônicos esféricos são apenas uma representação com perdas que representa os mesmos dados, mas nem sequer tem uma vantagem de memória.
TravisG
Bem, isso depende do que você comparar. Se você compará-lo a um modelo analítico, é mais envolvido e caro. Mas o modelo analítico não leva em consideração o ambiente local. Hoje em dia, porém, vejo principalmente pessoas usando mapas de cubo. Eles alcançam resultados semelhantes e têm melhor suporte de hardware.
fácil