В этом уроке я покажу настройку node, которую я создал для получения NPR (Non-Photorealistic Rendering) из 3D-модели с материалами и текстурами PBR.
Видеоверсия этого руководства в настоящее время недоступна на этом языке, но доступна на английском языке при выборе соответствующего языка в верхней части страницы.
Текстовая расшифровка видео
Здравствуйте! В этом уроке я покажу настройку node, которую я создал для получения NPR (Non-Photorealistic Rendering) из 3D-модели с материалами и текстурами PBR. В частности, мы будем использовать 3D-модель электронной схемы, чтобы получить рендеринг, похожий на иллюстрации в журналах по электронике, которые я читал много лет назад.
Сначала я покажу разницу между рендерингом, полученным после импорта 3D-модели, у которой уже подключены PBR Textures к node Principled, и нефотореалистичным рендерингом, в котором используется только Base Color Texture и соответствующим образом настроенный node Principled.
Этот урок был создан в Blender 4.1, и используемый движок рендеринга это Cycles.
Урок будет следовать следующему плану:
Мы отключим существующее освещение в сцене.
Мы выполним начальную настройку стандартных входных параметров node Principled.
Мы отключим некоторые параметры Ray Visibility, чтобы устранить Color Bleeding и другие нежелательные эффекты затенения.
Мы включим Freestyle, чтобы добавить контур геометрии на этапе постобработки.
В конце мы снова изменим входные параметры node Principled, чтобы создать простое затенение на основе ориентации граней объектов относительно камеры и сделать внешний вид геометрии менее монотонным.
Первое, что нужно сделать, это отключить освещение сцены.
Исходный PBR рендеринг был создан с использованием HDR Texture в World Background и источника света Sun, но в данном случае сам объект будет выступать как источник излучения, чтобы обеспечить равномерное освещение всех частей объекта.
Поэтому удалите существующие источники света в сцене и установите интенсивность освещения World равной 0.
В режиме Rendered в окне 3D View мы ничего не увидим именно потому, что в сцене отсутствуют источники света.
Далее мы изменим подключения node Principled. Наша цель состоит в том, чтобы получить равномерное освещение объектов, сохранив цвета и текст, присутствующие в Albedo Texture.
Отключите Albedo или Base Color Texture от входа Color node Principled и подключите её к входу Emission, где можно оставить значение интенсивности равным 1.
Textures Metallic и Normal нам не нужны, поэтому их можно удалить.
Мы также удаляем Roughness Texture и устанавливаем для этого параметра в node Principled постоянное значение 1.

Эти операции необходимо выполнить для всех Materials, присутствующих в сцене, которых в данном случае два: один для printed circuit board и один для электронных компонентов.
В режиме Rendered в окне 3D View теперь все элементы будут видны ясно при плоском освещении. Однако на этом этапе освещение слишком равномерное, на соседних объектах присутствуют цветные отражения, то есть Color Bleeding, и отсутствуют контуры Freestyle. Давайте решим эти проблемы по очереди, начиная с Color Bleeding.
Откройте вкладку Object в Properties editor для одного из объектов сцены и перейдите в раздел Visibility.
В этом разделе отключите все параметры во вкладке Ray Visibility, кроме параметра Camera.

Эту операцию также необходимо выполнить для всех объектов сцены, присутствующих в проекте.
Таким образом, единственными световыми лучами в сцене останутся лучи, излучаемые поверхностями и направленные к камере, поэтому больше не будет наблюдаться нежелательных эффектов Color Bleeding, которые были видны ещё несколько мгновений назад.

В режиме Rendered в окне 3D Viewport мы получаем результат, который уже сам по себе выглядит интересно, но его можно улучшить, добавив линии для выделения контуров объектов.
Для этого идеально подходит модуль Freestyle. Его можно включить в соответствующем разделе вкладки Render в Properties editor. В этой вкладке также можно задать режим реализации толщины линий и, в случае выбора абсолютного режима, толщину линий в пикселях.
Во вкладке View Layers теперь появится раздел Freestyle, где можно настроить множество других параметров, но сейчас я не буду их рассматривать. Рендеринг, который я показал в начале урока, был выполнен просто путём активации Freestyle с настройками по умолчанию.


Однако Freestyle применяется к уже завершённому рендерингу, поэтому его эффект не виден в режиме Rendered окна 3D Viewport. Поэтому давайте выполним первый рендеринг, чтобы увидеть результат, достигнутый на этом этапе.

Чтобы получить затенение на основе ориентации граней объектов относительно камеры, я буду использовать node Layer Weight в режиме Facing в качестве коэффициента смешивания между двумя различными версиями Base Color Texture.
Перед реализацией окончательной настройки node я покажу эффект работы node Layer Weight Facing, используя два node Emission с сильно различающимися цветами, подключённых к node Mix Shader, и применяя Layer Weight Facing в качестве коэффициента смешивания.
Убедитесь, что вы подключаете выход Facing node Layer Weight, а не выход Fresnel, к входу Factor node Mix Shader.
Как видно, изменяя значение параметра Blend, можно использовать разные шейдеры в зависимости от ориентации граней относительно камеры.
Однако переход между двумя шейдерами получается недостаточно чётким. Чтобы сделать его более резким, вставим node Math в режиме Greater Than между выходом Facing и входом Factor.

Второй параметр node Math будет использоваться как пороговое значение для переключения между одним шейдером и другим.

Чтобы получить одинаковое значение для параметра Blend node Layer Weight и второго входа Value node Greater Than, добавим в схему node Value из группы Input и подключим его к этим двум входам.
Изменяя это значение даже очень незначительно, можно получить хороший коэффициент смешивания для добавления неградиентного затенения граней объектов.

Мы будем использовать этот коэффициент смешивания, чтобы создать немного более тёмную версию Albedo Texture в зависимости от ориентации граней объектов.
Теперь удалите из схемы два node Emission и node Mix Shader, снова подключив node Principled к node Material Output.
Чтобы получить более тёмную версию Albedo Texture, подключите выход Color node Base Color Texture к node Brightness Contrast, установив значение Brightness равным -0.2.

Добавьте node Color Mix и подключите выход Color node Albedo Texture к одному из входов Image, а выход node Brightness Contrast к другому входу Image.

Подключите выход node Greater Than к входу Factor node Color Mix, который только что был добавлен в схему.
В завершение подключите выход node Color Mix к входу Emission Color node Principled.
Эту настройку необходимо повторить для всех Materials, присутствующих в сцене. Однако предпросмотр, видимый в окне 3D Viewport в режиме Rendered, ещё не является окончательным, так как он не включает эффект Freestyle.
Запустите рендеринг, чтобы увидеть настоящий итоговый результат.

Новое затенение имеет как положительные, так и отрицательные стороны.
Положительный аспект заключается в том, что благодаря Freestyle и node Facing объекты больше не выглядят слишком плоскими, поэтому их объём воспринимается значительно лучше.
Отрицательный аспект состоит в том, что это затенение значительно изменяется в зависимости от ориентации объектов относительно камеры, поэтому может потребоваться некоторое время для настройки node Value или ориентации объектов.
Также следует отметить, что node Greater Than, использованный здесь как пороговый node для резкого разделения цвета в зависимости от ориентации граней, может давать нежелательный результат в анимациях. В этом случае можно рассмотреть возможность удаления node Greater Than, чтобы получить более плавные переходы.
На этом всё для данного урока! Надеюсь, он оказался полезным! До встречи в следующий раз!