Системы частиц (2D)

Введение

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

Идея состоит в том, что «частица» испускается через фиксированный интервал и с фиксированным временем жизни. В течение своей жизни у каждой частицы будет одно базовое поведение. Что отличает каждую частицу от остальных и обеспечивает более натуральный вид, так это «случайность», связанная с каждым параметром. По сути, создание системы частиц означает установку основных физических параметров, а затем добавление к ним случайности.

Узлы частиц

Godot предоставляет два разных узла для 2D-частиц: :ref: class_Particles2D и :ref:` class_CPUParticles2D`. Particles2D - более продвинутый и использует графический процессор для обработки эффектов частиц, но это ограничивает его графическим API более высокого уровня и, в нашем случае, средством визуализации GLES3. Для проектов, использующих под капотом GLES2, CPUParticles2D - это вариант, управляемый процессором, с почти соответствующими функциями с Particles2D, но меньшей производительностью. Хотя Particles2D настраивается с помощью :ref: class_ParticlesMaterial (и, возможно, с помощью настраиваемого шейдера), параметры сопоставления предоставляются через свойства узла в CPUParticles2D (за исключением настроек следа). Вы можете преобразовать узел Particles2D в узел CPUParticles2D, щелкнув по узлу в инспекторе и выбрав «Преобразовать в CPUParticles2D» в меню «Частицы» панели инструментов.

../../_images/particles_convert.png

В оставшейся части этого руководства мы будем использовать узел Particles2D. Сначала добавьте в сцену узел Particles2D. После создания этого узла вы заметите, что была создана только белая точка и что рядом с вашим узлом Particles2D в инспекторе есть значок предупреждения. Это связано с тем, что для работы узла требуется функция ParticlesMaterial.

Материал частиц

Чтобы добавить технологический материал в узел частиц, перейдите в раздел Process Material на панели инспектора. Щелкните поле рядом с Material и в раскрывающемся меню выберите New ParticlesMaterial.

../../_images/particles_material.png

Теперь ваш узел Particles2D должен излучать белые точки вниз.

../../_images/particles1.png

Текстура

Система частиц использует единую текстуру (в будущем это может быть расширено до анимированных текстур через таблицу спрайтов). Текстура устанавливается через соответствующее свойство текстуры:

../../_images/particles2.png

Параметры времени

Время жизни

Время в секундах, в течение которого каждая частица останется в живых. Когда время жизни заканчивается, вместо нее создается новая частица.

Продолжительность жизни: 0,5

../../_images/paranim14.gif

Продолжительность жизни: 4,0

../../_images/paranim15.gif

Одноразовый

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

Предобработка

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

Масштаб скорости

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

Взрывоопасность

Если продолжительность жизни равна 1 и имеется 10 частиц, это означает, что частица будет испускаться каждую 0,1 секунды. Параметр "explosiveness" меняет это и заставляет частицы испускаться все вместе. Диапазоны:

  • 0: Испускать частицы через равные промежутки времени (значение по умолчанию).

  • 1: Испускать все частицы одновременно.

Допускаются также значения в середине. Эта функция полезна для создания взрывов или внезапных выбросов частиц:

../../_images/paranim18.gif

Случайность

Все физические параметры могут быть рандомизированы. Диапазон случайных значений от 0 до ``1 ``. Формула рандомизации параметра:

initial_value = param_value + param_value * randomness

Фиксированный FPS

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

Fract Delta

Это можно использовать для включения или выключения Fract Delta.

Параметры отрисовки

Видимый прямоугольник

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

Свойства прямоугольника W и H соответственно управляют его шириной и высотой. Свойства X и Y управляют положением верхнего левого угла прямоугольника относительно излучателя частиц.

Вы можете настроить Godot для автоматического создания прямоугольника видимости с помощью панели инструментов над 2-мерным видом. Для этого выберите узел Particles2D и нажмите Particles> Generate Visibility Rect. Godot будет имитировать узел Particles2D, излучающий частицы, в течение нескольких секунд и установит прямоугольник в соответствии с поверхностью, которую принимают частицы.

Вы можете контролировать длительность излучения с помощью опции Generation Time (sec). Максимальное значение - 25 секунд. Если вам нужно больше времени для перемещения частиц, вы можете временно изменить длительность preprocess на узле Particles2D.

Локальные координаты

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

../../_images/paranim20.gif

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

../../_images/paranim21.gif

Порядок рисования

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

Параметры материала частиц

Направление

Это основное направление, в котором испускаются частицы. По умолчанию это Vector3 (1, 0, 0), что заставляет частицы излучаться вправо. Однако с настройками силы тяжести по умолчанию частицы будут идти прямо вниз.

../../_images/direction1.png

Чтобы это свойство было заметным, вам нужна начальная скорость больше 0. Здесь мы установили начальную скорость равной 40. Вы заметите, что частицы испускаются вправо, а затем падают вниз из-за силы тяжести.

../../_images/direction2.png

Разброс

Этот параметр - угол в градусах, который будет случайным образом добавлен к основному направлению Direction. Разброс 180 приведет к излучению во всех направлениях (+/- 180). Для того, чтобы активировался разброс частиц, параметр Initial Velocity должен быть больше 0.

../../_images/paranim3.gif

Плоскостность

Это свойство полезно только для 3D-частиц.

Гравитация

Гравитация применяется к каждой частице.

../../_images/paranim7.gif

Начальная скорость

Начальная скорость - это скорость, с которой будут испускаться частицы (в пикселях/сек). Позднее скорость может быть изменена под действием силы тяжести или других ускорений (как описано ниже).

../../_images/paranim4.gif

Угловая скорость

Угловая скорость - это начальная угловая скорость, применяемая к частицам.

Скорость Спина

Скорость спина - это скорость при которой частицы вращаются вокруг своих центров (в градусах/сек).

../../_images/paranim5.gif

Орбитальная скорость

Orbit Velocity используется для вращения частиц вокруг своего центра.

../../_images/paranim6.gif

Линейное Ускорение

Линейное ускорение применяется к каждой частице.

Радиальное (Нормальное) Ускорение

Если это ускорение положительное, частицы ускоряются от центра. Если отрицательное, они поглощаются им.

../../_images/paranim8.gif

Касательное Ускорение

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

../../_images/paranim9.gif

Амортизация

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

../../_images/paranim10.gif

Угол

Определяет начальный угол частицы (в градусах). Этот параметр в основном полезен в случайном порядке.

../../_images/paranim11.gif

Масштаб

Определяет начальный размер частиц.

../../_images/paranim12.gif

Цвет

Используется для изменения цвета испускаемых частиц.

Изменение оттенка

Значение Variation устанавливает начальное изменение оттенка, применяемое к каждой частице. Значение Variation Random контролирует коэффициент случайности изменения оттенка.

Формы излучения

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

Убедитесь, что задан ParticlesMaterial и выбран узел Particles2D. На панели инструментов должно появиться меню «Частицы»:

../../_images/emission_shapes1.png

Откройте его и выберите "Загрузить маску излучения":

../../_images/emission_shapes2.png

Затем выберите, какую текстуру вы хотите использовать в качестве маски:

../../_images/emission_shapes3.png

Появится диалоговое окно с несколькими настройками.

Маска излучения

Из текстуры могут быть сгенерированы три типа масок излучения:

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

../../_images/emission_mask_solid.gif
  • Граничные пиксели: Частицы будут появляться на внешних краях текстуры.

../../_images/emission_mask_border.gif
  • Направленные пограничные пиксели: похожи на пограничные пиксели, но добавляют дополнительную информацию к маске, чтобы дать частицам возможность испускаться вдали от границ. Обратите внимание, что для того, чтобы использовать это, необходимо установить Initial Velocity.

../../_images/emission_mask_directed_border.gif

Цвета излучения

Из пикселя заставит частицы унаследовать цвет маски в своих точках появления.

После того, как вы нажмете "ОК", маска будет сгенерирована и установлена на ParticlesMaterial в разделе Emission Shape:

../../_images/emission_shapes4.png

Все значения в этом разделе были автоматически сгенерированы меню «Загрузить маску излучения», поэтому их, как правило, следует оставить в покое.

Примечание

Изображение не следует добавлять напрямую в Point Texture или Color Texture. Вместо этого всегда следует использовать меню «Загрузить маску излучения».