Преобразование цвета в Blender из цветового пространства Linear в sRGB и обратно

При работе с цветом Blender оперирует значениями из линейного (Linear) цветового пространства. Это позволяет демонстрировать цвета и градиенты в более привычном для человеческого глаза виде, однако этот момент нужно всегда учитывать при работе напрямую с цветом в Blender.

Если мы попробуем вывести значения цветов пикселей для изображения красного цвета, полученного, например, с нода композитинга Viewer Node, мы получим набор значений в линейном цветовом пространстве.

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

Так происходит потому, что обычно для изображений используется цветовое пространство sRGB, а не Linear, как мы получили на выходе в Blender. Для того чтобы получить значения пикселей изображения в цветовом пространстве sRGB, пригодном для сохранения, их нужно преобразовать.

Определим функцию, преобразующую значение из цветового пространства Linear в цветовое пространство sRGB:

В параметре функции мы будем передавать значение цвета из цветового пространства Linear в диапазоне от 0.0 до 1.0. Функция возвращает значение в цветовом пространстве sRGB в диапазоне от 0 до 255.

Например, для красного цвета:

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

При необходимости можно сделать и обратное преобразование из цветового пространства sRGB в Linear.

В эту функцию в параметре мы передаем цвет из цветового пространства sRGB в диапазоне от 0 до 255, а на выходе получаем цвет в цветовом пространстве Linear в диапазоне от 0.0 до 1.0.

0 0 голоса
Article Rating
Подписаться
Уведомить о
guest

0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии