Кинематографические цвета и линейность света

Прежде всего, огромная благодарность Трою (Troy Sobotka), создателю аддона Filmic для Blender за помощь в освоении всего этого. Данный пост представляет собой краткий обзор моего понимания цвета и света, и того, как это применимо в моей работе в качестве художника.
С точки зрения физики, свет и цвет неотъемлемы друг от друга, это одно целое. Вы не можете иметь цвет без света и наоборот. Cycles подчиняется таким же законам. Поэтому, с этого момента, я буду использовать эти два термина взаимозаменяемо.
Давайте начнем с рендеринга классической коробки (Cornell Box) с одним источником света:

Вы можете заметить, что я выбрал несколько случайных мест на изображении и вывел их значения RGB рядом с ним. У нас красный, серый и чистый белый. Все идет нормально. Помните, что эта сцена освещена одним источником света расположенным вверху. Давайте посмотрим, что произойдет, когда мы удвоим силу света от 10 до 20.

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

Здесь я добавил еще одну строку, под первой. Значение display показывает нам то, что было на предыдущем изображении. Это значение взятое из изображения в формате JPEG. Значение sceneэто то, с чем фактически работал движок рендеринга. Оно представляет уровень энергии света в этом пикселе. Как мы видим, несмотря на то, что значение display не удваивалось, когда мы удвоили световую энергию, значение scene действительно удвоилось, как мы и ожидали. Также, значения не обрезаны до 1, что мы можем наблюдать на световой панели.
Поэтому, если значения сцены представляют собой «истинные» значения 3D-мира, почему же последнее изображение не показывает эти значения? И как компьютер преобразует эти значения сцены (scene) в значения отображения (display)?
Это все Гамма. История Гаммы сейчас не очень важна. Все, что вам нужно знать, это магическое значение 2.2. Это значение используется для преобразования цвета сцены в цвет дисплея, который мы видели ранее.
Не верите мне? Поднимите любое значение сцены на ½.2 и вы получите соответствующее отображаемое значение.
Но зачем это преобразование необходимо? Как выглядит эта сцена, если мы используем значение цвета сцены как есть? Другим словом, без каких-либо преобразований?

Тьфу. Мало того, что сцена слишком темная, так на нее еще и неприятно смотреть из-за высокого контраста.
Это первая концепция, которую мы должны изучить сегодня: значения, передаваемые сценой, и отображаемые значения – это две разные вещи. На простейшем уровне нам нужно применить гамма-преобразование к цветовому пространству сцены, чтобы получить приятное выглядящее изображение в отображаемом пространстве.
Итак, теперь мы знаем, как гамма-преобразование используется для изменения наших данных полученных в результате рендеринга в приятный образ. Давайте посмотрим, можно ли что-то сделать, чтобы еще больше улучшить вид. Вместо простого гамма-преобразования, давайте попробуем использовать справочную таблицу, что призвано придать изображению более кинематографический вид, особенно с filmic-blender.

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

В итоге: filmic-blender является мощным инструментом обработки изображений, который преобразует линейные значения, связанные со сценой, в значения нелинейного отображения.


Но filmic не может работать в одиночку. Для того, чтобы максимально задействовать его, сцена должна быть освещена физически точно. Cycles – это движок рендеринга основанный на трассировке лучей. Это означает, что для его работы источники света должны быть настроены на реалистичные значения. Реальный мир имеет очень широкий динамический диапазон, что мы не привыкли видеть в мире CG.
Всякий раз, когда вы освещаете сцену в Cycles, имейте в виду, что уровень энергии солнечной лампы измеряется в Вт/м². Все остальные лампы используют Ватты [источник].Это означает, что для фотореализма стандартная бытовая лампочка должна иметь силу света в диапазоне 60-80, а Солнце в диапазоне от 200 до 800 для дневного света, в зависимости от времени суток, широты и облачности.

Без надлежащих коэффициентов освещения ваша сцена будет выглядеть плохо даже с использованием filmic. Свет не будет достаточно отскакивать, и освещение будет выглядеть искусственно. На изображении выше (левое) для Солнца установлено низкое значение (50), потому что художники избегают засвеченных областей. Но когда мы устанавливаем солнце на более реалистичное значение (500), как мы сделали справа, распределение света становится гораздо более реалистичным и естественным.
Не бойтесь засветить изображение. Реальный мир редко вписывается в динамический диапазон камеры. Filmic особенно полезен в случаях с источниками света высокой интенсивности, потому что он способен приручить эти переэкспонированные области во что-то, что выглядит намного приятнее. Просто сравните комнату, сделанную с и без использования filmic, используя физически правильное соотношение света:

Посмотрите все эти уродливые блики и супер насыщенные горячие точки на левом изображении? Справа они все исчезли. Filmic дает вам новые возможности в освещении сцен и при этом не нужно беспокоиться о неприятных артефактах от пересветов.
Таким образом, мы узнали, что Filmic преобразует данные вашей линейной сцены в красивый нелинейный образ. Но это не значит, что вы должны использовать его на каждом изображении. Иногда вам нужен линейный образ для работы.


Давайте поговорим немного о линейности света.

Свет является аддитивным. Это означает, что я должен быть в состоянии отделить вклад каждого отдельного источника света, а затем добавить их, чтобы получить то же самое изображение, как если бы все источники света отображались вместе. Способность делать это и делать это правильно, имеет решающее значение для композитинга и визуальных эффектов, где свет и цвет часто корректируются драматически.
Итак, давайте попробуем проделать это с нашей сценой. Мы отрендерили каждый источник света на отдельном слое и сохраняли их как 32-битные TIFF-изображения:

Да, это совсем не сработало. Комбинированное изображение экстремально пересвечено.
Несмотря на то, что мы сохранили отдельные изображения как 32-битные tiff, чтобы значения цвета не были зажаты, формат tiff не записывал значения сцены. Когда изображение сохраняется, оно подвергается трансформации из значений сцены в значения отображения. Поэтому значения, которые мы видим, это не линейные значения сцены, а нелинейные значения отображения. Это происходит независимо от того, используется ли Filmic или преобразование цвета по умолчанию sRGB EOTF.
Это огромная проблема, потому что любая манипуляция с использованием света или цвета в настоящее время находится в нелинейном наборе данных, который не предназначен для манипуляций таким вот образом. Правильный способ заключается в сохранении и работе с данными в линейном формате, таком как EXR.

Давайте попробуем тот же процесс с EXR.

Теперь все работает так, как полагается! Использование линейных данных для компоновки – это действительно единственный способ убедиться, что ваша сцена остается физически точной.
В Blender все форматы файлов изображений соответствуют настройке управления цветом (например, sRGB или Filmic). За исключением EXR, который всегда сохраняется в линейном формате без каких-либо преобразований.
Поскольку источники света являются аддитивными, и каждый источник этой сцены мы отображаем на отдельном слое EXR, мы можем поиграть с цветом и вкладом каждого из них и получить различные результаты изображения без необходимости повторно выполнять

Это гибкость в работе с данными, записанными непосредственно из сцены.

Итак, мы, наконец, подошли к концу этого поста. Есть некоторые упрощения, которые я сделал для того, чтобы этот пост был более понятным, и еще есть много проблем, о которых я не упоминал. Говоря о цвете мы не изучали широкую гамму и различные цветовые профили. Говоря о создании контента есть что сказать об окружающей окклюзии и зажимах (clamping), а также различные ноды пост-обработки, которые работают только с отображаемыми данными (короткая версия: не используйте их).

Надеюсь это была веселая образовательная история.

Оригинал статьи>>

706 0 850 6
1
2017-11-25
Добрый день! Спасибо! Очень интересно! Надо покрутить Filmic и не лениться пробовать сцену с ним и без него...
RENDER.RU