Системы частиц
Система частиц - действительно универсальная техника, позволяющая создавать сложные движущиеся структуры, производящие динамические и «нечеткие» эффекты. Эти структуры используются для моделирования абстрактных эффектов огня, дыма, взрывов, электричества, фонтанов, ракетных следов, стая, магии и многих других. Все эти эффекты трудно воспроизвести с помощью традиционных жестких объектов: частицы представлены не набором примитивных элементов поверхности, а точечными массами, образующими объем примитивов частиц. Еще одна отличительная особенность - частицы не статичны - они могут со временем менять не только свое положение, но и форму.
Система частиц состоит из трех основных сущностей:
- Эмиттер - источник, испускающий частицы в соответствии со значениями, установленными в параметрах группы Emitter.
- Сами частицы, которые испускаются согласно заранее заданному поведению после ипускания .
- Дополнительные физические эффекты, применяемые к частицам и влияющие на их поведение.
Смотрите также#
- Материал particles_base для настройки внешнего вида частиц
- Класс ObjectParticles для управления частицами через API
- Набор сэмплов, находящихся в комплекте Art Samples:
Создание частиц#
Чтобы создать частицы, выполните следующие действия:
- В строке меню щелкните Create -> Particle System -> Particles.
- Поместите объект Particles где-нибудь в мире.
- Настройте параметры частиц.
Параметры излучателя#
Поведение эмиттера частиц задается в параметрах Emitter.
Clear On Enable | Разрешает повторную инициализацию системы частиц каждый раз при ее включении. Когда эта опция отключена, включение системы частиц восстанавливает состояние, в котором она была до выключения. |
---|---|
Emitter Enabled | Включает эмиттер. |
Emitter Sync | Включает синхронизацию дочерней системы частиц с родительской, даже если для дочерней системы частиц опция Emitter Enabled отключена. |
Emitter Shape | Форма объема, внутри которого генерируются частицы: |
Emitter Size | Размер источника частиц. Количество полей (будь то радиус или граничные размеры) зависит от выбранной формы. |
Particles Type |
|
Sequence Order | Порядок рендеринга систем частиц, особенно при создании сложных эффектов, таких как выстрелы (с дульной вспышкой, дымом и самим выстрелом, каждый из которых представлен отдельной системой частиц). Этот параметр очень похож на Rendering Order в настройках материалов. Но он позволяет установить последовательность рендеринга внутри иерархии системы частиц, чтобы избежать таких ситуаций, когда дым от далекого выстрела рендерится поверх огня выстрела переднего плана.
|
Emitter Shift | Включение этого флажка заставляет эмиттер генерировать частицы только тогда, когда система частиц движется. |
Emitter Continuous | Включает непрерывные частицы, которые следуют за смещением эмиттера. |
Texture Atlas | Включение этой функции приводит к следующему: случайное изображение из текстуры альбедо подбирается для каждой частицы.
Чтобы использовать эту опцию, Анимация текстуры должны быть отключена. |
Texture Atlas Size | Размер текстурного атласа. |
Random Flip X | Переворот случайно испускаемых частиц по горизонтали (по оси X). |
Random Flip Y | Переворот случайно испускаемых частиц по вертикали (по оси Y). |
Warming On Start | Включает и выключает инициализацию системы частиц с иллюзией предшествующей активности. Система частиц развивается со временем, поэтому после встречи с ней в виртуальном мире система только начинает работать. генерируется, частица за частицей, пока вся система не приобретет желаемый вид. Когда персонаж выйдет на поляну, мы увидим, как постепенно разгорается огонь. Стартовый прогрев для частиц позволяет сразу рендерить полноценную систему частиц. Техническая реализация горячего старта следующая: когда система частиц инициализируется при столкновении, ее жизнь вычисляется, начиная с рождения первой частицы до ее исчезновения. После этого система частиц считается развитой и отображается в этом состоянии. Расчеты производятся с фиксированной частотой кадров 25 кадров в секунду, что является минимумом, необходимым для правильного моделирования систем частиц (см. Также информацию о корреляция между частотой кадров ). Стартовый прогрев можно включить без какого-либо пагубного воздействия на любые системы частиц, кроме огромных. |
Max Warming Time (Sec) | Максимальное время прогрева системы частиц. |
Spawn Rate | Количество действий возрождения в секунду. Значение определяет, сколько раз определенное количество частиц будет создан за одну секунду . Например, значение 5 соответствует 5 действиям появления в секунду. 0 приводит к отсутствию частиц вообще. |
Number Per Spawn | Количество частиц, которые будут порождаться одновременно каждый раз в соответствии с параметром Spawn Rate. |
Spawn Threshold | Порог количества частиц в зависимости от скорости родительских частиц. Этот параметр используется для дополнительной синхронизации количества частиц, порождаемых spark а также random эмиттеры с родительской системой частиц. Порог для эмиттера random функционирует только с системой частиц в качестве родительского узла.
|
Limit Per Spawn | Общее максимальное количество частиц, испускаемых за раз. Этот параметр указывает количество частиц, которые могут одновременно существовать в мире. Другими словами, количество существующих в мире частиц не может превышать предельное значение. Например, если значение Number per Spawn равно 10, а значение Limit Per Spawn равно 5, будет испущено 5 частиц. И никакие частицы не будут порождаться, пока не будут созданы предыдущие. |
Life Time (Sec) | Продолжительность существования частиц после испускания в секундах. Этот параметр также имеет значение Spread, которое создает разнообразие значения Life Time в секундах. |
Delay | Эта опция определяет время, которое должно пройти между инициализацией родительской системы и инициализацией дочернего узла. Если задана какая-либо задержка, родительская система начинает испускать частицы, а после задержки активируется генерация дочерних частиц. Если у системы частиц нет дочерних элементов, задержка определяет время, по истечении которого частицы испускаются. Этот параметр также имеет значение Spread, которое создает различную задержку инициализации частицы в секундах. |
Period | Продолжительность паузы между циклами генерации в секундах.
|
Duration | Продолжительность цикла генерации, в течение которого происходит испускание, в секундах.
|
Spread (+/-) | Опция Spread вводит дополнительную модуляцию соответствующего параметра. Он представляет собой диапазон значений, которые могут быть случайным образом добавлены или вычтены из указанного значения параметра. |
Поведение после испускания#
Этот набор параметров определяет, как частицы ведут себя после испускания:
Параметры настройки значений#
Большинство параметров в этом разделе имеют несколько вариантов установки значения:
- Const - значение точное и не меняется с течением времени.
- Between Const - задается интервал, из которого выбирается случайное значение для каждого экземпляра.
- Curve - значение параметра изменяется во времени в зависимости от кривой, задаваемой в Редакторе кривых .
- Between Curve - есть две кривые, установленные в Редакторе кривых, которые определяют пределы, и в каждый момент времени в этих пределах берется случайное значение. Значение параметра изменяется со временем на основе этого случайно сгенерированного набора значений.
Чтобы выбрать желаемый тип значения, используйте кнопку с изображением шестеренки.
Depth Sort | Сортировка по глубине требуется, если частицы используют альфа-смешение (кроме аддитивного ). Если этот параметр не включен, то на основе данных буфера глубины непрозрачные объекты, расположенные дальше, могут неправильно отображаться перед прозрачными частицами. При сортировке по глубине геометрия отображается в порядке от задней части к передней , что исключает визуальные артефакты. | ||||
---|---|---|---|---|---|
Emitter Based | Включение этой опции заставляет частицы двигаться вместе с эмиттером. | ||||
Position | Координаты положения частицы относительно излучателя по осям X , Y и Z. | ||||
Gravity | Сила тяжести, действующая на частицы по осям X , Y и Z.
Вращение узла системы частиц не влияет на вектор гравитации. |
||||
Direction | Направление, в котором движутся все испускаемые частицы, образуя поток, заданное по осям X , Y и Z. | ||||
Velocity | Скорость движения частиц в заданном направлении , в единицах (unit) в секунду. Чтобы поток выглядел естественно, конечная скорость каждой отдельной частицы может отличаться, если задан диапазон значений. | ||||
Linear Damping | Уменьшение частиц линейное скорость со временем. Этот параметр используется для моделирования эффекта трения среды для частиц. | ||||
Angle | Угол ориентации частиц в пространстве, в градусах. Если значение угла установлено на 180 градусов, частицы будут случайным образом ориентированы во всех направлениях. |
||||
Rotation Speed | Угловая скорость частиц в градусах в секунду.
|
||||
Radius | Радиус (половинный размер) частицы. | ||||
Increase In Radius | Увеличение размера частицы в единицах в секунду.
|
||||
Length Stretch | Растяжка биллборда частиц, доступная для Length Particles. При значении 0 частица длины представляет собой просто квадратный биллборд. При увеличении значения частицы растягиваются в направлении их движения. Результат рассчитывается путем умножения значения растяжения на скорость частицы. Таким образом, чем выше скорость, тем сильнее растягиваются частицы в направлении своего движения, в то время как другая сторона остается той же ширины.
|
||||
Length Flattening | Делает Length Particles не ориентированным на камеру, как обычные частицы билборда, а более перпендикулярным оси Z. При значении 0 частицы не сплющиваются. При максимальном значении 1 частицы будут плоскими (перпендикулярно оси Z) при испускании.
|
Взаимодействие#
Взаимодействие частиц ограничивается применением силы и столкновения с внешними объектами. Есть два метода обнаружения столкновения с внешними объектами: с помощью параметра Physics Intersection или параметра Collision.
Physical Mask | Для более избирательного взаимодействия систем частиц с физическими узлами используется битовая маска physical. Эта битовая маска устанавливается как для системы частиц, так и для силы . Эти маски должны иметь хотя бы один совпадающий бит, иначе не будет никакого взаимодействия. Другие части маски могут соответствовать маскам других сил, обеспечивая тем самым полный контроль над интеграцией сцены. |
---|---|
Physical Mass | Чтобы участвовать в динамике сцены, частицы должны иметь определенную массу в килограммах. Это значение определяет интенсивность воздействия физического узла на поток частиц.
Параметр Physical Mass не влияет на другие вычисления.
|
Restitution | Сила частиц, отскакивающих от препятствия. Эта опция очень удобна для моделирования некоторых водных эффектов, включая брызги. Сила эффекта отскока зависит как от параметра восстановления частиц, так и от значения параметра поверхности восстановления, установленного для сталкивающегося объекта (Properties -> Parameters -> Restitution).
|
Roughness | Шероховатость поверхности препятствия, с которым сталкивается частица. Он определяет, разлетаются ли частицы в разных направлениях или реагируют как однородно направленный поток.
|
Collision | Включает обнаружение столкновений по всей форме частицы. Если частицы достаточно большие, этот метод предпочтительнее, чем Intersection, так как обеспечивает более высокую степень визуального реализма: частицы реагируют в соответствии с заданными параметрами, когда их край или вершина соприкасаются с объектом. Расчеты столкновений обходятся дороже, поэтому системам с большими частицами следует осторожно использовать эту опцию. |
Intersection | Включает обнаружение пересечения с центром частицы. Физическое пересечение может выглядеть немного неестественным, поскольку физическая реакция начинается только тогда, когда половина частицы уже проникла в сетку, но она отлично подходит, если много мелких частиц. Основным преимуществом этого метода является то, что он быстрый и дешевый по производительности. Физические пересечения обнаруживаются для сопоставления битовые маски пересечения физики . |
Destroy In Collision/Intersection | Включает и выключает отбраковку частиц, которые уже подверглись столкновению или пересечению. |
Рендеринг в текстуру#
Частицы могут быть визуализированы в процедурную текстуру, которая будет использоваться Orthographic Decal или Field Height. Эту функцию можно использовать, например, для создания эффектов следа от корабля или брызг масла.
Доступны следующие настройки:
Rendering | Включает рендеринг частиц в процедурную текстуру. |
---|---|
Positioning | Определяет режим позиционирования, который будет использоваться для дочерних узлов (декаль или поле) с использованием процедурной текстуры, в которую визуализируется система частиц. Доступны следующие значения:
Вступает в силу только тогда, когда в Procedural Parenting выбрано значение Children. |
Parenting | Определяет взаимосвязь между системой частиц и узлом типа Decal / Field, который использует процедурную текстуру, в которой отображается система частиц:
|
Resolution | Задает разрешение процедурной текстуры, в которой визуализируются частицы.
|
Дополнительные физические эффекты#
Более сложные изменения в дальнейшем движении частиц можно получить, применив дополнительные физические эффекты. Они влияют на поток частиц в нужном направлении или, наоборот, отклоняют его. Эффекты могут быть трех основных типов:
Нет ограничений на количество дополнительных физических эффектов, применяемых к одной системе частиц, и они могут свободно перекрываться, что позволяет легко и быстро создавать сложные траектории.
Силы#
Этот эффект представляет собой силу, сосредоточенную в точке, приложение которой ограничено сферой. Силовую сферу можно разместить в любом месте сцены и при необходимости повернуть. Однако, чтобы сила повлияла на движение частиц, они должны находиться внутри ее радиуса .
Шум#
Физический шум - это область в форме куба, которая добавляет поток распределения на основе текстуры объемного шума.
Дефлекторы#
Дефлектор - это поверхностное поле, которое не имеет визуального представления, но физически взаимодействует с системой частиц (конечно, никакие другие объекты не подвергаются влиянию). В зависимости от указанного размера он может быть прямоугольным или квадратным, а также произвольно размещенным или повернутым для покрытия необходимой площади.
Дефлекторы односторонние , то есть частицы могут беспрепятственно проникать в них с одной стороны, а взаимодействовать только с противоположной, например, при падении на нее сверху.
Иерархия узлов частиц#
Для создания сложных эффектов необходимо, чтобы все системы частиц были синхронизированы во времени. Установка системы частиц в качестве родительского узла приводит к следующему:
- Все системы частиц, которые являются дочерними узлами, синхронизированы относительно своих родительских систем частиц. Если у дочерних элементов есть собственные дети, они все равно синхронизируются с основной родительской системой, которая является самой высокой в иерархии.
- При создании новой дочерней системы частиц ее необходимо синхронизировать с родительской, отключив и снова включив родительский эмиттер (вкладка Node→ поле Enabled). В этот момент каждая из дочерних систем инициализируется своим Параметры эмиттера (такие как продолжительность излучения , продолжительность паузы генерации, и задержка инициализации).
- Отключение или включение родительского эмиттера (вкладка Node→ поле Enabled) влияет на все дочерние системы частиц: они синхронно прекращают или начинают испускать частицы (испускаемые частицы все еще доживают до своего времени).
- Отключение или включение родительского узла (вкладка Node→ поле Enabled) также влияет на всех дочерних узлов: все системы частиц в иерархии выключаются и включаются - и сохраняют то же состояние, которое было в момент их отключения.
Синхронизация нескольких систем частиц#
Чтобы синхронизировать несколько систем частиц, например, чтобы создать эффект выстрела (с тремя системами частиц: дульная вспышка, дым и пуля), вы можете сделать следующее:
- Создайте родительскую систему частиц, которая будет использоваться как фиктивная, исключительно для целей синхронизации (вы даже можете отключить ее поверхность). Его Продолжительность временной интервал должен охватывать все интервалы продолжительности и интервалы задержки (если есть) дочерних систем частиц. Остальные параметры (частота появления и т.д.) Значения не имеют.
- Добавьте дочерние системы частиц. У них может быть любое требуемое время Duration (но оно должно быть меньше, чем у родительского). Например, чтобы синхронизировать все дочерние системы частиц одновременно и порождать только одну частицу, вы можете установить следующее:
- Duration = 0
- Limit Per Spawn = 1
- Spawn Rate = inf/100000
Оптимизация симуляции#
Обновление в каждом кадре огромного количества объектов, расположенных далеко от камеры, трудно различимых и наблюдаемых в виде некой массы, является пустой тратой ресурсов.
Чтобы улучшить производительность и избежать чрезмерной нагрузки, симуляцию системы частиц можно обновлять с уменьшенной частотой кадров . Когда система частиц выходит за пределы области, указанной параметром Update Distance Limit, частицы перестают обновляться и статически замирают.
Приведенный ниже набор частот кадров позволяет указать, как часто моделирование частиц должно обновляться, когда система частиц видна, когда видна только ее тень или когда она не видна вообще.
Эта функция включена с настройками по умолчанию, обеспечивающими оптимальную производительность, и может быть настроена для каждого объекта в UnigineEditor или через API во время выполнения.
Если ваш проект, например, содержит систему невидимых частиц (например, с использованием маски Viewport) и некоторую логику, прикрепленную к ее обновлению (например, порождение некоторых видимых частиц при столкновении с объектами), эта логика не будет работать, поскольку система частиц может обновляться по сниженной цене или вообще не обновляться. Чтобы разрешить обновление таких объектов независимо от их видимости, вы можете установить для параметра Update Distance Limit и соответствующие значения частоты обновления для него равными infinity.
Частицы на основе сетки (mesh)#
Можно создавать системы частиц на основе сетки. Для этого нужно добавить Mesh Cluster как дочерний узел системы частиц (ObjectParticles). После этого эмиттер начинает автоматически генерировать меши.