Unreal: Просто шейдер для Interactive foliage

Сперва проверим включен ли Generate Mesh Distance FieldsИдем в Project Settings , И пишем Distance Fields в поисковике

Unreal: Просто шейдер для Interactive foliage

Открываем шейдер растения

Unreal: Просто шейдер для Interactive foliage

DistanceToNearestSurface и Radius: Система измеряет расстояние от каждой точки на поверхности объекта до ближайшей поверхности другого объекта в сцене .

Из расстояния вычитается радиус действия эффекта. Если расстояние < радиуса, значение становится отрицательным → значит вершина в зоне действия.

Subtract, 1-x, Saturate: Результат вычитания из радиуса (Radius - Distance) инвертируется (1-x) и ограничивается нодой (Saturate). Saturate ограничивает значение в диапазоне от 0 до 1. В итоге получается плавная маска:

  • 1: если поверхность находится вплотную к другому объекту.
  • 0: если поверхность находится дальше, чем заданный Radius.
  • Плавный переход между 0 и 1 внутри зоны радиуса.
Unreal: Просто шейдер для Interactive foliage

2 Расчет направления и силы "вдавливания"

  • DistanceFieldGradient: Этот нод определяет направление к ближайшей поверхности. Это вектор, который указывает, "откуда" должно идти воздействие.
  • Multiply: Направление (DistanceFieldGradient) умножается на маску близости (результат из первого шага). Это делает смещение сильным у самого объекта и плавно затухающим к краю радиуса.
  • Strength: Полученный вектор умножается на параметр Strength (Сила), который контролирует общую интенсивность эффекта "вдавливания".
Unreal: Просто шейдер для Interactive foliage

3. Применение эффекта к поверхности

  • VertexNormalWS: Этот нод представляет исходное направление нормалей вершин объекта (то есть, куда "смотрит" нормаль вершины).
  • Add: Add — складывает нормаль и смещение. То есть вершины двигаются вдоль своих нормалей с учётом дистанции.
  • Clamp (Ограничитель): Эта нодаограничивает итоговое значение, чтобы избежать слишком сильных или некорректных деформаций, которые могут вызвать визуальные артефакты.
Unreal: Просто шейдер для Interactive foliage

4 Дальше создаем Reroute Declaration node

Вызываем ее в нужном на месте

Unreal: Просто шейдер для Interactive foliage

Вызываем ее в нужном на месте

И присоединяем ее ко входу World PositionOffset

Если пин уже занят другими нодами , вызываем ноду Add складываем другие ноды с нашим Interactive

И все

Unreal: Просто шейдер для Interactive foliage

Идем в наш Character blueprints и делаем для него вот такую цилиндр

Unreal: Просто шейдер для Interactive foliage

Создаем для него материал

Переводим BlendMode d Masked , создаем с помощью клавиши 1 на клавиатуре параметр и ставим в нем 0 и подключаем его в OpacityMask и назначаем материал на цилиндр

Мой телеграмм канал в котором я рассказываю про анимацию, unreal и разработку инди проекта

6
9 комментариев