Гамма, Цветовое Отображение И Linearworkflow

Краткий обзор и практическое применение Gamma и Color Mapping в сочетании с 3D max, V-ray и Nuke.

Гамма, цветовое отображение и LinearWorkflow



Первая часть.

Гамма.

Начинать

Эта история началась с того, что несовершенная технология отображения видеосигнала лучевой трубкой страдала сильными провалами на темной стороне, и дело не только в куках.

Программно компенсировать этот недостаток было невозможно, а оборудование было очень дорогим, поэтому мы решили внести коррективы в сам видеоматериал еще на этапе производства контента.

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

С тех пор компьютер и мы видим изображение по-разному.

Если у нас все «ок», то для компьютера картинка выглядит значительно светлее, просто перед тем, как показать нам изображение, сигнал проходит «естественную» обратную гамма-коррекцию на стороне монитора.

Современные мониторы умеют отображать изображение линейно, но нас не дает покоя «наследие былых времен» в виде кучи переэкспонированных фильмов и сериалов.

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

А теперь представьте, что вам нужно увеличить средний серый цвет вдвое.

В линейном пространстве «средний серый» равен 0,5*, суммарный результат 0,5х2 = 1,0, то есть вы получаете чисто белый цвет, что вполне логично, а не в линейном пространстве «средний серый» равен где-то с умом 0,72, умножаем на 2 и получается.

чушь получается, ребята.

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

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

Правило: Выносим поступающий материал в линейное пространство.

Мы работаем в линейном пространстве.

Гамма-коррекция применяется только к конечному изображению (и в большинстве случаев это происходит автоматически).

Пример перевода гаммы есть в описании Blender:

Гамма, цветовое отображение и LinearWorkflow

Кстати, переносить Normal Bump в линейное пространство не стоит, так как такие карты уже есть в «линейном»; при подключении таких текстур их необходимо исключить из коррекции.



Часть вторая.

Цветовое картографирование

Помимо сложностей с гаммой, у нас есть технологическая проблема, зависящая от возможностей дисплея.

У нас есть 2 основных способа отображения картинок – на бумаге и на экране.

Оба метода принципиально отличаются тем, что один отражает свет, а другой его излучает, но оба имеют очень ограниченный диапазон передачи интенсивности света по сравнению с тем, что мы можем видеть, поэтому изображение необходимо «сжать» до нужного диапазона.

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

ну, вы поняли идею.

Это делается из-за особенностей нашего восприятия.

Теперь объясню немного подробнее.

Наши чувства лгут нам.

Мы воспринимаем окружающий мир не линейно.

Чтобы увеличить ощущение чего-либо в 2 раза, нам недостаточно удвоить порцию.

нам нужно утроить или учетверить ее, то есть, если мы увеличим яркость источника света в 2 раза, то мы чувствую, что яркость увеличилась на 30%.

вот такие мы "ясные ребята".

Все чувства работают в логарифмической пропорции.

Обратный натуральный логарифм называется «экспонентой»… которая вырисовывается в настройках Color Mapping. Логарифм — основная функция преобразования интенсивности, будь то образ, порция соли или радость от количества денег в банке.



Гамма, цветовое отображение и LinearWorkflow

По этой причине мы можем четко различать полутона в темных областях и более безразличны к различиям в светлых областях.

Вот почему мы пренебрегаем высокими значениями цвета при сжатии.

Представьте себе, что в видимом нами мире разница яркости может заходить далеко за миллион, а монитор способен показывать разницу около 10 000. ColorMapping «сжимает» широкий диапазон яркости в ту небольшую область, которую может отобразить монитор или картинка, напечатанная на листе бумаги, делает это вместо наших глаз, а мозг интерпретирует картинку как готовое изображение.

Обратите внимание на график Двоичного Логарифма, из него становится видно, что в основном сжимаются светлые участки, а «тени» остаются неизменными, таким образом мы избавляемся от неприятных «бликов», мешающих работе начинающих визуализаторов.

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

.

Но для экспоненты достаточно одной отправной точки и кривую можно строить до бесконечности.

Поэтому в линейном цветовом пространстве с расширенным динамическим диапазоном (HDR), где нет ограничения по яркости, используется показатель степени, а в готовых — гамма.

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

ColorMapping и гамма-коррекция — две похожие вещи, но они выполняют разные функции.

Гамма призвана компенсировать «старое наследие», а ColorMapping сжимает «линию».

То есть в нашей работе мы учитываем два отдельных преобразования цвета и их не следует путать друг с другом.



Часть третья.

Практическая работа

Есть два основных способа создания изображений.

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

Второй готовит «сырой полуфабрикат», который «варят» до готовности в программе постобработки.

Если мы готовим файл для поста, то нам необходимо сохранить линейное пространство + высокий динамический диапазон цветов.

Мы рассмотрим оба метода на практике.

Путь №2. Дольше значит умело! В последней версии 3D Max вход и выход были удалены из настроек гаммы, поэтому вам необходимо установить общее значение гаммы на 2,2. 3D Mach сам перенесет поступающие текстуры в линейное пространство.

Настройки ColorMapping в 3D Max делаем следующим образом: Тип - Линейное умножение.

— Работаем в очереди Темный - 1. Яркий - 1. - эти значения оставим по умолчанию, при необходимости изменим их в посте.

Гамма - 2,2. — Дело в том, что эта гамма не будет применена к итоговому изображению и по сути останется — 1. потому что мы поставим галочку: Не влиять на цвета – установите флажок.

Делаем это для того, чтобы оставаться в линейном пространстве, но зная, что Враевский Сэмплер всегда не сообщает в темных местах, применяем гамму только к нему.

Таким образом, мы не потеряем детали в темных областях и останемся в «линии».

Зажим – отключить, так как нам понадобится весь диапазон яркости.

Такие изображения необходимо сохранять в форматах с плавающей запятой (32 бита), например openEXR. Теперь на выходе мы будем иметь относительно точную модель, представляющую цвет, почти как в реальности.

Готовим полуфабрикат в Nuke Признаюсь, я люблю пост за его творческую гибкость.

Когда вся основная, черновая работа сделана, остается только «покрутить» кнопки по вкусу.

Давайте опустим детали, специфичные для конкретных проектов, и перейдем сразу к ColorMapping для Nuke. Итак, мы имеем «линейную» картинку с выгоревшими светлыми участками.

Вспоминая мой рассказ об особенностях восприятия, повторим аналогичный трюк.

Причем механика работы будет аналогична типу Рейнхарда в ColorMapping V-ray. Нам понадобятся 2 узла: Grade и Log2Lin. Оценка будет действовать как множитель для всего изображения или значения ISO камеры, если вам так удобнее.

Log2Lin сожмет образ, но сначала его нужно настроить: Операция - lin2log. Черный - 0 Белый - 255 Гамма - 1 Микс - 0,95 «Сжимая» яркость, мы делаем картинку темнее, поэтому в настройках нода Grade можно сразу установить значение Gain равное 5. Узел Mix Log2Lin будет выполнять ту же функцию, что и значение Burn в ColorMapping 3D Max, только в другом направлении, то есть, если значение Burn равно 0,3, установите Mix примерно на 0,7. Путь №1. Никаких танцев.

Если вы избегаете Post, то все преобразования цветов вы можете делать в ColorMapping, но для этого вам придется делать тестовые рендеры.

Тип преобразования выбираем - Ринхард, так как оно имеет дело с усреднением между линейкой и экспонентой через параметр Burn value. Если у вас «выгоревшие» цвета, то просто уменьшите значение Burn. Гамма - 1 Зажим - 1 Не влияет на цвета – снимите галочку.

Поскольку Sampler теперь будет разбрасывать сэмплы на основе видимого изображения, нам нужно снизить порог шума в DMC Sampler с 0,01 для «линии» примерно до 0,003. Некоторые ребята вместо того, чтобы снизить уровень шума, просто увеличивают гамму на 2,2 и в настройках программы «Гамма» ставят единицу в поле «Вывод».

Я считаю, что это идеологически неверно, хотя это тоже работает. _______________________________________________________________________________ * Здесь и ниже речь идет о значениях цвета в формате Float Point, где 0=черный и 1=белый.

Теги: #Работа с 3D графикой #3d графика

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.