Time+Sine. Анимируем в материале. UE
Для собственного проекта мне необходимо было имитировать волны на воде. Волны круговые, возникающие при падении камня например. Задачка не сложная, соберем конструкцию в материалах. Расскажу по шагам, кому не интересно словоблудие, можете перейти в конец, там готовый сетап.
В основе RadialGradientExponential.
К нашему кружочку добавим не хитрую конструкцию из Time и Frac.
Time дает отсчет времени от нуля, до конца игры. Frac - выделяет дробную часть. То есть мы получаем на выходе значения от 0.000, до 0.999. После чего возвращаемся на круг с 0.000.
Кстати, если вам нужно посмотреть какие значения принимает тот или иной пин, вы можете использовать DebugScalarValues. Вместо Scalar может быть например Vector.
Как-то не очень приятно мигает наш материал. Можем попробовать умножить результат синуса на саму же радиальную маску.
Есть не очевидная проблема. (или не проблема, кому как нравится)
Дело в том, что значение синуса принимает [-1;1]. В моем случае, это было не совсем то, что мне нужно. А значит нужно запихнуть наш синус в положительные значения. Для этого нужно добавить 1 и умножить на 0.5.
Практически готово! Осталось прикрутить управление, чтобы можно было настраивать наш материал. Умножим Time на какой-то параметр, чтобы управлять скоростью.
Добавим еще одно умножение на скаляр после синуса, чтобы управлять количеством волн. По желанию еще можно добавить Power чтобы управлять шириной волн и градиентом на границе.
Ну собственно и готово. Для веселья можем толкнуть все это дело в WPO, чтобы получить анимацию в объеме. Напомню, что для WPO необходимо плотная геометрия. На плейне из 4 точек не сработает.
Дальше эту штуку можно использовать в партиклах или как функцию в большом материале. В моем случае будет всего одно место на стилизованной воде, где будет использоваться данная конструкция, поэтому я просто интегрировал в шейдер воды.
Спасибо за внимание! Если вы считаете, что материал был интересным или полезным, то в качестве благодарности вы можете добавить мою игру в список желаемого:) Это милый симулятор кухни на колесах. В следующей статье я расскажу чуть подробнее об этой игре.