Я очень благодарен, что Epic Games отдали бесплатно ассеты в народ с Paragon после закрытия проекта. Я регулярно подглядываю там решения. Если вы до сих пор туда не заглядывали - очень советую.

Сегодня хотел бы рассказать о SplineThicken, который они использовали достаточно часто на проекте.

SplineThicken — это material function из категории WorldPositionOffset. Идея простая: вместо того чтобы моделить полноценную трубу/цилиндр с кучей сегментов, вы берёте почти плоскую полоску геометрии (тонкий "лист" вдоль сплайна) и в вершинном шейдере через World Position Offset смещаете вершины так, будто это круглый объект — с учётом положения камеры.

SplineThink_Mesh_02.mp4

Результат — объект визуально читается как объёмная труба, шерстинка или лента, хотя реальной геометрии там в разы меньше.

Где можно применить: кабели и провода, трава и листва, шерсть/мех, VFX-ленты и щупальца,тонкие ветки.

Как это работает Функция дополнительно поворачивает "раскрытие" полосы в сторону камеры и параллаксит текстуру, имитируя выпуклость поверхности, а не просто плоскую полоску. Отсюда и параметры для параллакс-коррекции текстуры:

UVs for Thickness — отдельный UV-канал для градиента толщины (tip-to-base), то есть куда полоска сужается/расширяется UVs for Texturing — UV для собственно текстуры объекта; тут же задаётся масштаб для параллакс-коррекции На деле на эффектах чаще всего хватает одной UV и всё работает хорошо

DeriveNormalZ — булевый флаг: считать ли Z-компоненту нормали через DeriveNormalZ для более корректного освещения

image.png

Подготовка геометрии Меш должен быть тонкой полосой/лентой. Частота вдоль пути важнее, чем ширина полосы — как и с честным sweep, редкие сегменты дадут заметную огранку на изгибах. Держите UV аккуратно размеченным: один канал под толщину/градиент, другой — под текстурирование, иначе параллакс-коррекция потечёт криво.

SplineThink_Mesh_01.mp4

Частые проблемы: Кривые нормали и битое освещение. Первое, что стоит проверить — галочка Tangent Space Normal в настройках материала. Если её не выключить, нормали после WPO-смещения считаются неверно и свет "ломается" при повороте камеры. Артефакты на резких изгибах и острых ракурсах. Техника даёт швы и интерполяционные "скачки" при малом радиусе кривизны сплайна и экстремальных углах обзора. Для важных крупных планов лучше использовать реальную геометрию — SplineThicken лучше всего работает на плавных, широких кривых и на фоновых/среднеплановых объектах. Если объект собран из сегментов сплайна (например, цепь из отдельных звеньев), не ждите бесшовности при облёте камерой — стыки будут видны на некоторых углах.

**Где можно найти примеры:

Paragon: Agora and Monolith Environment**

…/Content/ParagonProps/FX/Particles/Turret/P_SentryTurret_Beam_CharacterImpact

…/Content/ParagonProps/FX/Materials/Splines/M_SplineThickenSmoke_Trails_Master_Tower

Вот ещё сборная всех способностей персонажей Paragon