Как построить реалистичный эффект «инфракрасного зрения»?

20

Как бы вы создали реалистичный эффект инфракрасного зрения с помощью шейдеров? Под реалистичным я подразумеваю тот, который выглядит реалистичным, как этот пример .

У меня есть идея сделать текстуру, чтобы определить, сколько тепла излучает материал, а затем определить с помощью точечного произведения нормали и вектора обзора, сколько этого тепла достигает зрителя, но я даже не уверен, что именно так происходит тепловое зрение. даже работает, поэтому я хотел проверить, есть ли лучший подход, прежде чем начать реализовывать что-то, что может быть совершенно неправильно.

Микаэль Хегстрём
источник
3
ах с инфракрасным излучением вы можете предположить, что все является диффузным излучателем с различной интенсивностью, поэтому просто делите с квадратом расстояния, чтобы более близкие объекты выглядели ярче
трещотка урод
просто упакуйте тепловые значения в текстуру. или иметь какую-то отдельную текстуру, если вы хотите более продвинутый.
Тордин
1
@ratchetfreak: вам нужно только разделить на квадрат расстояния для точечных источников (или вещей, которые вы аппроксимируете как точечные источники). Для расширенных объектов следует поддерживать постоянную яркость (читай: яркость на пиксель), в то время как телесный угол (читай: количество пикселей на экране), охватываемый объектом, падает как обратный квадрат расстояния из-за перспективы.
Ильмари Каронен

Ответы:

25

Есть ИК, а затем есть ИК. Диапазон длин волн света, обычно называемый « инфракрасным », простирается от края визуального диапазона человека (около 700 нм) до 1 мм = 1 000 000 нм.

Ответ Филиппа верен для «ближнего инфракрасного» света (около 700–1400 нм), который в основном похож на обычный видимый свет, за исключением того, что он невидим для невооруженного человеческого глаза. Чтобы смоделировать ближнее инфракрасное зрение, вы просто замените текстуры вашего объекта и цвета источника света на альтернативные, которые моделируют их отражательную способность и интенсивность света на разных длинах волн, чем обычно

Однако, исходя из формулировки вашего вопроса и видео, на которое вы ссылаетесь, вы, похоже, больше интересуетесь «инфракрасным» диапазоном (от 8000 до 15000 нм), который соответствует пику спектра теплового излучения большинства бытовых объектов. в том числе и организм человека. Это излучение по-прежнему ведет себя в большинстве случаев подобно «свету» и может быть смоделировано с использованием стандартных методов компьютерной графики (в отличие от радиоволн , когда длины волн становятся достаточно длинными, чтобы стандартные предположения о лучевой оптике начали разрушаться), но мир, как видно В тепловом инфракрасном диапазоне есть свои особенности:

  • Как отмечалось выше, большинство объектов будут светиться в инфракрасном диапазоне. Что касается видимого света, вы можете предположить, что существует всего несколько реальных источников света, а все остальное просто отражает свет, излучаемый другими источниками. Для теплового ИК-излучения, в зависимости от точной выбранной длины волны, часто имеет место обратное.

  • И наоборот, большинство поверхностей также будут достаточно эффективно поглощать тепловое ИК. Это, в свою очередь, согреет их, заставляя их самостоятельно излучать больше ИК. По сути, это как если бы почти каждая поверхность была фосфоресцентной .

  • Тепловой ИК-спектр (то есть «цвет»), испускаемый большинством поверхностей, будет в основном зависеть от их температуры. Собственная излучательная способность поверхностного материала тоже имеет эффект, но относительно ограниченный.

Таким образом, по сравнению с нормальным видением света моделирование реалистичного теплового инфракрасного зрения потребовало бы большего внимания глобальному освещению и динамически изменяющимся значениям излучательной способности. В зависимости от ваших настроек, вы можете немного обмануть здесь: например, для статических сцен, глобальные функции радиационного теплового переноса могут быть предварительно рассчитаны и встроены в статическую карту освещения , точно так же, как если бы вы имитировали глобальное освещение в видимый спектр.

Если вы хотите смоделировать вид с помощью термографической камеры в своей игре, я бы рекомендовал, по крайней мере, следующее:

  • Рисуйте и / или вычисляйте специальные текстуры ИК излучения и / или отражательной способности для ваших объектов. Обратите особое внимание на излучательную способность теплых предметов (например, людей или машин), которая должна соответствовать температуре их поверхности. Отражательная способность относительно менее важна.

  • Вы, вероятно, захотите использовать только один спектральный канал (т.е. нарисовать все в монохромном режиме), соответствующий общему тепловому ИК потоку. Вы можете выполнить постобработку изображения, сопоставив полученные значения градаций серого с градиентом ложного цвета, чтобы имитировать традиционное сечение плотности, используемое для тепловых изображений.

  • Рассмотрите возможность точного отслеживания температуры ваших поверхностей, чтобы, например, пятно на земле, на котором лежал человек, оставалось теплым (и, следовательно, светящимся в инфракрасном диапазоне) в течение некоторого времени даже после того, как человек отошел. Есть несколько способов, которыми вы могли бы справиться с этим (например, отслеживание температуры на вершину, добавление декалей для кратковременных локальных изменений температуры и т. Д.) С различными компромиссами между реализмом и вычислительными затратами. Вы , наверное , не нужно , чтобы сделать это очень реалистично, но даже имея этот эффект , присутствующий на всех было бы приятно прикасаться.

Илмари Каронен
источник
+1 действительно хороший ответ! Мне особенно нравится ваше последнее замечание, которое я вообще не учел, и думаю, что вы правы. Это очень приятное прикосновение, которое может даже помочь отвлечь внимание пользователя от того факта, что все остальное может быть не совсем реалистичным.
Микаэль Хогстрем
Оба были хорошими и полезными ответами, но ваш помог мне более конкретно, указав мне на взгляд на различные длины волн ИК-спектра и на динамическую настройку значений излучательной способности. Но как, черт возьми, вы узнали все это о чем-то столь далеком от разработчика игр ?? Я работал с IRV в реальной жизни и не знал половины этого :)
Mikael Högström
Wikipedia. :) Нет, серьезно, я знал, что ближний инфракрасный свет не похож на тепловой инфракрасный, и я интересовался трассировкой лучей и другими необычными методами визуализации, поэтому я знал, что у них есть приложения для моделирования радиационного теплообмена. Большую часть остальных я просто посмотрел вверх. Я думаю, что когда-то я видел видео на YouTube с термическим отпечатком.
Илмари Каронен
11

То, что вы обычно видите от мира, - это визуальная часть света, которая отражается объектами. Зеленый объект отражает только зеленый свет, красный объект - только красный, а синий - только синий. Инфракрасный можно считать четвертым цветом, который ваши глаза не воспринимают. Инфракрасная камера делает инфракрасный свет видимым для вас, воспринимая его с помощью датчика и преобразуя инфракрасное изображение в видимые длины волн.

Точно так же, как некоторые материалы более или менее ярко окрашены в красный, зеленый или синий цвета, они также отличаются яркостью в инфракрасном диапазоне. Яркость инфракрасного излучения может, но не обязательно, соответствовать яркости видимого света.

Вот сцена в видимой и в ИК. Обратите внимание, что листья деревьев намного ярче в инфракрасном диапазоне, чем стволы, но яркость инфракрасного излучения различных частей фасада здания одинакова в видимом и инфракрасном свете.

Что вы можете сделать, это создать две версии всех ваших текстур: RGB-текстуру для видимого света и альтернативную монохромную текстуру для инфракрасного. В обычном режиме вы используете текстуру RGB, а в ИК-режиме вы используете ИК-текстуру.

Вы также можете использовать разные источники света в ИК-режиме. Солнце излучает столько же инфракрасного света, сколько и видимый. Но искусственные источники света (такие как галогенные лампы или светодиоды) производят мало или почти не излучают ИК-свет, поэтому они не освещают инфракрасное излучение. С другой стороны, есть источники света, которые намного сильнее в инфракрасном диапазоне (например, открытый огонь) или видимые только в инфракрасном диапазоне (горячие объекты, которые недостаточно горячие, чтобы светиться красным. Или искусственные источники инфракрасного света. Знаете ли вы, что когда вы носить ИК-очки, вы можете использовать пульт дистанционного управления телевизора в качестве фонарика?). Различные условия освещения в нормальном и инфракрасном освещении могут быть интересным элементом игрового процесса.

Philipp
источник
Никогда не рассматривал источники ИК-света. Я полагаю, вы могли бы сделать некоторые аккуратные эффекты с переустановкой IRV, если смотреть прямо на источник ИК-сигнала ...
Микаэль Хогстрем
На фото выше показано ультрафиолетовое излучение, но оно все равно даст некоторые интересные эффекты для ультрафиолетового или инфракрасного ночного видения. Это заставило меня задуматься, потому что я недавно протестировал шейдер тепловизора, который выглядит довольно круто.
SICGames2013
2
@ SICGames2013 Почему вы думаете, что это ультрафиолет? Я получил это из немецкой статьи в Википедии об инфракрасном свете . Описание изображения говорит о том, что оно отображает длину волны от 700 до 1000 нм.
Филипп
Диапазон 700-1000 инфракрасный, но изображение выше выглядит ультрафиолетовым только из-за фиолетового. Инфракрасные камеры, такие как Sony или военные, имеют либо бело-сероватый контраст, либо чуть глубже в инфракрасном спектре с обнаружением тепла тела; отображение температурного диапазона человека с помощью цветовой палитры. С ночным видением Sony оно серое, но теперь днем ​​они наносят им зеленый оттенок. Военные приборы ночного видения имеют зеленый оттенок, чтобы пользователь мог лучше видеть изображения после того, как электроны попали на экран фосфора в задней части трубки.
SICGames2013
1
@ SICGames2013 Когда вы серьезно думаете, что он показывает ультрафиолетовый спектр, потому что изображение имеет фиолетовый оттенок, вы не поняли значение «инфра» или «ультра» в этих терминах.
Филипп