Уроки Unreal Engine

Unreal Engine 4. Учебник для начинающих, часть 8: Обзор и использование систем частиц

В этом уроке по Unreal Engine 4 вы узнаете, как создавать собственные системы частиц и обновлять их с помощью инструмента Blueprints.

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

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

В этом уроке вы узнаете, как:

  • Создавать системы частиц
  • Устанавливать скорость и размер частицы
  • Регулировать скорость появления частиц
  • Изменять масштаб и размеры частиц, используя график
  • Устанавливать цвет частиц, используя Cascade
  • Активировать и деактивировать систему частиц с помощью Blueprints
  • Устанавливать цвет частиц с помощью Blueprints

Это занятие является частью серии, которая состоит из 10 уроков, посвященных Unreal Engine:

Начало работы

В первую очередь вам необходимо скачать стартовый проект и все материалы, необходимые для работы. Разархивируйте файл и откройте SpaceshipBattle.uproject.

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

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

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

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

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

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

Вы можете изменять и настраивать цвет частиц на протяжении всей анимации. Посмотрите, как в этом примере частицы меняют свой цвет с красного на синий:

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

Вам необходимо перейти в папку ParticleSystems и выполнить действия: Add NewParticle System. Переименуйте систему частиц в PS_Thruster и откройте ее.

Обзор редактора систем частиц Cascade

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

  1. Viewport: в этом окно отображается предварительный просмотр системы частиц. Вы можете осмотреться, удерживая правую кнопку мыши и двигая ей. Чтобы перемещаться в пространстве редактора удерживайте правую кнопку мыши и используйте клавиши WASD.
  2. Details: Тут отображаются свойства для выбранного вами компонента. Если ничего не выбрано, то отобразятся общие свойства системы частиц.
  3. Emitters: Эта панель будет отображать список излучателей со списком модулей, расположенных слева направо.
  4. Curve Editor: Этот инструмент позволяет визуализировать и настраивать значения кривых модуля, однако следует помнить, что их можно использовать не для всех свойств модуля.

Сейчас в игре для системы частиц используются настройки по умолчанию:

Изменение материала для частиц

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

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

Чтобы изменить материал, вам нужно перейти к панели Details и установить для параметра «Material» значение M_Particle. Это изменит внешний вид частицы на круг оранжевого цвета:

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

Вернитесь в главный редактор и перейдите в папку «Blueprints» — вам нужно выбрать BP_Player и перейдите к панели «Components».

Вам понадобится компонент Particle System для того, чтобы использовать систему частиц и вносить в нее изменения. Создайте его, и переименуйте в ThrustParticles, после чего обязательно подключите к компоненту Collision:

Далее вам необходимо разместить ваши частицы в игровом пространстве. Для этого перейдите на панель «Details» и найдя раздел «Particles», установите значение шаблона PS_Thruster.

Чтобы поместить движущиеся частицы на заднем плане, установите координаты для ThrustParticles на (-80, 0, 0):

Чтобы частицы как бы вращались вокруг корабля, не пересекая его, вам нужно установить координаты параметра Rotation на (0, 90, 0). Таким образом созданная вами система частиц будет отдаляться от корабля:

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

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

Изменение скорости и размера частицы

Для начала необходимо установить для частиц параметр их начальной скорости. Для этого вам нужно открыть PS_Thrust и выбрать модуль Initial Velocity. Далее выполните переход Start Velocity ⇒ Distribution.

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

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

Посмотрите, как двигались частицы раньше и как ни двигаются теперь:

 

Изменение размера частиц

Выберите модуль «Initial Size» и перейдя к панели «Details». выполните Start SizeDistribution.

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

Примечание: Такие распределения позволяют указывать постоянные значения в пределах определенного диапазона значений. Для этой цели также можно использовать инструмент Blueprints.

Теперь установите координаты для параметра Constant на (70, 70, 70). Посмотрите, как теперь выглядит поток частиц:

Вернитесь в главный редактор и нажмите «Play», чтобы посмотреть изменения в действии:

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

Увеличение скорости передвижения частиц

Чтобы увеличить скорость появления, вам придется использовать модуль Spawn, который контролирует, как быстро излучатель будет производить новые частицы. Для этого откройте PS_Thrust и выберите Spawn. Перейдя на панель «Details», выполните команды SpawnRate:

Теперь установите значение для параметра Constant = 50, таким образом каждую секунду будет появляться 50 новых частиц:

Вернитесь в главный редактор и нажмите «Play», чтобы посмотреть изменения в действии:

Изменение размера и количества частиц с течением времени

Сейчас вам нужно открыть PS_Thruster и перейти на панель Emitters.

Для того, чтобы управлять размером частиц вам нужно воспользоваться модулем, который называется Size By Life. Он применяет множитель к размеру частицы в течение всего времени ее существования. Чтобы создать этот модуль, нужно кликнуть правой кнопкой мыши по любой пустой области в редакторе и выбрать SizeSize By Life:

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

Что такое график и для чего он нужен?

График — это набор точек, у каждой из которых имеются свои координаты.

Когда у вас есть две или более точек, то формируется небольшой отрезок – линия на графике. Посмотрите, на изображении ниже приведен пример стандартного графика, на котором точка А имеет координаты (0;0), а точка В имеет координаты (2;1):

Если вы выбираете линейную кривую в случайных координатах, она работает как линейная интерполяция. Например, если вы взяли координаты точки на графике выше = 1, то в итоге вы получите значение 0,5:

Если вы создаете график с кривой, которая будет уменьшиться, то и полученное вами значение будет также постепенно уменьшаться. Именно такой тип графика вы будете использовать для модуля Size By Life:

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

Модификации графика модуля

Выберите «Size By Life», перейдите на панель «Details» и выполните действия Life MultiplierDistributionConstant CurvePoints. Перед вами должно появиться окно настройки координат графика Life Multiplier:

Параметр Val — это исходная точки на графике. Для Size By Life значение 0 указывает начало появления частицы, а значение 1 ее конец.

Для того, чтобы уменьшить этот промежуток времени необходимо уменьшить значение Out Val для второй точки. Установите значение Val для точки 1 на (0, 0, 0). Таким образом, с течением времени размер частиц будет равен 0:

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

Теперь на графике появилось значение Life Multiplier, чтобы его подогнать к общему виду необходимо в редакторе выбрать команду Fit:

Посмотрите на график, размер частиц стремится к значению 0:

Вернитесь в главный редактор и нажмите «Play», чтобы увидеть изменения в действии:

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

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

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

 

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

Сначала удалите узел, связанный с Emissive Color, затем добавьте узел ParticleColor и подключите его следующим образом:

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

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

Возможности модуля Initial Color

Откройте PS_Thrust и добавьте модуль Initial Color, который находится в разделе Color:

Чтобы добавить цветовые вариации, необходимо указать диапазон, в котором будет меняться цвет частиц. Для этого вам нужно выбрать Initial Color и перейти к панели Details. В меню Start Color вам следует изменить значение Distribution на Distribution Vector Uniform:

Сейчас цвет пламени должен варьироваться от оранжевого до красного. Для этого установите значения Max на (1,0, 0,0, 0,0) и значения Min на (1,0, 0,35, 0,0), как показано на изображении ниже:

Если вы посмотрите в окно Viewport, то заметите, что цвет стал странно меняться:

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

Закройте PS_Thruster и нажмите Play в главном редакторе. Посмотрите, как теперь выглядит пламя двигателя:

Смена систем частиц

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

Откройте BP_Player и найдите узел Event Tick, ориентируясь на которой добавьте еще несколько узлов, как на изображении ниже:

Давайте рассмотрим подробнее каждую функцию:  

  1. В этой области происходит проверка сопоставления осей MoveUp и MoveRight, для того, чтобы убедиться перемещается ли в данный момент игрок или нет.
  2. Если Branch = true (игрок не нажимает клавиши перемещения), деактивируется узел ThrustParticles.
  3. Если Branch = false (игрок нажимает клавиши перемещения), узел ThrustParticles наоборот, активируется.

Нажмите Compile, для сохранения результатов и закрыв BP_Player, нажмите Play. Посмотрите – теперь пламя ракеты появляется только во время движения корабля:

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

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

Перейдите в папку ParticleSystems, щелкните правой кнопкой мыши PS_Thruster и выберите Duplicate, изменив название на PS_Explosion, а затем откройте его.

Для создания эффекта взрыва все частицы должны появляться одновременно, а не по одной – это и называется взрывом (burst):

Создание взрыва

Для начала вам необходимо установить скорость появления частиц = 0, чтобы отменить настройки по умолчанию. Выберите модуль Spawn и установите для SpawnRateDistributionConstant значение 0:

Теперь найдите Burst и добавьте новую запись в Burst List, нажав на значок «+»:

Вам будет нужно заполнить три поля:

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

Примечание: настройки времени длительности действия излучателя можно также найти в модуле Required.

Таким образом в самом начале действия появится 20 новых частиц:

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

Изменение направления движения частиц

Для этой цели вам нужно указать значения для координат скорости X и Y. Выберите модуль Initial Velocity и перейдите к Start Velocity Distribution. Установите значение Max = (1000, 1000, 0) и значение Min = (-1000, -1000, 0):

При указанном диапазоне от отрицательного до положительного значений, частицы будут перемещаться наружу от центра:

Настройка количества взрывов

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

Выберите необходимый модуль и найдя раздел «Duration», установите параметр Emitter Loops = 1:

Эффект взрыва при уничтожении врагов

Вернитесь в главный редактор и перейдя в папку «Blueprints», откройте BP_Enemy и найдите тут событие OnDeath.

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

Теперь установите для Emitter значение PS_Explosion:

В завершение, создайте узел GetActorLocation и подключите его к выходу Location:

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

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

Изменение цвета взрыва

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

Откройте PS_Explosion и выбрав модуль «Initial Color», установите Start ColorDistribution на Distribution Vector Particle Parameter:

Таким образом вы получите значение, которою можно изменять при помощи Blueprints. Переименуйте параметр в PrimaryColor:

Для взрыва вам нужно будет использовать оба цвета врага. Чтобы появился второй цвет, вам понадобится еще один излучатель. Для его создания просто щелкните правой кнопкой мыши пустом месте окна редактора и выберите EmitterDuplicate and Share Emitter:

Обратите внимание, что теперь каждый модуль имеет знак «+» рядом с ним. Используя Duplicate and Share Emitter вместо Duplicate, вы связали модули вместо того, чтобы копировать их. Любые изменения, которые вы делаете в одном модуле, также будут происходить и в связанном с ним модуле.

В данный момент единственным модулем, который вам нужно изменить, является Initial Color. Однако, как уже говорилось ранее, все изменения коснутся обоих модулей. Чтобы этого не происходило, связь нужно разорвать и самый простой способ для этого – удаление дубля Initial Color и создание нового модуля:

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

Выберите Initial Color и поменяйте значение Start ColorDistribution на Distribution Vector Particle Parameter. Измените название параметра на SecondaryColor:

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

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

Это позволит вам установить два новых параметра в PS_Explosion.

Теперь установите имя PrimaryColor для первого Set Color Parameter и имя SecondaryColor для второго:

Теперь вам нужно сохранить настройки цвета в переменных PrimaryColor и SecondaryColor. Для этого подключите каждую переменную к соответствующим узлам следующим образом:

Посмотрите, как должен выглядеть график в конечном итоге:

Еще раз повторим порядок действий:

  1. Когда враг умирает, на его месте появляется экземпляр PS_Explosion;
  2. Затем устанавливается параметр PrimaryColor для PS_Explosion;
  3. Одновременно с этим также устанавливается параметр SecondaryColor для PS_Explosion.

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

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

Что делать дальше?

Вы можете скачать готовый проект.

Теперь вы знаете, как создаются простые эффекты с использованием частиц.

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

Например, модули TypeData позволяют создавать такие эффекты, как следы от ударов мечом, молнии и даже дождь из коров!

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

Перевод
Оригинал на англ.
Показать еще

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Back to top button