Ключевые понятия частиц в Unreal Engine 4

0
1
Карты Изогнутой Нормали в Unreal Engine 4

ParticleSystems и Cascade, редактор Particle System, являются чрезвычайно гибкими и мощными. Однако, прежде чем вы встанете и засучите рукава, есть несколько важных понятий, которые вам нужно будет полностью понять. Цель этого документа – познакомить вас с этими ключевыми концепциями, давая вам более четкое представление о том, как эти аспекты работы системы частиц работают, избегая при этом нюансов пользовательского интерфейса или специфики создания эффекта частиц.

Модульный подход к воздействию частиц

Первичная и уникальная концепция Cascade заключается в модульных системах частиц. В некоторых пакетах 3D-эффектов, таких как Maya, создается система частиц с большинством необходимых свойств для уже существующего поведения. Затем пользователь изменяет эти свойства, чтобы достичь желаемого результата.

С другой стороны, в Cascade система частиц начинается с нескольких свойств bare bones (голых костей) и нескольких поведенческих модулей.

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

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

Модули по умолчанию

Модули по умолчанию ue4

 

 

 

 

 

По умолчанию некоторые модули существуют на эмиттере частиц. Всякий раз, когда новый источник Sprite Emitter – ключевой компонент любой Системы частиц – добавляется к системе частиц, он всегда создается со следующими модулями по умолчанию:

  • Required – содержит множество свойств, которые абсолютно необходимы для системы частиц, например материала, нанесенного на частицы, как долго эмиттер должен излучать частицы и многое другое.
  • Spawn – этот модуль контролирует, как быстро будут появляться частицы от эмиттера, будут ли они появляться в пакетах, и ​​любые свойства, связанные с временем рождения частиц.
  • Lifetime  – это определяет, как долго каждая частица будет жить, как только она родится. Без этого модуля частицы будут жить бесконечно.
  • Initial Size – это контроль масштаба частицы в момент ее рождения.
  • Initial Velocity – это контролирует движение частицы в момент ее рождения.
  • Color Over Life – этот модуль контролирует, как цвет каждой частицы будет меняться в течение всего срока ее работы.
Модули Required and Spawn являются постоянными и не могут быть удалены из эмиттера. Тем не менее, все остальные модули могут быть удалены по желанию.

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

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

КатегорияОписание
AccelerationМодули, определяющие способ воздействия ускорения частиц, например, силы сопротивления.
AttractionМодули, которые управляют движением частиц, притягивая частицы к различным точкам в пространстве.
CameraМодули, контролирующие перемещение частиц в пространстве камеры, позволяя пользователю сделать их кажущимися ближе или дальше от камеры.
CollisionМодули, контролирующие взаимодействие столкновений между частицами и геометрией.
ColorМодули, которые влияют на цвет частиц.
EventМодули, которые управляют запуском событий частиц, что, в свою очередь, может привести к множеству внутри-игровых ответов.
KillМодули, определяющие удаление частиц.
LifetimeМодули, которые контролируют, как долго должны жить частицы.
LightМодули, управляющие светом частиц.
LocationМодули, контролирующие, где будут рождаться частицы относительно местоположения излучателя Актера.
MaterialМодули, которые управляют материалом, применяемым к самим частицам.
OrbitМодули, которые допускают орбитальное поведение экранного пространства, чтобы добавить дополнительное движение к эффектам.
OrientationМодули, которые позволяют заблокировать ось вращения частиц.
ParameterМодули, которые можно параметризовать или управлять с помощью внешних источников, таких как Blueprints и Matinee.
RotationМодули, управляющие вращением частиц.
RotationRateМодули, регулирующие изменения скорости вращения, такие как спин.
SizeМодули, контролирующие масштаб частиц.
SpawnМодули для добавления специализированных скоростей появления частиц, таких как порождение частиц на основе перемещенного расстояния.
SubUVМодули, которые позволяют отображать анимированные листы спрайтов на частице.
VelocityМодули, которые управляют скоростью каждой частицы.

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

Initial vs. Over Life

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

  • Модули Initial используются для управления некоторым аспектом частиц в момент их возникновения в мире.
  • Модули Over Life или Per Life существуют, чтобы позволить частицам частица измениться на протяжении всей своей жизни.

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

Расчет времени модуля

Если вы измените свойство на тип распределения, который изменяется со временем, некоторые модули используют «относительное время», а некоторые используют «абсолютное время» (подробнее о дистрибутивах ниже).

  • Абсолютное время, в основном, содержит время эмиттера. Если у вас есть эмиттер, настроенный на 3 цикла в 2 секунды, абсолютное время для модулей в этом эмиттере будет работать от 0 до 2 секунд три раза.
  • Относительное время составляет от 0 до 1, что указывает время жизни каждой частицы.

Описания доступных модулей можно найти на сайте ParticleSystemReference.

Эмиттеры, Системы частиц и Emitter Actors

Когда вы работаете с Cascade для создания собственных эффектов частиц, важно иметь в виду, как каждый из объектов связан друг с другом. В этом документе мы уже обсуждали концепцию модулей, но они составляют только один компонент полного эффекта частиц. В целом, компоненты системы частиц – это модули, эмиттеры, системы частиц и Актеры эмиттеры. Надежный способ запомнить, как они соотносятся, таков:

  • Модули, которые определяют поведение частиц и размещаются внутри …
  • Эмиттеров, которые используются для испускания определенного типа частиц для эффекта, и любое количество которых может быть помещено в …
  • Системе частиц, которая является активом, доступным в контент браузере, и который в свою очередь может ссылаться на …
  • Emitter Actor, который является размещаемым объектом, который существует на вашем уровне, контролируя, где и как частицы используются в вашей сцене.

Расчет частиц

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

  • Эмиттеры рассчитываются слева направо в списке эмиттеров.
  • Модули рассчитываются сверху вниз в стеке.

Типы эмиттеров

Так же, как существует широкий спектр типов эффектов, которые вы хотите создать с помощью ваших частиц, существует также множество типов эмиттеров, которые помогут вам создать именно то, что вам нужно. Ниже приведен список доступных типов эмиттеров:

Следует отметить, что все эмиттеры, независимо от типа, являются источниками спрайтов с самого начала. Затем к эмиттеру добавляются различные модули Type Data эмиттера, чтобы изменить его тип на что-то еще.

  • Sprite Emitters – это самые основные типы эмиттеров и наиболее часто используемые. Частицы испускаются как многоугольные спрайты (2-многоугольные карты), которые всегда обращены к камере. Полезно для дыма, огня и широкого спектра других эффектов.
  • AnimTrail Data – используется для создания трейлов из сокетов анимированных скелетов.
  • Beam Data – используется для создания лучей, таких как лазеры, полосы молнии и аналогичные эффекты.
  • GPU Sprites – это специальные типы частиц, в которых основная часть расчета времени выполнения передается на GPU. Это увеличивает количество возможных частиц с нескольких тысяч возможных частиц процессора до нескольких сотен тысяч, в зависимости от типа графического процессора в целевой системе.
  • Mesh Data – вместо того, чтобы испускать серию спрайтов, этот тип эмиттера вместо этого выдает многоугольные меши. Отлично подходит для горных слайдов, обломков и подобных эффектов.
  • Ribbon Data – это создает цепочку частиц, которые прикреплены до конца, чтобы сформировать ленту, которая следует за движущимся эмиттером.

Дополнительную информацию о доступных типах эмиттеров можно найти на странице Типы эмиттеров.

Параметры

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

Parameter – это тип свойства, который может отправлять или получать данные в / из другие системы, таких как Blueprints, Matinee, материал или многие другие источники. В Cascade практически любое заданное свойство может быть назначено параметру, что означает, что свойство затем может управляться извне системы частиц.

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

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

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

Освещенные частицы

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

Чтобы установить освещенные частицы:

  1. Убедитесь, что материал использует затененную модель, отличную от подсветки. Использование DefaultLit позволит вам получить доступ к отображению нормали, зеркальности и т.д.
  2. В LODSettings в Cascade (найденные в свойствах LOD, которые вы можете видеть, когда все модули и эмиттеры отменены), есть флажок для каждого отдельного LOD, называемого bLit. Убедитесь, что он выбран. Этот флажок может обновляться только в Cascade.

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

Уровни детализации – LODs

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

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

Именно здесь вступают в действие уровни детализации (LODs). Система LOD позволяет настраивать диапазоны расстояний, при которых система частиц автоматически упрощается. Каждый диапазон составляет другой LOD. Упрощение происходит в виде пониженных значений свойств, дезактивированных модулей или, возможно, даже дезактивированных эмиттеров. Например, в приведенном выше примере костра, было бы идеально полностью отключить эмиттер, добавляющий искры к общему эффекту, когда игрок был слишком далеко, чтобы увидеть их.

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

Распределения

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

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

Существует 5 основных типов распределения:

  • Constant – обозначает одно статическое значение, которое никоим образом не изменяется.
  • Uniform – равномерное распределение обеспечивает минимальное и максимальное значение, выводя произвольный выбор между (и включая) двумя значениями.
  • Constant Curve – постоянная кривая дает одну кривую, по которой значение интерполируется со временем. В этом случае время обычно относится к длительности между рождением и смертью частицы или временем начала и остановки излучения частиц.
  • Uniform Curve – равномерное распределение кривых дает кривую min и max. Конечное значение выбирается из точки вдоль графика, который находится между этими двумя кривыми.
  • Parameter – это тип распределения, который позволяет параметризировать свойство, чтобы его можно было манипулировать извне через Blueprints, Matinee или другими способами.
Каждый из этих типов распределения существует отдельно для значений типа данных – float и vector. Например, существуют как плавающие унифицированные кривые, так и векторные равномерные кривые. Однако, независимо от того, используете ли вы float или векторную версию каждого, распределение управляется типом контролируемого свойства; у пользователя нет выбора. Например, вы должны контролировать цвет (векторное значение для RGB) через распределение Vector Uniform, а продолжительность жизни (одно значение float) – через Float Uniform.

Для получения дополнительной информации о дистрибутивах и способах их работы читайте на странице Распространения.