3D аттракторы частиц

Аттракторы частиц

Particle attractors (Аттракторы частиц)— это узлы, которые применяют силу ко всем частицам в пределах своей досягаемости. Они притягивают частицы ближе или отталкивают их в зависимости от направления этой силы. Существует три типа аттракторов: GPUParticlesAttractorBox3D, GPUParticlesAttractorSphere3D и GPUParticlesAttractorVectorField3D. Вы можете создавать их экземпляры во время выполнения и изменять их свойства из игрового кода; вы даже можете анимировать и комбинировать их для сложных эффектов притяжения.

Примечание

Particle attractors (Аттракторы частиц) пока не реализованы для двумерных систем частиц.

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

Общие свойства

Общие свойства аттракторов частиц

Общие свойства аттракторов

Есть некоторые свойства, которые вы можете найти на всех аттракторах. Они находятся в разделе GPUParticlesAttractor3D в инспекторе.

Strength (Сила) контролирует, насколько сильна сила притяжения. Положительное значение притягивает частицы ближе к центру притяжения, а отрицательное значение отталкивает их.

Attenuation (Затухание) контролирует падение силы в области влияния аттрактора. У каждого аттрактора-частицы есть граница. Его сила слабее всего на границе этой границы и сильнее всего в ее центре. Частицы за пределами границы вообще не подвержены влиянию аттрактора. Кривая затухания контролирует, как сила ослабевает на этом расстоянии. Прямая линия означает, что сила пропорциональна расстоянию: если частица находится на полпути между границей и центром, сила аттрактора будет вдвое меньше, чем в центре. Различные формы кривых изменяют скорость ускорения частиц по направлению к аттрактору.

Различные кривые затухания аттрактора

Вариации увеличения силы: постоянно на расстоянии до аттрактора (слева), быстро на границе и медленно в центре (посередине), медленно на границе и быстро в центре (справа).

Свойство Directionality (Направленность) изменяет направление, в котором притягиваются частицы. При значении 0.0 направленность отсутствует, что означает, что частицы притягиваются к центру аттрактора. При 1.0 аттрактор полностью направлен, что означает, что частицы будут притягиваться вдоль локальной оси -Z аттрактора. Вы можете изменить глобальное направление, вращая аттрактор. Если Strength (Сила) отрицательно, частицы вместо этого притягиваются вдоль оси +Z.

Различные значения направленности аттрактора

Никакой направленности (слева) против полной направленности (справа). Обратите внимание, как частицы движутся вдоль локальной оси Z аттрактора.

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

Кубические аттракторы

Кубический аттрактор частиц

Box attractor в списке узлов

У Box attractors есть область влияния в форме коробки. Вы управляете их размером с помощью свойства Extents. Протяженность Box всегда измеряет половину сторон его границ, поэтому значение (X=1.0,Y=1.0,Z=1.0) создает коробку с областью влияния шириной 2 метра с каждой стороны.

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

Части Box attractor поле частиц

Box attractor с отрицательным значением силы разделяет поле частиц, проходя через него.

Сферические аттракторы

Сферический аттрактор частиц

Сферический аттрактор в списке узлов

Сферические аттракторы имеют сферическую область влияния. Вы управляете их размером с помощью свойства Radius. Хотя коробчатые аттракторы не обязательно должны быть идеальными кубами, сферические аттракторы всегда будут сферами: невозможно установить ширину независимо от высоты. Если вы хотите использовать сферический аттрактор для вытянутых фигур, вам необходимо изменить его Scale in the attractor's Node3D.

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

Сферический аттрактор разделяет поле частиц

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

Векторные аттракторы

Векторное поле аттрактора частиц

Аттрактор векторного поля в списке узлов

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

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

Подобно коробчатым аттракторам, аттракторы векторного поля имеют область влияния коробчатой формы. Вы управляете их размером с помощью свойства Extents, где значение (X=1,0,Y=1,0,Z=1,0) создает прямоугольник с областью влияния шириной 2 метра с каждой стороны. Свойство Texture принимает 3D texture, где каждый пиксель представляет вектор, цвет которого интерпретируется как направление и размер вектора.

Примечание

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

  1. Координаты текстуры отображаются на границы аттрактора. Изображение ниже показывает, какая часть текстуры соответствует какой части объема векторного поля. Например, нижняя половина текстуры влияет на верхнюю половину аттрактора векторного поля, потому что +Y указывает вниз в UV-пространстве текстуры, но вверх в мировом пространстве Godot.

  2. Значения цвета пикселя сопоставляются с векторами направления в пространстве. Изображение ниже дает обзор. Поскольку частицы могут двигаться в двух направлениях вдоль каждой оси, нижняя половина цветового диапазона представляет отрицательные значения направления, а верхняя половина представляет положительные значения направления. Таким образом, желтый пиксель (R=1,G=1,B=0) сопоставляется с вектором (X=1,Y=1,Z=-1), а нейтральный серый (R=0.5,G=0.5,B=0.5) приводит к отсутствию движения вообще.

Сопоставление текстуры в векторное поле

Чтобы создать vector field attractor (аттрактор векторного поля), добавьте новый дочерний узел в сцену и выберите GPUParticlesAttractorVectorField3D из списка доступных узлов. Вы можете анимировать положение аттрактора или прикрепить его к движущемуся узлу для получения более динамичных эффектов.

Совет

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

Vector field attractor (Аттрактор векторного поля) в поле частиц

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