Упаковка текстурных карт в одну многоканальную текстуру с помощью Gimp.

30. апреля 2021 2D 0

На примере использования Gimp 2.10.x рассмотрен вариант объединения трёх текстур (metallic, roughness и ambient occlusion) в одну. Мнемоническое название: MRAO.

Метод применяется для упаковки в одну текстуру нескольких текстурных карт, вместо использования набора из нескольких текстур, что позволяет экономить память. Каждая текстурная карта располагается на конкретном цветовом канале (RGBA): красный, зелёный, синий и альфа. Тем самым в одну комбинированную текстуру можно упаковать сразу четыре текстурные карты. Например: metallic, roughness, ambient occlusion и displacement (height). Таким же образом можно упаковывать различные маски в оттенках серого (светимость, непрозрачность, SSS и прочие). Комбинированные многоканальные текстуры активно используются в Blender и игровых движках (Unreal Engine, Godot Engine и прочих).


В Gimp изменение информации для каждого цветового канала в отдельности осуществляется с помощью инструмента Colors/Components/Compose.

Последовательность действий выглядит следующим образом:

  • Создать новое изображение желаемого размера: File/New или Ctrl + N.
  • В появившемся окне развернуть выпадающее меню Advanced Options и переключить Color space на Grayscale (оттенки серого). Это связано с тем, что информация в цветовых каналах представлена в оттенках серого, поэтому изображения в слоях, которые требуется поместить в цветовые каналы, должны быть в оттенках серого. Только тогда Compose сможет обработать такие слои.
  • Подтвердить создание.
  • Добавить изображения, которые требуется упаковать по каналам в одну текстуру.

Каждая текстурная карта должна располагаться на отдельном слое. При этом порядок расположения слоёв имеет значение, но в инструменте Compose есть возможность переопределить соотношение слоёв к цветовым каналам в желаемом порядке. Название слоёв не имеет значения, но для удобства лучше дать соответствующие имена (Metallic, Roughness, AO). Отсчёт слоёв снизу вверх:

  1. Первый слой — синий канал.
  2. Второй — зелёный.
  3. Третий — красный.
  • Теперь информацию со слоёв нужно поместить в соответствующие цветовые каналы. Это осуществляется с помощью ранее обозначенного инструмента Colors/Components/Compose:

После подтверждения будет создано новое изображение, которое откроется в отдельной вкладке. Информация со слоёв будет помещена в отмеченные цветовые каналы, что и требовалось:

Стоит отметить, что текстура будет иметь причудливый вид, это нормально.

Теперь текстуру можно сохранить в PNG или Tif для дальнейшего использования.

Пример импорта в Unreal Engine 4.

Имя текстуры: T_WoodenFloor_MRAO.png

Для UE4 подобные текстуры-маски должны быть в линейном цветовом пространстве. В редакторе ассетов в блоке Texture необходимо снять галку sRGB и сохранить изменения.

Удостовериться, что информация в каналах именно та, которая требовалась:

Теперь текстуру можно использовать в материале:

Бонус.

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

Colors/Components/Extract Component

Если требуется извлечь RGBA-каналы или определённые компоненты в отдельные слои, то для этого подойдёт инструмент Colors/Components/Decompose.

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

Подобную «распаковку» применяют для создания различных масок на базе извлечённых каналов-слоёв. Либо можно заменить желаемый слой и собрать изображение с помощью Compose с изменённой информацией для того или иного канала.


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *