Туториал по Unreal Engine. Часть 8: Системы частиц

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

В Unreal Engine 4 есть надёжная и удобная система под названием Cascade для создания эффектов частиц. Эта система позволяет создавать модульные эффекты и легко управлять поведением частиц.

В этой части туториала вы научитесь следующему:

  • Создавать системы частиц
  • Задавать скорость и размер частиц
  • Изменять частоту спауна частиц
  • Масштабировать размер частиц в течение срока их существования с помощью кривых
  • Задавать цвет частиц с помощью Cascade
  • Активировать и деактивировать систему частиц с помощью Blueprints
  • Задавать цвета частиц с помощью Blueprints

Примечание:эта статья является одной из восьми частей туториала, посвящённого Unreal Engine:

Автор оригинала: Tommy Tran

Приступаем к работе

Скачайтезаготовку проектаи распакуйте её. Перейдите в папку проекта и откройтеSpaceshipBattle.uproject.

Нажмите наPlay, чтобы запустить игру. Удерживайтелевую клавишу мыши, чтобы стрелять, и перемещайтесь клавишамиW,A,SиD.

GIF
Туториал по Unreal Engine. Часть 8: Системы частиц

[свернуть]

В этом туториале мы создадим два эффекта частиц. Один для двигателей корабля, а второй — для его взрыва. Для их создания мы воспользуемсясистемами частиц.

Что такое «система частиц»?

Как можно понять из названия, система частиц — это система для созданиячастици управления ими. Частица — это просто точка в пространстве. С помощью систем частиц можно управлять внешним видом и поведением частиц.

Системы частиц состоят из одного или нескольких компонентов, называемыхэмиттерами. Они выполняют спаунинг частиц.

Туториал по Unreal Engine. Часть 8: Системы частиц

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

Туториал по Unreal Engine. Часть 8: Системы частиц

Также можно изменять цвет частицы с течением срока её существования. В этом примере цвет частицы изменяется с красного на синий:

Туториал по Unreal Engine. Часть 8: Системы частиц

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

Создание системы частиц

Перейдите в папкуParticleSystemsи нажмите наAdd New\Particle System. Переименуйте систему частиц вPS_Thrusterи откройте её.

Cascade: редактор систем частиц

Cascade состоит из четырёх основных панелей:

Туториал по Unreal Engine. Часть 8: Системы частиц
  1. Viewport:в этой панели отображается внешний вид системы частиц. Можно поворачивать её, удерживаяправую клавишу мышии двигая ею. Для перемещения удерживайтеправую клавишу мышии нажимайте клавишиWASD.
  2. Details:здесь отображаются все свойства выбранных компонентов (эмиттеров, модулей и т.д.). Если ничего не выбрано, то здесь отображаются свойства системы частиц.
  3. Emitters:в этой панели отображается список эмиттеров слева направо. У каждого эмиттера показан список его модулей.
  4. Curve Editor:редактор Curve Editor позволяет визуализировать и изменять значения кривых модулей. Не все свойства модулей поддерживают кривые.

Пока наша система использует материал частиц по умолчанию.

Туториал по Unreal Engine. Часть 8: Системы частиц

Для начала заменим материал частиц на материал круга.

Применяем к частицам материал

Перейдите в панель Emitters и выберите модульRequired.

Туториал по Unreal Engine. Часть 8: Системы частиц

Модуль Required содержит необходимые свойства, такие как материал частиц и длительность работы эмиттера. Модуль Required должен быть у каждого эмиттера.

Для изменения материала перейдите в панель Details и задайте дляMaterialзначениеM_Particle. При этом частицы станут оранжевыми кругами.

Туториал по Unreal Engine. Часть 8: Системы частиц

Теперь мы присоединим систему частиц к кораблю игрока.

Присоединение системы частиц

Вернитесь в основной редактор и зайдите в папкуBlueprints. ОткройтеBP_Playerи перейдите к панели Components.

Для использования системы частиц можно применить компонентParticle System. Создайте его и переименуйте вThrusterParticles. Соедините его с компонентомCollision.

Туториал по Unreal Engine. Часть 8: Системы частиц

Для задатия системы частиц перейдите в панель Details и найдите разделParticles. ЗадайтеTemplateзначениеPS_Thruster.

Затем задайте для дляLocationкомпонентаThrusterParticlesзначения(-80, 0, 0). При этом частицы расположатся за кораблём.

Туториал по Unreal Engine. Часть 8: Системы частиц

Наконец, задайтеRotationзначения(0, 90, 0). Это направит систему частиц таким образом, что частицы будут удаляться от корабля.

Туториал по Unreal Engine. Часть 8: Системы частиц

Нажмите наCompileи вернитесь в основной редактор. Нажмите наPlay, чтобы увидеть систему частиц в действии.

GIF
Туториал по Unreal Engine. Часть 8: Системы частиц

[свернуть]

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

Задание скорости и размера частиц

Сначала мы зададим начальную скорость частиц. ОткройтеPS_Thrusterи выберите модульInitial Velocity. Затем развернитеStart Velocity\Distribution.

По умолчанию начальная скорость частиц находится в интервале от(-10, -10, 50)до(10, 10, 100).

Туториал по Unreal Engine. Часть 8: Системы частиц

Чтобы частицы удалялись от корабля быстрее, нам нужно увеличить скорость поZ. ПрисвойтеMin Zзначение300, аMax Z— значение400.

Туториал по Unreal Engine. Часть 8: Системы частиц

Вот сравнение исходной и новой скоростей:

Туториал по Unreal Engine. Часть 8: Системы частиц

Далее нам нужно задать начальный размер частиц.

Задание размера частиц

Выберите модульInitial Sizeи перейдите в панель Details. Затем развернитеStart Size\Distribution.

Как и в модуле Initial Velocity, в Initial Size тоже есть интервал минимальных и максимальных значений. Однако в этом туториале мы зададим постоянный размер частиц. Для этого выберите дляDistributionзначениеDistribution Vector Constant.

Туториал по Unreal Engine. Часть 8: Системы частиц

Примечание:распределения (Distributions) позволяют задавать постоянные значения, значения в интервале или на кривой. Также можно задавать значения с помощью Blueprints. Чтобы узнать больше, изучите страницуDistributionsв документации Unreal Engine.

Затем задайтеConstantзначения(70, 70, 70). Вот иллюстрация сравнения размеров:

Туториал по Unreal Engine. Часть 8: Системы частиц

Вернитесь в основной редактор и нажмите наPlay.

GIF
Туториал по Unreal Engine. Часть 8: Системы частиц

[свернуть]

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

Увеличение скорости спауна частиц

Для увеличения скорости спауна нам нужно воспользоваться модулемSpawn. Этот модуль управляет скоростью спауна частиц эмиттером. Вместе с Required каждый эмиттер должен иметь модуль Spawn.

ОткройтеPS_Thrusterи выберитеSpawn. Перейдите в панель Details и разверните разделSpawn\Rate.

Туториал по Unreal Engine. Часть 8: Системы частиц

ЗадайтеConstantзначение50. Это увеличит скорость спауна до 50 частиц в секунду.

Туториал по Unreal Engine. Часть 8: Системы частиц

Вернитесь в основной редактор и нажмите наPlay.

GIF
Туториал по Unreal Engine. Часть 8: Системы частиц

[свернуть]

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

Уменьшение срока существования частиц

ОткройтеPS_Thrusterи перейите в панель Emitters.

Чтобы уменьшить время существования частиц, нужно воспользоваться модулемSize By Life. Этот модуль применяет множитель размера частицы в течение срока её существования. Создайте его,нажав правой клавишей мышина пустом пространстве в эмиттере и выбравSize\Size By Life.

Туториал по Unreal Engine. Часть 8: Системы частиц

По умолчанию это не повлияет визуально на размер частиц, потому что по умолчанию множитель всегда равен 1. Чтобы уменьшить частицу, нам нужно изменитькривуюмодуля, чтобы множитель размера со временем уменьшался. Но сначала нужно разобраться, что же такое кривая?

Что такое «кривая»?

Кривая (curve) — это множество точек. Каждая точка обладает двумя свойствами: положением и значением.

Когда у нас есть две или более точек, то они создают линию. Ниже представлен пример простой линейной кривой.Точка Aимеет положение и значение, равные0.Точка Bимеет положение2и значение1.

Туториал по Unreal Engine. Часть 8: Системы частиц

Если сэмплировать линейную кривую в любой точке, то это работает как линейная интерполяция. Например, если сэмплировать кривую в точке1, то мы получим значение0.5.

Туториал по Unreal Engine. Часть 8: Системы частиц

Если создать убывающую кривую, то получаемое значение постепенно будет уменьшаться. Именно такую кривую мы хотим использовать для модуля Size By Life.

Туториал по Unreal Engine. Часть 8: Системы частиц

Теперь мы создадим показанную выше кривую в Cascade.

Изменение кривой модуля

ВыберитеSize By Lifeи перейдите в панель Details. РазвернитеLife Multiplier\Distribution\Constant Curve\Points. Здесь представлен список точек кривойLife Multiplier.

Туториал по Unreal Engine. Часть 8: Системы частиц

In Val— это положение точки на кривой. ДляSize By Lifeзначение0обозначаетначалосрока жизни частицы. Значение1обозначаетконецсрока жизни частицы.

Для уменьшения множителя размера со временем нам нужно уменьшитьOut Valвторой точки. Задайте дляOut Valточки 1значение(0, 0, 0). Это постепенно снизит размер частицы до 0.

Туториал по Unreal Engine. Часть 8: Системы частиц

Наглядно увидеть кривуюLife Multiplierможно в Curve Editor. Для этого нажмите назначок графамодуляSize By Life.

Туториал по Unreal Engine. Часть 8: Системы частиц

Это добавитLife Multiplierв Curve Editor. Чтобы кривая помещалась в окно, нажмите наFitв Curve Editor.

Туториал по Unreal Engine. Часть 8: Системы частиц

Как вы видите, множитель размера уменьшается за срок жизни частицы с 1 до 0.

Туториал по Unreal Engine. Часть 8: Системы частиц

Вернитесь в основной редактор и нажмите наPlay

GIF
Туториал по Unreal Engine. Часть 8: Системы частиц

[свернуть]

Теперь частицы больше походят на пламя! Последнее, что мы добавим к этой системе частиц — цветовые вариации.

Добавление цветовых вариаций

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

Туториал по Unreal Engine. Часть 8: Системы частиц

Сейчас цвет задан в материале. Чтобы использовать цвет из системы частиц, нам нужно применить нодParticleColor.

Во-первых, удалите нод, соединённый сEmissive Color. Затем добавьте нодParticleColorи соедините его следующим образом:

Туториал по Unreal Engine. Часть 8: Системы частиц

Дополнительно

Если вы хотите управлять и непрозрачностью частиц, то добавьте нодMultiplyи соедините его следующим образом:

Туториал по Unreal Engine. Часть 8: Системы частиц

Нажмите наApplyи закройтеM_Particle.
Чтобы задать цвет частицы, можно использовать модульInitial Color.

Модуль Initial Color

ОткройтеPS_Thrusterи добавьте модульInitial Color. Его можно найти в категорииColor.

Туториал по Unreal Engine. Часть 8: Системы частиц

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

ВыберитеInitial Colorи перейдите в панель Details. Разверните разделStart Colorи изменитеDistributionнаDistribution Vector Uniform. Это позволит нам указать интервал для каждого цветового канала.

Туториал по Unreal Engine. Часть 8: Системы частиц

В этом туториале цвет будет находиться в интервале от оранжевого до красного. Для этого нужно задатьMaxзначения(1.0, 0.0, 0.0), аMin— значения(1.0, 0.35, 0.0).

Туториал по Unreal Engine. Часть 8: Системы частиц

Если вы посмотрите на Viewport, то увидите, что цвет ведёт себя странно.

GIF
Туториал по Unreal Engine. Часть 8: Системы частиц

[свернуть]

Так происходит потому, что модульColor Over Lifeпостоянно делает цвет белым. Чтобы исправить это, выберитеColor Over Lifeи нажмитеDelete. Теперь ваш список модулей будет выглядеть так:

Туториал по Unreal Engine. Часть 8: Системы частиц

ЗакройтеPS_Thrusterи нажмите наPlayв основном редакторе. Полюбуйтесь на эти языки пламени двигателя!

GIF
Туториал по Unreal Engine. Часть 8: Системы частиц

[свернуть]

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

Включение/отключение системы частиц

Чтобы проверить, движется ли корабль, мы можем проверять, нажимает ли игрок клавиши движения.

ОткройтеBP_Playerи найдите нодEvent Tick. Добавьте следующую схему в конце цепочки нодов:

Туториал по Unreal Engine. Часть 8: Системы частиц

Давайте разберёмся с тем, что делает эта схема:

  1. Она проверяет привязки осейMoveUpиMoveRight. Если обе возвращают0, то это значит, что игрок не нажимает клавиш движения.
  2. ЕслиBranchвозвращаетtrue(игрок не нажимает клавиши движения), то деактивируетсяThrusterParticles
  3. ЕслиBranchвозвращаетfalse(игрок нажимает клавишу движения), то активируетсяThrusterParticles

Нажмите наCompileи закройтеBP_Player. Нажмите наPlay, а потом нажимайте и отпускайте клавиши движения, чтобы увидеть разницу.

GIF
Туториал по Unreal Engine. Часть 8: Системы частиц

[свернуть]

Теперь настало время для самого интересного: создадим систему частиц взрыва!

Создание эффекта взрыва

Вместо создания новой системы частиц, мы дублируем частицы двигателя. Перейдите в папкуParticleSystems,нажмите правой клавишей мышинаPS_Thrusterи выберитеDuplicate. Переименуйте дубликат вPS_Explosionи откройте его.

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

Туториал по Unreal Engine. Часть 8: Системы частиц

Создание импульса

Для начала нам нужно задать скорость спауна, равную нулю, потому что мы не хотим использовать поведение спауна по умолчанию. Выберите модульSpawnи задайтеSpawn\Rate\Distribution\Constantзначение0.

Туториал по Unreal Engine. Часть 8: Системы частиц

Далее нужно сообщить эмиттеру, что мы хотим создать импульс. Прокрутите вниз, к разделуBurstи добавьте новый элемент вBurst List. Это можно сделать, нажав на значок+.

Туториал по Unreal Engine. Часть 8: Системы частиц

Каждый элемент будет содержать три поля:

  1. Count:количество создаваемых частиц. Укажите значение20.
  2. Count Low:если больше или равно 0, то количество создаваемых частиц будет изменяться в интервале отCount LowдоCount. Оставим здесь значение-1.
  3. Time:момент спауна частиц. Значение 0 обозначает начало срока жизни эмиттера. Значение 1 обозначает конец срока жизни эмиттера. Оставим здесь значение0.0.

Примечание:срок жизни эмиттера находится в модулеRequired. Он указан какEmitter Durationв разделеDuration.

Туториал по Unreal Engine. Часть 8: Системы частиц

Это значит, что эмиттер создаст20частиц вначалесвоей жизни.

Туториал по Unreal Engine. Часть 8: Системы частиц

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

Разлетание частиц

Поскольку игра имеет вид сверху, нам нужно указать только скорости по X и Y. Выберите модульInitial Velocityи развернитеStart Velocity\Distribution. ЗадайтеMaxзначение(1000, 1000, 0), аMin— значение(-1000, -1000, 0).

Туториал по Unreal Engine. Часть 8: Системы частиц

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

Туториал по Unreal Engine. Часть 8: Системы частиц

Теперь нужно задать количество повторов эмиттера.

Задание повторов эмиттера

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

Выберите модульRequiredи найдите разделDuration. ЗадайтеEmitter Loopsзначение1.

Туториал по Unreal Engine. Часть 8: Системы частиц

Теперь мы будем воспроизводить взрыв при смерти врага.

Создание частиц при смерти противника

Вернитесь в основной редатор и перейдите в папкуBlueprints. ОткройтеBP_Enemyи найдите событиеOnDeath.

Чтобы заспаунить систему частиц, можно использовать нодSpawn Emitter at Location. Создайте его и соедините сDestroy Actor.

Туториал по Unreal Engine. Часть 8: Системы частиц

Затем задайтеEmitter TemplateзначениеPS_Explosion.

Туториал по Unreal Engine. Часть 8: Системы частиц

Наконец, создайтеGetActorLocationи соедините его с контактомLocation.

Туториал по Unreal Engine. Часть 8: Системы частиц

Теперь при смерти врага событие будет создавать экземплярPS_Explosionв точке расположения врага.

Нажмите наCompileи вернитесь в основной редактор. Нажмите наPlayи начните расстреливать врагов.

GIF
Туториал по Unreal Engine. Часть 8: Системы частиц

[свернуть]

Посмотрите, вот и взрывы! Теперь мы сделаем их интереснее, придав им тот же цвет, что и врагам.

Замена цвета взрыва на цвет врага

Чтобы воспользоваться цветом, нам нужен способ получения такой информации из Blueprints. К счастью, в Cascade есть тип распределения, позволяющий это сделать.

ОткройтеPS_Explosionи выберите модульInitial Color. ЗадайтеStart Color\DistributionзначениеDistribution Vector Particle Parameter.

Туториал по Unreal Engine. Часть 8: Системы частиц

Это даст нам параметр, который мы сможем изменять с помощью Blueprints. ДайтеParameter NameназваниеPrimaryColor

Туториал по Unreal Engine. Часть 8: Системы частиц

Для взрыва мы будем использовать оба цвета врага. Для использования второго цвета нам нужен ещё один эмиттер.Нажмите правой клавишей мышина пустом пространстве в эмиттере и выберитеEmitter\Duplicate and Share Emitter. Так мы дублируем эмиттер.

Туториал по Unreal Engine. Часть 8: Системы частиц

Вы заметите, что у каждого модуля теперь есть значок+. Благодаря использованиюDuplicate and Share EmitterвместоDuplicate, мы связали модули, а не скопировали их. Все изменения, вносимые в один модуль, будут отражаться на том же модуле другого эмиттера. Это полезно, если мы хотим изменять свойства во всех эмиттерах, например, размер.

Единственный модуль, который нам нужно изменять — этоInitial Color. Однако если мы внесём изменения, то они отразятся на обоих эмиттерах. В этом случае нам не нужно, чтобы модули были связаны, потому что им нужны отдельные названия параметров. Простейший способ отключения их связи заключается в удалении дублированного модуляInitial Colorи создании нового.

Туториал по Unreal Engine. Часть 8: Системы частиц

Примечание:на момент написания статьи встроенных методов для разрыва связи между модулями не существует.

Выберите новыйInitial Colorи задайтеStart Color\DistributionзначениеDistribution Vector Particle Parameter. Затем задайтеParameter NameзначениеSecondaryColor.

Туториал по Unreal Engine. Часть 8: Системы частиц

На этом этапе система частиц уже готова. ЗакройтеPS_Explosion.
Далее нам нужно будет задавать параметры с помощью Blueprints.

Задание параметров частиц с помощью Blueprints

ОткройтеBP_Enemyи добавьте послеSpawn Emitter at Locationвыделенные ноды:

Туториал по Unreal Engine. Часть 8: Системы частиц

Это позволить изменять два параметраPS_Explosion.

Теперь нам нужно дать параметрам правильные названия. Задайте в качествеParameter NameпервогоSet Color ParameterзначениеPrimaryColor. Задайте в качествеParameter NameвторогоSet Color ParameterзначениеSecondaryColor

Туториал по Unreal Engine. Часть 8: Системы частиц

Наконец, нам нужно передать цвета. Чтобы упростить рабту, мы уже сохранили цвета в переменныеPrimaryColorиSecondaryColor. Соедините каждую переменную с соответствующим нодом:

Туториал по Unreal Engine. Часть 8: Системы частиц

Вот, что у вас в итоге должно получиться:

Туториал по Unreal Engine. Часть 8: Системы частиц

Давайте разберёмся в событиях по порядку:

  1. Когда враг умирает, он спаунит экземплярPS_Explosionв точке своего местоположеня
  2. Задаётся значение параметраPrimaryColorPS_Explosion
  3. Задаётся значение параметраSecondaryColorPS_Explosion

Нажмите наCompileи закройтеBP_Enemy. Нажмите наPlayи начните расстреливать врагов, чтобы увидеть взрывы.

GIF
Туториал по Unreal Engine. Часть 8: Системы частиц

[свернуть]

Посмотрите на все эти сочные частицы. Давайте теперь попробуем добавить взрыв при смерти игрока.

Решение внутри

1. Откройте BP_Player и найдите событие OnDeath
2. Добавьте нод Spawn Emitter at Location к контакту Then 1 нод Sequence. Задайте Emitter Template значение PS_Explosion.
3. Создайте GetActorLocation и соедините его с контактом Location нода Spawn Emitter at Location
4. Создайте Set Color Parameter и соедините его с Spawn Emitter at Location. Задайте Parameter Name значение PrimaryColor и соедините переменную PrimaryColor с Param.
5. Создайте ещё один Set Color Parameter и соедините его с первым Set Color Parameter. Задайте Parameter Name значение SecondaryColor и соедините переменную SecondaryColor с Param.

Туториал по Unreal Engine. Часть 8: Системы частиц

[свернуть]

Куда двигаться дальше?

Скачать готовый проект можноотсюда.

Поверите ли вы, что мы рассмотрели только самые основы Cascade? Мы создали интересные эффекты, но есть гораздо большемодулей, с которыми можно поэкспериментировать. Рекомендую больше узнать о модуляхTypeData. С их помощью можно создавать такие эффекты, как взмахи мечом, молнии или даже дождь из коров!

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

Автор перевода PatientZero

Поделится

Добавить комментарий

Мы используем cookie-файлы для наилучшего представления нашего сайта. Продолжая использовать этот сайт, вы соглашаетесь с использованием cookie-файлов.
Принять