Запекание карты displace с процедурной текстуры

Одна из обязательных составляющих любого качественного рендера — красивая карта неровностей. Мелкие царапины, повреждения и потертости придают модели естественный вид, она не выглядит так, словно попала в сцену прямиком с завода-изготовителя.

Микрорельеф поверхности можно формировать как геометрией («скульпт» или же точечное редактирование модели), так и картами — статическими (подготовленными в графическом редакторе) и процедурными (созданными в связке с нодами — текстурными генераторами).

Использование процедурных текстур для создания микрорельефа методом «дисплейса» обладает всеми плюсами (безразмерность, трехмерность, уникальность, настраиваемость) процедурных текстур, но также получает в наследство и их главный минус — скорость рендера снижается т.к. для генерации текстуры требуется производить дополнительные расчеты.

Микрорельеф царапин создан методом "дисплейса" с помощью процедурной генерации текстур
Микрорельеф царапин создан методом «дисплейса» с помощью процедурной генерации текстур

Чтобы увеличить скорость рендера, процедурную текстуру можно «запечь» — превратить в статическую растровую текстуру, которая в процессе рендера уже не будет требовать дополнительных ресурсов. Таким образом можно выиграть от 5 до 30 % (в зависимости от сложности сгенерированной карты) скорости рендера.

«Запекание» осуществляется следующим образом:

  1. В сцене нужно оставить только один объект, тот для которого будет проводиться процедура «запекания». Остальные меши нужно скрыть (H).
  2. Открыть UV/Image-editor, создать новое изображение нужного разрешения. Галочка Alpha должна быть установлена.
  3. Для меша сделать развертку (u — unwrap) на созданное в п.2 изображение.
  4. В Node Editor:
    1. От нода Material Output отсоединить все.
    2. Добавить нод Emission (Shift+a — Shaider — Emission) с силой Strngth = 1.
    3. Соединить выход Emission(Emission) со входом Surface(Material Output).
    4. Выход процедурной карты — генератора микрорельефа (то, что ранее подавалось на вход Displace(Material Output)) соединить со входом Color(Emission).
    5. Добавить нод Image Texture (Shift+a — Texture — Image Texture). В качестве источника изображения указать изображение, созданное в п. 2.
    6. Добавить нод UV Map (Shift+a — Input — UV Map). Указать карту, созданную в п. 3.
    7. Выход UV(UV Map) подать на вход Vector(Image Texture).
    8. Выходы нода Image Texture не должны быть никуда соединены. Нод должен быть выделен.
  5. Во вкладке Render в меню Bake выбрать BakeType = Emit.
"Дисплейс" на основе процедурных текстур подготовлен к "запеканию"
«Дисплейс» на основе процедурных текстур подготовлен к «запеканию»
  1. Нажать Bake, дождаться окончания процесса «запекания».
  2. После завершении запекания в UV/Image Editor на изображение с разверткой наложится «запеченная» карта неровностей. Сохранить готовое изображение в файл в формате с поддержкой прозрачности (например — png).
  3. Пересобрать ноды для конечного рендера:
    1. В ноде Image Texture (п. 4.e) указать в качестве источника сохраненную в файл карту неровностей. Выход Color(Image Texture) соединить со входом Displace(Material Output).
    2. На остальные входы нода Material Output (Surface, Volume) вернуть те соединения, которые подавались туда до начала процесса запекания.
    3. Ноды — генераторы неровностей процедурными текстурами можно удалить.

В итоге карта неровностей, созданная процедурными текстурами заменена на статическую текстурную карту.

Рендер карты рельефа на основе процедурных текстур (слева) и с "запеченной" картой (справа)
Рендер карты рельефа на основе процедурных текстур (слева) и с «запеченной» картой (справа)

С каким разрешением лучше всего запекать микрорельеф? Все зависит от итогового качества, которое нужно получить при «запекании». Пример «запекания» карты рельефа в текстуры разного разрешения:

«Запекание» карты неровностей на текстуры различного разрешения