Автор оригинала: Mike Pan
Прежде всего, огромная благодарность Трою (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), а также различные ноды пост-обработки, которые работают только с отображаемыми данными (короткая версия: не используйте их).
Надеюсь это была веселая образовательная история.
Хорошо было бы упомянуть, что гама-коррекция изменяет градиент значений цвета в сторону большей дискретизации темных участков, оттого после коррекции мы видим, что светлые участки сцены почти(совсем) не изменились, а темные стали гораздо светлее)
Нубский вопрос под запарку, при использовании filmic — hdri карты попавшие в кадр сильно теряют в насыщенности цвета, какой виз ни юзай в настройках, я так понял у карт освещения так-же надо выставлять значения около 300-500?
Да не, это [i]забагато[/i] :)
Я больше 3 еще ни разу не использовал, правда меня и не сильно волновала интенсивность пикселей карты попадающих в кадр.
https://blender3d.com.ua/sozdaniye-futbolnogo-myacha-v-blender/ в этом уроке это критично)
ну я пока вижу выход с hdri, если они искажаются, делать их невидимыми для камеры, а потом одним семплом отрендерить только hdri с sRGB EOFT, потом совместить все в посте.
Короче — вопросов больше, чем ответов. Развиваться ещё и развиваться…
Все чудесней и чудесней. И хочется наедятся на продолжение уроков. и по использованию Filmic для Blender в том числе.
«… или преобразование цвета по умолчанию sRGB [b][u]EOFT[/u][/b].» ==> EOTF
Подскажите, пожалуйста, по вопросу о комбинировании: изображения с освещением от разных источников (TV, Sun, Lamps) только можно рендерить по отдельности (т.е., делать три рендера)? Или есть возможность отрендерить всю сцену один раз (со всеми источниками света) и потом как-то разбить результат на составляющие (три изображения)?
И так, и так можно. Слои рендера во втором случае.
Дякую! Треба буде порозбиратися ?
А если я как в статье зарендерил 3 картинки одной и той-же сцены, но с разными источниками света, то как мне их композить? Просто mix Color? Или что-то другое?
Прошу пояснения: нелинейных формат — изображение, а линейных формат — физическая модель с трассировкой лучей? (Да, я вернулся).
Освещение комбинировать нужно «ColorMix» с параметром «ADD»? Или это вообще делается в стороннем редакторе изображений?
Все хорошо кроме самого первого утверждения, с точки зрения физики цвет и свет не одно и тоже как пишет автор. Свет это конкретное физическое явление которое имеет скорость, давление, молекулярно-корпускулярный дуализм на худой конец. А вот цвет это восприятие которое рождается в мозге как реакция на видимую часть спектра света.
Подписываюсь!!! ?
отчего же? цвет это свет, который не поглотился предметом. У каждого цвета есть своя длина волны. Так что всё правильно ;)
при помощи цвета даже измеряют ускорение «красное смещение».
Вы не правы ?
Цвет — это побочный эффект. Его не существует, как и времени. Но это не мешает нам говорить, что огурцы зеленые, а в минуте 60 секунд.
да. цвет это следствие, а не причина. Т.к. по сути это «восприятие» Но всё же оно взаимосвязано, т.к. вполне себе описывается параметрами световой волны. Вот )
думаю именно это имел ввиду наш забугорный автор
Так все-таки где он производил манипуляции с сохраненными изображениями EXR, в блендере или в стороннем редакторе?)
Нубский вопрос под запарку, при использовании filmic — hdri карты попавшие в кадр сильно теряют в насыщенности цвета, какой виз ни юзай в настройках, я так понял у карт освещения так-же надо выставлять значения около 300-500?
Да не, это [i]забагато[/i] :)
Я больше 3 еще ни разу не использовал, правда меня и не сильно волновала интенсивность пикселей карты попадающих в кадр.
https://blender3d.com.ua/sozdaniye-futbolnogo-myacha-v-blender/ в этом уроке это критично)
ну я пока вижу выход с hdri, если они искажаются, делать их невидимыми для камеры, а потом одним семплом отрендерить только hdri с sRGB EOFT, потом совместить все в посте.
Освещение комбинировать нужно «ColorMix» с параметром «ADD»? Или это вообще делается в стороннем редакторе изображений?
Так все-таки где он производил манипуляции с сохраненными изображениями EXR, в блендере или в стороннем редакторе?)
Все хорошо кроме самого первого утверждения, с точки зрения физики цвет и свет не одно и тоже как пишет автор. Свет это конкретное физическое явление которое имеет скорость, давление, молекулярно-корпускулярный дуализм на худой конец. А вот цвет это восприятие которое рождается в мозге как реакция на видимую часть спектра света.
при помощи цвета даже измеряют ускорение «красное смещение».
Вы не правы ?
Цвет — это побочный эффект. Его не существует, как и времени. Но это не мешает нам говорить, что огурцы зеленые, а в минуте 60 секунд.
да. цвет это следствие, а не причина. Т.к. по сути это «восприятие» Но всё же оно взаимосвязано, т.к. вполне себе описывается параметрами световой волны. Вот )
думаю именно это имел ввиду наш забугорный автор
отчего же? цвет это свет, который не поглотился предметом. У каждого цвета есть своя длина волны. Так что всё правильно ;)
Подписываюсь!!! ?
Хорошо было бы упомянуть, что гама-коррекция изменяет градиент значений цвета в сторону большей дискретизации темных участков, оттого после коррекции мы видим, что светлые участки сцены почти(совсем) не изменились, а темные стали гораздо светлее)
«… или преобразование цвета по умолчанию sRGB [b][u]EOFT[/u][/b].» ==> EOTF
Подскажите, пожалуйста, по вопросу о комбинировании: изображения с освещением от разных источников (TV, Sun, Lamps) только можно рендерить по отдельности (т.е., делать три рендера)? Или есть возможность отрендерить всю сцену один раз (со всеми источниками света) и потом как-то разбить результат на составляющие (три изображения)?
И так, и так можно. Слои рендера во втором случае.
Дякую! Треба буде порозбиратися ?
Короче — вопросов больше, чем ответов. Развиваться ещё и развиваться…
Все чудесней и чудесней. И хочется наедятся на продолжение уроков. и по использованию Filmic для Blender в том числе.
А если я как в статье зарендерил 3 картинки одной и той-же сцены, но с разными источниками света, то как мне их композить? Просто mix Color? Или что-то другое?
Прошу пояснения: нелинейных формат — изображение, а линейных формат — физическая модель с трассировкой лучей? (Да, я вернулся).
Отличный урок! Рекомендую всем абсолютным новичкам, как я (это мой второй сделанный урок вообще в 3d, не считая базовых из курса). Отдельное спасибо Артему за труды — несмотря на то, что урок не помечен как для новичков, он комментирует и поясняет все свои действия, выполнять урок просто и понятно.
Ошибся темой(