Глобальная замена материалов в сцене для рендер-движка EEVEE

Часто бывает нужно получить рендер всей сцены с одним материалом. Например для “глиняных” рендеров (clay render) или рендеров сетки (wireframe render). Если для рендер-движка Cycles в настройках View Layer Properties – Override предусмотрена возможность глобально заменить все материалы на один, то для рендер-движка EEVEE такой возможности нет.

Быстрое переопределение материалов для рендер-движка EEVEE можно сделать с помощью небольшого скрипта, как это показано в следующем видео:

Автор скрипта и видео Виталий Сокол

Для создания системы быстрой замены материала используется следующий скрипт:

При выполнении, этот скрипт создает нодовую группу и вставляет ее в каждый материал перед завершающим нодом “Material Output”.

Материал до выполнения скрипта:

Материал после выполнения скрипта:

Внутри созданной скриптом нодовой группы находятся нод “Diffuse” связанный через нод “Mix” со входом, в который транслируется исходный материал, наложенный на объект. “Diffuse” – это собственно тот шейдер, на который будет заменяться основной материал объекта. Вместо него можно собрать любую комбинацию нод для получения нужного материала замены. Главное – чтобы она размещалась внутри данной нодовой группы.

Для того, чтобы нодовая группа заработала – основной материал заменился на материал, указанный в группе, нужно изменить значение “Factor” нода “Mix Shader” с 0 на 1. Нод “Mix Shader” выступает в качестве переключателя: Factor = 0 – используется материал объекта, Factor = 1 – используется материал группы.

При переключении значения “Factor” в единицу мы увидим, что абсолютно на всех объектах сцены их исходный материал поменялся на материал группы (Diffuse). Это происходит потому, что нодовая группа работает как “инстанс” или “ссылка”, то есть ее содержимое все время остается одинаково, независимо от того, в каком материале эта нодовая группа размещается.

Благодаря тому, что скрипт помещает данную нодовую группу в каждый материал сцены, мы получаем возможность легко заменять все материалы объектов на один материал и обратно, просто меняя значение “Factor” нода “Mix Shader” внутри группы.

Nikita

Автор: Nikita

Blender add-ons developer and articles writer.