Туториал по созданию дождя в Unreal Engine 4 Niagara

Для этого понадобится сама капля и комплексный эффект всплеска.

Разработчики игры Rogue Spirit из студии Kids With Sticks опубликовали в своём блоге туториал по созданию эффекта дождя в Unreal Engine 4 Niagara. Выбрали из текста главное.

Капли дождя

Всё начинается с создания простого материала для капель дождя.

Туториал по созданию дождя в Unreal Engine 4 Niagara

Затем создайте новую систему Niagara и убедитесь, что вы добавили следующие параметры:

  • Color (LinearColor);
  • SpawnRate (float).
Параметры нужны для вывода значений за пределы Niagara
Параметры нужны для вывода значений за пределы Niagara

Создайте пустой эмиттер со следующими модулями.

Emitter Properties

Для просчёта столкновений капель с землёй используйте CPU симуляцию — у Sim Target выберите показатель CPUSim.

Убедитесь, что у вас поставлена галочка на Fixed Bounds — это нужно для того, чтобы границы эмиттера не пересчитывались на каждом тике.

Туториал по созданию дождя в Unreal Engine 4 Niagara

Emitter State

Просто используйте системные настройки без каких-либо изменений.

Spawn Rate

Убедитесь, что вы применили параметр SpawnRate от User.SpawnRate. Благодаря этому вы сможете увеличивать или уменьшать интенсивность дождя во время игры.

Туториал по созданию дождя в Unreal Engine 4 Niagara

Initialize Particle

  • Поставьте Lifetime Mode — Random.
  • В поле Color выберите User — благодаря этой настройке можно менять цвет во время игры.
  • Sprite size mode — Random Non-Uniform.
Туториал по созданию дождя в Unreal Engine 4 Niagara

Box Location

Это важный пункт, так как система будет прикреплена к герою. Для каждого проекта нужно подобрать своё значение, которое будет отвечать задачам игры.

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

Add Velocity

Скорость прибавляется сразу после спавна частицы. Если в вашей игре предусмотрен ветер, вы можете добавить его вектор. Можно использовать направление ветра в качестве системного параметра, чтобы управлять этим значением.

Туториал по созданию дождя в Unreal Engine 4 Niagara

Collision

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

Туториал по созданию дождя в Unreal Engine 4 Niagara

Particle State

Этот параметр нужен для того, чтобы убедиться, что частицы с истёкшим lifetime будут уничтожены.

Solve Forces and Velocity

Когда вы используете AddVelocity или другие модули, которые каким-то образом изменяют скорость частиц, вам нужно добавить модуль Solve Forces and Velocity, обновляющий вычисления.

Scale Sprite Size by Speed

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

Туториал по созданию дождя в Unreal Engine 4 Niagara

Generate Collision Event

Брызги дождя появляются при столкновении — для этого в Niagara есть модуль Collision Event. Отлючите его, если вам не нужны брызги.

Sprite Renderer

Нужно использовать заранее созданный материал. В Alignment поставьте «Velocity Aligned». Благодаря этому начальная скорость будет работать как надо.

Туториал по созданию дождя в Unreal Engine 4 Niagara
На этом этапе у вас должно получиться что-то такое

Брызги дождя

Теперь перейдём к брызгам.

Первый эмиттер — SM_Splash

Вам понадобится примерно такая модель, чтобы сделать брызги. Далее нужно будет просто масштабировать её по осям X и Y.

Туториал по созданию дождя в Unreal Engine 4 Niagara

В качестве материала можно поставить простой unlit материал с полупрозрачностью.

Туториал по созданию дождя в Unreal Engine 4 Niagara

Теперь нужно создать новый эмиттер.

Список модулей для эмиттера
Список модулей для эмиттера

В Emitter Properties поставьте Fixed Bounds, в Emitter State используйте System, а в Particle State примените настройки по умолчанию.

Initialize Particle

  • Lifetime Mode — Random.
  • Цвет настраивается через системные параметры.
  • Mesh Scale Mode — Random.
Туториал по созданию дождя в Unreal Engine 4 Niagara

Scale Mesh Size

Меш масштабируется во время своего существования на сцене. При этом меняется только размер по X и Y с течением времени — от 0 до 2.

Туториал по созданию дождя в Unreal Engine 4 Niagara

Scale Color

Брызги должны постепенно исчезать. Для этого нужно обработать альфа-частицу.

Туториал по созданию дождя в Unreal Engine 4 Niagara

Event Handler и Receive Collision Event

Важно сделать так, чтобы брызги появлялись при столкновении с землёй. Для этого эмиттер должен реагировать на первое столкновение капель — в поле Source поставьте «Emitter: *RainDrops* Event: *CollisionEvent*». Добавьте вариативность — не каждое столкновение должно приводить к всплеску. Выставьте показатели как на изображении ниже.

Туториал по созданию дождя в Unreal Engine 4 Niagara

Mesh Renderer

Здесь достаточно установить меш и материал.

Туториал по созданию дождя в Unreal Engine 4 Niagara

Эта часть эффекта закончена.

Второй эмиттер — SM_SplashMesh_02

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

Подойдёт что-то такое
Подойдёт что-то такое
У материала должен быть градиент
У материала должен быть градиент

Теперь создайте ещё один пустой эмиттер.

Он должен выглядеть так
Он должен выглядеть так

Обратите внимание на следующие настройки:

  • Emitter Properties — убедитесь, что границы зафиксированы;
  • Emitter State — используйте System;
  • Spawn Burst здесь не нужен;
  • Particle State — по умолчанию;
  • Solve Forces and Velocity здесь не нужны.

Initialize Particle

Lifetime — рандомное, цвет выбирается из системных параметров, а масштаб меша может быть случайным.

Туториал по созданию дождя в Unreal Engine 4 Niagara

Initial Mesh Orientation

Важно, чтобы всплеск расходился по оси Z, а также рандомно вращался по оси X — так мы добьёмся разнообразия.

Туториал по созданию дождя в Unreal Engine 4 Niagara

Scale Color

Как и в предыдущем случае, этот меш должен постепенно исчезнуть.

Туториал по созданию дождя в Unreal Engine 4 Niagara

Mesh Size Scale

Этот параметр отвечает за всю анимацию всплеска. Здесь можно легко масштабировать кривую, но при этом не испортить всю остальную анимацию.

Вся анимация — это масштабирование меша
Вся анимация — это масштабирование меша

Event Handler and Receive Collision Event

Это точно так же, как и в предыдущем всплеске — спавн происходит при столкновении. Появление всплеска рандомно — от 0 до 1.

Туториал по созданию дождя в Unreal Engine 4 Niagara

Mesh Renderer

Здесь нужно выбрать меш и материал.

Туториал по созданию дождя в Unreal Engine 4 Niagara

Второй эффект всплеска готов.

Должен получиться такой эффект

Water Dips

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

Туториал по созданию дождя в Unreal Engine 4 Niagara

Создайте ещё один эмиттер со следующими свойствами:

  • Emitter Properties — убедитесь, что границы зафиксированы;
  • Emitter State — используйте System;
  • Spawn Burst здесь не нужен;
  • Particle State — по умолчанию;
  • Пункт Solve Forces and Velocity здесь не нужен.
Туториал по созданию дождя в Unreal Engine 4 Niagara

Initialize Particle

Lifetime и масса — рандомно между указанными ниже значениями, цвет — выборочно.

Туториал по созданию дождя в Unreal Engine 4 Niagara

Calculate Size and Rotational Interia by Mass

Мы используем массу, чтобы решить, каким будет размер и вращение. Все параметры поставьте так, как на изображении ниже.

Туториал по созданию дождя в Unreal Engine 4 Niagara

Add Velocity in Cone

Velocity strength — рандомно, направление — вверх (ось Z).

Туториал по созданию дождя в Unreal Engine 4 Niagara

Gravity Force

Чтобы эффект выглядел правдоподобно, здесь используются расчёты, основанные на физике. Все настройки должны быть выставлены по умолчанию.

Drag

Значение параметра — 1.

Scale Color

Эффект должен постепенно исчезать. У материала есть нода Particle Color, которую Niagara использует, чтобы управлять материалом эмиттера.

Туториал по созданию дождя в Unreal Engine 4 Niagara

Sprite Size Scale by Velocity

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

Туториал по созданию дождя в Unreal Engine 4 Niagara

Event Handler и Receive Collision Event

Эти пустоты будут возникать при столкновении капли с поверхностью. Увеличим количество появлений этого эффекта при помощи Spawn number.

Туториал по созданию дождя в Unreal Engine 4 Niagara

Sprite Renderer

Выберите материал, а в поле Alignment поставьте «Velocity Aligned».

Туториал по созданию дождя в Unreal Engine 4 Niagara

Настройка и звук

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

Сам дождь — это актор с системой Niagara, к которому подключен соответствующий звук. Менеджер должен запускать звук, когда дождь идёт, и отключать, когда он заканчивается.

Туториал по созданию дождя в Unreal Engine 4 Niagara

В результате мы получаем готовый эффект дождя.

231231
32 комментария

Призрак цусимы никогда не выглядел так хорошо, как на УИ.

10

А зачем спавнить меш на всплеск? Тысячи капель - тысячи мешей, десятки тысяч вертексов. Не лучше ли сделать обычный билборд с изображением всплеска в несколько кадров?

9

Для начала - капель тысячи, а всплесков десятки - на каждую каплю обычно никто всплеск не спавнит.
Далее - там что бублик что всплеск - лоуполи в несколько треугольников с текстурой по маске, анлит, без коллизии, инстанс. Ну чууть дороже голого билборда (отражения на мокрых поверхностях сцены нивелируют разницу в фпс)
А зачем - затем, что билборд хорош если камера всегда под одним углом. Если же наклон меняется и частые повороты - то билборды сейчас уже смотрятся "слишком 2015".

1

Может движок автоматически батчит все меши как-то по хитрому? Вообще тот же вопрос, на одном из своих стримов эпики говорили, что спавн- дорогая операция, мол не злоупотребляйте. 

Комментарий удалён модератором