Como construir um efeito realista de "visão infravermelha"?

20

Como você construiria um efeito realista da visão infravermelha com shaders? Por realista, quero dizer um que parece realista, como este exemplo .

Eu tenho uma idéia sobre como criar uma textura para determinar quanto calor um material emite e, em seguida, determinar usando o produto escalar do vetor normal e de exibição quanto esse calor atinge o espectador, mas nem tenho certeza de que é assim que a visão térmica até funciona, então eu queria verificar se há uma abordagem melhor antes de começar a implementar algo que pode estar totalmente errado.

Mikael Högström
fonte
3
nah com infravermelho você pode assumir que tudo é um emissor difusa com diferentes intensidades, então basta dividir com o quadrado da distância para objetos mais próximos parecem mais brilhantes
catraca aberração
apenas embale os valores térmicos na textura. ou tenha uma textura separada, se você quiser mais avançado.
Tordin
11
@ratchetfreak: você só precisa dividir pelo quadrado da distância para fontes pontuais (ou coisas que você está aproximando como fontes pontuais). Para objetos estendidos, mantenha a luminância (leitura: brilho por pixel) constante, enquanto o ângulo sólido (leitura: número de pixels na tela) coberto pelo objeto cai como o quadrado inverso da distância devido à perspectiva.
Ilmari Karonen

Respostas:

25

Há RI, e depois há RI. O alcance dos comprimentos de onda da luz comumente chamado de " infravermelho " se estende da borda do alcance visual humano (cerca de 700 nm) até 1 mm = 1.000.000 nm.

A resposta de Philipp está correta para a luz "infravermelha" (cerca de 700 a 1.400 nm), que é basicamente igual à luz visível normal, exceto que é invisível a olho humano sem ajuda. Para modelar a visão quase infravermelha, basta substituir as texturas dos objetos e as cores das fontes de luz por outras alternativas que modelam suas refletâncias e intensidades de luz em diferentes comprimentos de onda do que o habitual

No entanto, com base na redação da sua pergunta e no vídeo ao qual você vinculou, você parece estar mais interessado na faixa "infravermelho térmico" (8.000 a 15.000 nm), que corresponde ao pico do espectro de radiação térmica da maioria dos objetos do cotidiano , incluindo o corpo humano. Essa radiação ainda se comporta de muitas maneiras como "luz" e pode ser modelada usando técnicas padrão de computação gráfica (em oposição às ondas de rádio , onde os comprimentos de onda são longos o suficiente para que as suposições padrão da óptica de raios comecem a quebrar), mas o mundo como visto no infravermelho térmico tem suas peculiaridades:

  • Como observado acima, a maioria dos objetos brilha em infravermelho térmico. Para luz visível, geralmente você pode assumir que existem apenas algumas fontes de luz reais, com tudo o mais refletindo a luz emitida por outras fontes. Para IR térmica, dependendo do (s) comprimento (s) exato (s) de onda escolhido (s), geralmente é o oposto.

  • Por outro lado, a maioria das superfícies também absorve o IR térmico de maneira bastante eficiente. Por sua vez, isso os aquecerá, fazendo com que eles reemitam mais RI eles mesmos. Com efeito, é como se quase todas as superfícies fossem fosforescentes .

  • O espectro de infravermelho térmico (ou seja, "cor") emitido pela maioria das superfícies depende principalmente de sua temperatura. A emissividade intrínseca do material da superfície também tem um efeito, mas é relativamente limitada.

Assim, comparado à visão de luz normal, modelar uma visão térmica infravermelha realista exigiria mais ênfase na iluminação global e na alteração dinâmica dos valores de emissividade. Dependendo da sua configuração, você pode trapacear um pouco aqui: por exemplo, para cenas estáticas, as funções de transferência térmica radiativa global podem ser pré-computadas uma vez e inseridas em um mapa de luz estático , como você faria para falsificar a iluminação global. o espectro visível.

Se você deseja simular a vista através de uma câmera termográfica no seu jogo, recomendo pelo menos o seguinte:

  • Desenhe e / ou calcule emissividade de IR especial e / ou texturas de refletividade para seus objetos. Preste atenção especial à emissividade de objetos quentes (como seres humanos ou máquinas), que devem corresponder à temperatura da superfície. A refletividade é relativamente menos importante.

  • Você provavelmente desejará usar apenas um único canal espectral (ou seja, desenhar tudo em monocromático) correspondente ao fluxo infravermelho térmico total. É possível pós-processar a imagem mapeando os valores resultantes da escala de cinza em um gradiente de cores falsas para simular o corte de densidade tradicional usado para imagens térmicas.

  • Considere rastrear explicitamente a temperatura de suas superfícies, de modo que, digamos, um local no chão em que uma pessoa esteja deitada permaneça quente (e, portanto, brilhando em infravermelho) por um tempo, mesmo depois que a pessoa se afastar. Existem várias maneiras de lidar com isso (por exemplo, rastreamento de temperatura por vértice, adição de decalques para mudanças transitórias de temperatura local etc.) com diferentes trocas entre realismo e custo computacional. Você provavelmente não precisa fazê-lo muito realista, mas mesmo tendo este efeito presente em tudo seria um toque agradável.

Ilmari Karonen
fonte
+1 resposta realmente boa! Gosto especialmente do seu último ponto. Não considerei isso e acho que você está correto. Seria um toque muito agradável que pode até ajudar a desviar a atenção do usuário do fato de que o resto pode não ser totalmente realista.
Mikael Högström
Ambas eram respostas boas e úteis, mas a sua me ajudou um pouco mais especificamente, apontando-me para observar diferentes comprimentos de onda do espectro IR e ajustar dinamicamente os valores de emissividade. Mas como diabos você sabia tudo isso sobre algo tão longe do game dev ?? Eu já trabalhei com IRVS na vida real e não sabia metade deste :)
Mikael Högström
Wikipedia. :) Não, sério, eu sabia que o IR próximo não é o mesmo que o IR térmico, e eu estava interessado em traçado de raios e outras técnicas sofisticadas de renderização, então sabia que eles tinham aplicações para modelar a transferência de calor por radiação. A maioria do resto eu apenas olhei para cima. A impressão térmica era algo que eu vi um vídeo do YouTube, eu acho.
Ilmari Karonen
11

O que você normalmente vê do mundo é a parte visual da luz que é refletida pelos objetos. Um objeto verde reflete apenas luz verde, um objeto vermelho somente luz vermelha e um objeto azul somente luz azul. O infravermelho pode ser considerado uma quarta cor que seus olhos não conseguem perceber. Uma câmera infravermelha torna a luz infravermelha visível para você, percebendo-a com um sensor e convertendo a imagem infravermelha em comprimentos de onda que você pode ver.

Assim como alguns materiais são mais ou menos brilhantes em vermelho, verde ou azul, eles também são diferentemente brilhantes em infravermelho. O brilho do infravermelho pode, mas não necessariamente precisa corresponder, ao brilho da luz visível.

Aqui está uma cena visível e em IR. Observe como as folhas das árvores são muito mais brilhantes no infravermelho do que nos troncos, mas o brilho do infravermelho das diferentes partes da fachada do edifício é semelhante na luz visível e no infravermelho.

O que você pode fazer é criar duas versões de todas as suas texturas: uma textura RGB para luz visível e uma textura monocromática alternativa para infravermelho. No modo normal, você usa a textura RGB e, no modo IR, usa a textura IR.

Você também pode considerar o uso de fontes de luz diferentes no modo IR. O sol produz tanta luz infravermelha quanto luz visível. Porém, fontes de luz artificiais (como lâmpadas halógenas ou diodos emissores de luz) produzem pouca ou quase nenhuma luz infravermelha, de modo que não iluminam nada em infravermelho. Por outro lado, existem fontes de luz muito mais fortes no infravermelho (como fogo aberto) ou apenas visíveis no infravermelho (objetos quentes que não são quentes o suficiente para brilharem em vermelho.) Ou fontes de luz infravermelha artificiais. usar óculos de infravermelho, você pode usar um controle remoto da TV como lanterna?). Diferentes condições de luz na luz normal e infravermelha podem ser um elemento interessante da jogabilidade.

Philipp
fonte
Nunca realmente considerou fontes de luz infravermelha. Acho que você poderia fazer alguns efeitos interessantes com os IRVS redefinir quando se olha diretamente para uma IR-fonte ...
Mikael Högström
A foto acima é UV, mas ainda assim forneceria alguns efeitos interessantes para ter visão noturna UV ou infravermelha. Isso me fez pensar porque testei recentemente um shader para termovisor que parece bem legal.
SICGames2013
2
@ SICGames2013 Por que você acha que é ultravioleta? Eu tenho que partir do artigo da Wikipédia alemã sobre a luz infravermelha . A descrição da imagem diz que exibe o comprimento de onda de 700-1000 nm.
Philipp
A faixa 700-1000 é infravermelha, mas a imagem acima parece ultravioleta apenas por causa do roxo. As câmeras infravermelhas, como a Sony ou os militares, têm contraste branco-acinzentado ou são mais profundas no espectro infravermelho com detecção de calor corporal; mapeando a faixa de temperatura de uma pessoa através de uma paleta de cores. Com a visão noturna da Sony, é cinza, mas agora um dia eles dão uma tonalidade verde a eles. Os googles militares de visão noturna têm tonalidade verde para que o usuário possa ver melhor as imagens depois que os elétrons atingem a tela de fósforo na parte traseira do tubo.
SICGames2013
11
@ SICGames2013 Quando você pensa seriamente que mostra o espectro ultravioleta porque a imagem possui um tom violeta, você não entendeu o significado de "infra" ou "ultra" nesses termos.
Philipp