Материал частиц: движение, размер и цвет
Рождение и ускорение, смысл кривых, масштаб и материал поверхности.
ParticleProcessMaterial симулирует поведение частиц, а не рисует меш. Время жизни и вместимость настраиваются в источнике, материал поверхности — у отображаемой геометрии. Начальная настройка разобрана в статье Создание 3D-эффекта.
Разделяйте рождение и дальнейшие изменения
| Задача | С чего начать | Важное различие |
|---|---|---|
| Где появляются частицы | EmissionShape и размеры/данные точек | Позиции рождения, а не движущийся объём столкновений. |
| Начальное движение | Direction, Spread, InitialVelocityMin/Max | Одно направление не создаёт скорость. |
| Последующее ускорение | Gravity и параметры ускорения | Нулевое ускорение не отменяет уже имеющуюся скорость. |
| Замедление | DampingMin/Max и режим damping | Не равно уменьшению времени жизни или паузе симуляции. |
| Размер за время жизни | ScaleMin/Max и ScaleCurve | Внешний вид зависит также от геометрии и billboard-настроек. |
| Цвет | Color, начальная/временная градиентные карты и цвета точек | Материал отображения должен использовать цвет вершин частиц. |
Исполненный пример ParticlePointMaterial в статье Эмиссия по точкам изолирует настройки фиксированными камерой, зерном и unshaded-поверхностью. Он подтверждает: при нулевой начальной скорости один Direction не создаёт движение, а гравитация ускоряет частицы из покоя.
Min, Max и Curve зависят от конкретного параметра
Для случайного скалярного диапазона одинаковые минимум и максимум исключают этот источник разброса. Они не убирают Spread, случайное время рождения, другие силы и случайность остальных настроек.
Не предполагайте, что любая кривая умножает одну и ту же базовую величину. В текущем генерируемом шейдере ScaleCurve умножает масштаб, а animation offset прибавляется к базе; animation speed участвует в продвижении анимации по времени жизни. Перед переносом кривой между настройками проверьте смысл конкретного свойства.
Для масштаба диапазон 2–2 с постоянной кривой 0.5 возвращает проверенную геометрию к исходному размеру 1. Кривая читается по нормализованному времени жизни частицы, а не абсолютным секундам. Проверьте края и диапазон значений: случайный ноль или большое число могут сделать эффект будто исчезнувшим или огромным.
Keep Size не является универсальным условием работы масштаба. Это настройка поверхности, влияющая на размер billboard; обычные меши GPU-примера явно меняют размер без неё. Проверяйте свой меш и billboard-режим. Масштаб также не является общей командой остановить симуляцию или удалить источник.
Форма и направление решают разные задачи
Point, sphere, sphere surface, box и ring задают разные распределения рождения. Points/DirectedPoints читают конечный набор из текстур данных. Объёмное распределение отличается от поверхностного; не обещайте математически равномерную плотность для любой реализации формы.
EmissionShapeScale и EmissionShapeOffset преобразуют локальные позиции рождения в порядке position × scale + offset. Они не увеличивают отображаемый меш. Изменение формы не является автоматической командой переместить все живые частицы: при сравнении новой раскладки перезапускайте контролируемый эффект.
Direction вместе с InitialVelocity задаёт начальное движение, Spread меняет угловой разброс. Gravity добавляет независимое последующее ускорение. Для DirectedPoints нормали ориентируют локальный базис: пример использует локальное +Z (Vector3.Back), чтобы скорость шла вдоль записанной нормали. При другом базовом Direction это не обязательно так.
Ускорение и замедление
- Gravity — ускорение материала, а не подписка на гравитацию физического мира. Если нужна связь, синхронизируйте её явно.
- Линейное ускорение меняет скорость вдоль соответствующего направления движения, а не присваивает позицию.
- Радиальное ускорение использует направление от начала источника. Знак определяет движение наружу или внутрь.
- Тангенциальное ускорение в генерируемом 3D-шейдере использует векторное произведение с участием Gravity. Оно не ограничено мировой XZ при любой гравитации. Путь Disable Z имеет отдельный плоский расчёт.
- Обычный damping уменьшает скорость. Damping As Friction переключает расчёт на зависимость от скорости и не обещает полностью откалиброванную физическую модель трения. Ускорение может противодействовать замедлению.
Эти дополнительные ветки сил здесь сверены по исходникам шейдера, а не все исполнены небольшим GPU-примером. Для сложного движения включайте по одному фактору и сравнивайте при одинаковых времени жизни и зерне до объединения.
Цвет требует материала отображения
Process Color умножается на остальные источники цвета частиц. Данные цвета точек также модулируют результат, а не заменяют его независимо от базы. Жёлтый цвет материала убирает синюю группу в проверенном красно-синем примере.
ColorInitialRamp задаёт случайный начальный выбор цвета; ColorRamp меняет цвет по нормализованному времени жизни. При неожиданном затемнении проверьте оба. Для использования цвета частиц стандартной поверхности нужен Vertex Color → Use As Albedo (VertexColorUseAsAlbedo = true), а белый albedo исключает ещё одно нежелательное окрашивание.
Для alpha требуется подходящий режим прозрачности поверхности. Непрозрачный материал не становится полупрозрачным дымом из-за alpha в цвете или градиенте симуляции. При этом большие blended-карточки могут быть дорогими даже при небольшом количестве частиц. Не исправляйте ошибку материала/цвета одним увеличением эмиссии.
Время жизни, флаги и дополнительные настройки
LifetimeRandomness меняет эффективную жизнь отдельной частицы относительно базового Lifetime источника. Это отличается от Randomness источника, который меняет моменты рождения. Флаги выравнивания/вращения управляют ориентацией, а материал поверхности может добавлять billboard-поведение: проверяйте сочетание, не считайте все параметры вращения взаимозаменяемыми.
Disable Z ограничивает соответствующий путь частиц с учётом LocalCoords. Attractors, turbulence, collision, sub-emission и текстуры анимации требуют дополнительной настройки; одна галочка материала не подтверждает готовый рабочий эффект.
Сопутствующий пример содержит 14 нативных проверок Windows Forward+/Vulkan для точек, цвета, преобразования формы, масштаба/кривой и направления/скорости/гравитации. Остальные силы/флаги, все примитивные формы, продвинутые эффекты, экспорт и производительность проверяются отдельно. См. Время источника, включая ограничение SpeedScale/Finished.