Притягиватели GPU-частиц
Область, сила, затухание, направление, маски и векторные поля.
Притягиватель добавляет силу GPU-частицам внутри своей области. Он не телепортирует их на траекторию, не присваивает каждой скорость напрямую и не меняет гравитацию игровых тел. Исходная скорость и другие силы материала продолжают действовать.
Включите взаимодействие
- В ParticleProcessMaterial включите Attractor Interaction (
AttractorInteractionEnabled). - Добавьте подходящий притягиватель частиц в тот же эффективный World3D.
- Согласуйте его CullMask с render Layers источника, не с физическими CollisionLayer/CollisionMask.
- Задайте область и силу; сначала отключите лишние факторы движения, чтобы увидеть результат.
- Проверьте частицу, рождённую внутри области, подходящую камеру и VisibilityAabb. Корректная сила не доказывает, что эффект вне кадра отрисовывается.
ParticleForces.CreatePull() из примера столкновений создаёт сферу в (1, 0, 0) с Radius 3, Strength 8, Attenuation 1 и Directionality 0. Добавьте Entity в мир и включите взаимодействие материала. Это пример коэффициента, не откалиброванный пресет гравитации.
GPU-проверка подтверждает притяжение к центру, отталкивание отрицательной силой, отсутствие влияния за радиусом и фильтрацию маской. Выключение флага материала оставляет эталонные частицы с нулевой скоростью в начале координат.
Правильно понимайте параметры
| Параметр | Смысл |
|---|---|
| Strength | Положительное значение тянет вдоль выбранной силы, отрицательное обращает её. Для обычных ненаправленных сферы/бокса — к центру/от него. |
| Attenuation | Показатель изменения силы внутри области; используйте разумное неотрицательное значение. Не расстояние в метрах и не скорость частицы. |
| Directionality | 0 использует направление к центру для сферы/бокса; 1 — локальное -Z притягивателя при положительном Strength. Между ними направления смешиваются. |
| CullMask | Выбор источников по render Layers. Это не фильтр влияния по видимости камеры. |
| Radius / Size | Область соответствующей формы. Size бокса — полные локальные размеры, не половинные extents. |
Поворот полностью направленного притягивателя меняет ось силы. Нативная проверка направляет локальное -Z вбок и подтверждает боковое ускорение. Отрицательный Strength обращает направление. Позиция всё ещё определяет попадание в область и затухание.
Частицы могут пересекать центр и пролетать его: сила ускоряет их, а не закрепляет позицию. Осознанно настраивайте жизнь, damping, начальную скорость и точность симуляции вместо подбора огромного Strength по одному кадру.
Выберите форму
Сфера и бокс задают простые области. Для контролируемой проверки используйте явные Radius/Size; не предполагайте заранее одинаковую проверенную работу любого неравномерного масштаба или движущейся области.
Векторное поле читает Texture3D внутри своего бокса. Шейдер линейно семплирует поле, декодирует знаковое направление/величину вокруг нейтрального (0.5, 0.5, 0.5) и добавляет силу с учётом настроенных strength, falloff и directionality. Это не привязка к ближайшему вектору и не прямое присваивание скорости.
В обычной ненаправленной интерпретации компоненты RGB выше/ниже 0.5 дают положительные/отрицательные компоненты после декодирования. До сложного шума проверьте известное постоянное поле, включая оси и кодирование импортированной текстуры. Вид среза в 2D-просмотрщике не доказывает универсальный переворот Y. В данном проходе семплирование поля сверено по исходникам, а исполняемый пример векторной текстуры не заявлен.
Согласуйте силу и границы отображения
Траектория может выйти за исходную область рождения. VisibilityAabb должен покрывать её и размеры меша: притягиватель не расширяет границы автоматически. Исчезновение эффекта может быть отсечением, а не пропажей силы.
Общий ParticleProcessMaterial означает общие AttractorInteractionEnabled и другие настройки. Создавайте отдельные ресурсы для разной реакции источников либо осознанно используйте слои/маски. Обычные Area3D и переопределение физической гравитации не становятся притягивателями GPU-частиц автоматически.
Найдите причину неправильной силы
| Симптом | Что проверить |
|---|---|
| Нет видимой реакции | Флаг материала, общий World3D, область, маски и видимость эффекта. |
| Всё ускоряется не туда | Знак Strength, Directionality, поворот и кодирование поля. |
| Сила внезапно пропадает | Границу области, жизнь и отсечение рендеринга. |
| Частицы колеблются через центр | Исходную скорость и ускорение: притяжение не фиксирует позицию. |
| Настройка одного источника меняет другой | Общий материал симуляции. |
| Срезы поля направлены неожиданно | Раскладку Texture3D, знаковое кодирование и трансформацию; начните с известного простого вектора. |
Нативные проверки используют сферу на Windows Forward+/Vulkan. Векторные текстуры, неравномерный масштаб, движение притягивателей, объединённые поля, все устройства/экспорты и производительность проверяются отдельно. Это визуальная симуляция частиц, не замена достоверной игровой физике.