reckfellENGINE

Шлейфы частиц: история, ленты и трубки

Рабочая настройка, разница истории и геометрии, позы и стоимость.

На этой странице

Шлейф частиц деформирует геометрию по истории движения. Нужны три части: история источника, меш с подходящими trail-позами и материал поверхности с использованием шлейфов. Один длинный меш без этой настройки не является следом истории движения.

Настройте ленту

  1. Используйте поддерживаемый путь рендеринга. Текущий процесс относится к Forward+/Mobile; пример исполнен на Windows Forward+/Vulkan.
  2. Назначьте GpuParticles3D материал симуляции и заметное движение. Включите Trails → Enabled, задайте Trail Lifetime.
  3. Назначьте RibbonTrailMesh проходу отображения, подберите ширину и секции.
  4. В StandardMaterial3D включите Use Particle Trails. Проверьте и MaterialOverride: он может заменить ожидаемую настройку поверхности.
  5. Выберите выравнивание для движения и VisibilityAabb, охватывающий траекторию вместе с историей следа.

Запустите C#-ленту

C#
using Reckfell;

public static class ParticleRibbon
{
    public static GpuParticles3D Create()
    {
        var surface = new StandardMaterial3D
        {
            ShadingMode = BaseMaterial3D.ShadingModeEnum.Unshaded,
            AlbedoColor = Colors.White,
            UseParticleTrails = true,
            CullMode = BaseMaterial3D.CullModeEnum.Disabled,
        };
        var ribbon = new RibbonTrailMesh
        {
            Shape = RibbonTrailMesh.ShapeEnum.Flat,
            Size = 0.12f, Sections = 8, SectionLength = 0.1f,
            SectionSegments = 2, Material = surface,
        };
        return new GpuParticles3D
        {
            Emitting = false, OneShot = true, Amount = 1, Lifetime = 2,
            Explosiveness = 1, FixedFps = 60,
            TrailEnabled = true, TrailLifetime = 0.4,
            TransformAlign = GpuParticles3D.TransformAlignEnum.YToVelocity,
            ProcessMaterial = new ParticleProcessMaterial
            {
                Direction = Vector3.Up, Spread = 0, Gravity = Vector3.Zero,
                InitialVelocityMin = 1f, InitialVelocityMax = 1f,
            },
            DrawPass1 = ribbon,
            VisibilityAabb = new Aabb(new Vector3(-3, -3, -3), new Vector3(6, 6, 6)),
        };
    }
}

Добавьте ParticleRibbon.Create() в нужный мир и вызовите Restart возвращённого источника. Активная камера должна охватывать его. Это функциональная лента с unshaded-двусторонним материалом, а не готовый дым, художественный ассет или красивая иллюстрация. Проверка также отрисовывает TubeTrailMesh с тем же trail-материалом.

В примере Lifetime частицы равен 2 секундам, TrailLifetime — 0.4 секунды. Это разные параметры: первый задаёт жизнь частицы, второй — длительность истории. Не меняйте Lifetime, если нужна другая длина истории.

Разделяйте историю времени и исходную геометрию

ПараметрЧто меняет
TrailLifetimeДлительность используемой истории; вместе с движением влияет на видимый след.
SectionsСекции меша и встроенную раскладку поз.
SectionLengthИсходную длину секции, не универсальную итоговую мировую длину шлейфа.
SectionSegments ленты / SectionRings трубкиПодразделение геометрии внутри секций.
Size ленты / Radius трубкиШирину/радиус поперечного сечения.
RadialSteps трубкиДетализацию окружности и число вершин.
CurveПрофиль ширины/радиуса генерируемого меша, не кривую движения частицы.

Sections × SectionLength описывает исходный меш. Не гарантирует такую длину готового деформированного следа в мировых единицах. В нативной проверке изменение истории увеличивает видимый след без изменения этого произведения. Для равномерного движения скорость × длительность истории — полезная исходная оценка, не точная гарантия для любой кривой, шага и деформации.

Дополнительная геометрия сглаживает профиль/изгиб, но не создаёт отсутствующие шаги истории и столкновений. Проверка подтверждает рост числа вершин ленты/трубки при детализации, а не автоматическое улучшение любой сцены.

Согласуйте позы и выравнивание

RibbonTrailMesh и TubeTrailMesh предоставляют встроенные позы. Пользовательский DrawSkin может их переопределить: несвязанный skin не объединяется с ними автоматически. Несколько проходов с несовместимой раскладкой поз требуют отдельной настройки.

Flat — одна лента, Cross — перекрёстная геометрия для разных углов. На видимость всё ещё влияют culling, billboard и камера. Для трубки нужно подходящее выравнивание при изменении пути. YToVelocity — исходный вариант примера, не доказательство отсутствия артефактов на любых изгибах и при остановке.

Прозрачность задаётся реальным alpha-режимом и сортировкой поверхности. История не создаёт независимое от порядка смешивание. Видимый unshaded-тест не подтверждает нормали, освещение, швы текстуры и прозрачность готового ассета.

Не меняйте историю без необходимости

В текущем RenderingDevice изменение включения/длительности шлейфа освобождает данные частиц и сбрасывает фазу для перевыделения. Не присваивайте эти параметры каждый кадр как дешёвое затухание. Смена количества поз меша тоже может требовать перестроения данных.

Бэкенд ограничивает историю 10 секундами и отклоняет значения ниже примерно 0.01 секунды: задавайте поддерживаемый диапазон. Getter TrailLifetime сцены сохраняет запрос и не доказывает, что большее значение выделило больше истории. Ограничение сверено по исходникам; десятисекундный приёмочный тест пример не выполняет.

Стоимость зависит от вместимости, частоты симуляции, истории и числа поз/вершин. Измеряйте характерное перекрытие шлейфов. Уменьшение геометрии и уменьшение частоты симуляции сокращают разные затраты и по-разному меняют картинку.

Найдите причину дефекта

СимптомЧто проверить
Нет правильной деформацииTrailEnabled, меш/позы и UseParticleTrails активной поверхности/override.
След обрезается у края камерыVisibilityAabb должен охватывать историю, не только голову.
Длина не равна Sections × SectionLengthИсходная геометрия не равна итоговой истории движения.
Плоская лента пропадает сбокуКамеру, culling, Flat/Cross и billboard.
Трубка плющится или закручиваетсяВыравнивание, путь, позы и секции; проверяйте движение.
Повторные сбросы или скачки загрузкиИзменение истории/поз и избыточные история/геометрия.

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

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.