Глава 3. Анимированные материалы для персонажей
Исходный размер 2480x3500

Глава 3. Анимированные материалы для персонажей

Данный проект является учебной работой студента Школы дизайна или исследовательской работой преподавателя Школы дизайна. Данный проект не является коммерческим и служит образовательным целям

3.1. Общие принципы и методологии

Целью применения анимированных шейдеров для изменения внешнего вида персонажа является визуализация изменения внутреннего состояния того или иного героя, магических эффектов, повреждений и взаимодействия с окружением.

Анимированные материалы предоставляют инструменты для выражения этих состояний в реальном времени без создания множественных вариантов моделей или сложных спецэффектов.

Глава 3 раскрывает основные техники и методы создания динамических шейдеров для персонажей в проекте, основываясь на наиболее распространенных и эффективных подходах: UV-анимации, вертексной анимации, динамических масках, анимации многослойных материалов.

3.1.1. UV-анимация

UV-анимация представляет собой один из наиболее гибких и производительных методов создания движущихся или циклических эффектов на поверхности персонажей.

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

Рассмотрим UV-анимацию на примере создания эффекта движущихся энергетических потоков или же узоров по телу персонажа.

Узоры по телу | хаотичное движение

big
Исходный размер 875x488

Демонстрация работы собранного шейдера.

Для создания хаотичных узоров можно использовать генерируемые в UE5 шумы, например, ноду Noise в Material Graph, или же добавить иную текстуру нойза через Texture Sample, чтобы немного облегчить ресурсоемкость эффекта.

Оба варианта имеют как свои плюсы, так и минусы, а именно, в первом случае удобно подключить генерируемый шум к Absolute World Position и избавиться от необходимости подгонять текстуру под UV модели так, чтобы она хорошо проигрывалась на швах объекта [поскольку создается волюметрический 3d нойз].

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

При использовании текстуры шума исчезает вопрос о многообразии форм создаваемых эффектов, поскольку Texture Sample можно преобразовать в параметр и менять карты нойза в реальном времени. Однако в данном случае нужно будет задуматься о том, как именно проецировать текстуру на 3д объект так, чтобы не получать никаких артефактов.

Исходный размер 1000x491

Демонстрация работы собранного шейдера.

Разберем, из чего состоит данный шейдер:
Исходный размер 1500x690

Нодовая система шейдера — детали.

Глобально данная магическая аура состоит из трех основных блоков: генерация шума [блок нод Generated Noise], создание блесток [Glitter], управление цветом шума [Height Gradient], и дополнительные модификаторы.
0

Нодовая система шейдера — детали.

post

Главные ноды, вокруг которой строится работа данного эффекта, - Noise, к которому подключен Panner.

В данном случае ко внутренним настройкам шума можно подойти с художественной точки зрения и выставить их в соответствии с личными эстетическими предпочтениями.

Для того, чтобы Noise распространялся по объектам вне зависимости от их UV развертки, но был привязан к модели, в инпут World Position приходит результат вычитания Object Position из Absolute World Position

Далее в примере идет связка нод, регулирующая некоторые визуальные характеристики полученного паттерна. Помимо использования математического выражения Power для контролирования контраста можно применить функцию CheapContrast.
CheapContrast — это оптимизированная функция контрастности, которая использует интерполяцию для усиления или ослабления контраста с минимальными вычислительными затратами.
0

Нодовая система шейдера — детали.

Данная цепочка нод создает динамическую маску для «блестящих частиц», которая следует за движением камеры и как бы «прилипает» к экрану.

В первой половине кода создается маска, по которой впоследствии будет двигаться текстура блесток.

ScreenPosition - это нода, которая выводит UV-координаты для каждого пикселя в пространстве экрана в текущем кадре. Если применить ее к текстуре и накинуть получившийся материал на объект, то он будет проецироваться на экран, оставаясь таким же с любой точки обзора.

ScreenResolution задает разрешение видимой области окна просмотра. Если окно имеет размер 1920×1080 пикселей, нода вернет вектор (1920, 1080).

В связке с математическим выражением Divide и перемножением на Screen Position это позволяет контролировать и масштабировать размер “экранных координат” текстуры-маски, которая добавляется позже.

Panner в данном случае задает небольшое движение текстуры, чтобы эффект был заметен даже в тех случаях, когда камера не двигается.

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

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

Исходный размер 2242x749

Нодовая система шейдера — детали.

Данная часть нодовой системы позволяет добавить градиент относительно объекта вдоль оси Z, что осуществляется благодаря вычитанию Object Position из Absolute World Position.

Multiply устанавливает плавность перехода цвета, в то время как add задает смещение по оси Z [точка старта градиента].

Исходный размер 2378x906

Нодовая система шейдера — детали.

Далее все части шейдера собираются вместе. Выход Noise-a становится маской, по которой с помощью ноды Lerp смешивается базовый цвет / текстура модели и цвет анимированных узоров.

Результат работы по созданию блесток подключается к Emissive Color. Также по необходимости добавляются дополнительные модификаторы цвета, яркости, контрастности.

Исходный размер 1100x459

Демонстрация работы собранного шейдера.

Узоры по телу | контролируемое движение

Для создания контролируемого движения различных узоров и паттернов зачастую используются заранее нарисованные маски или даже покадровые секвенции, подчеркивающие те места на UV 3d объекта, над которыми должны происходить дальнейшие изменения.
Исходный размер 1500x694

Демонстрация работы собранного шейдера.

Пример 1

Для первого эксперимента в программе Substance Painter была заранее отрисована маска Opacity, которая хранилась в Alpha канале текстуры Base Color.

Также стоит отметить, что в данном эксперименте разберется работа с Overlay Material как одним из вариантов добавления различных эффектов объекту.

Созданный в Substance Painter-е паттерн для последующей анимации.

Глава 3. Анимированные материалы для персонажей
Проект создан 04.12.2025
Глава:
1
2
3
4
5
6
Мы используем файлы cookies для улучшения работы сайта НИУ ВШЭ и большего удобства его использования. Более подробную...
Показать больше