Немного неочевидных вещей в партикловой системе Cascade на UE4
Новая партикловая система Niagara выдает потрясающие штуки в early access, но, к сожалению, весь продакшен до сих пор сидит на Cascade и будет сидеть ближайшее время и дальше, расширяя его возможности блюпринтами. Поэтому давайте глянем на некоторые неочевидные вещи текущей партикловой системы, с которыми вы можете столкнуться и потратить N-ое количество времени на поиск решений, которых может и вовсе не быть.
GPU-частицы нельзя сделать изначально разноцветными

Да, GPU-шные частицы позволяют пользоваться вектор филдами и спавнить тысячи частиц без особых проблем, но взамен этого имеют свои ограничения и не могут использовать некоторые модули. Однако то, что даже модуль Initial Color с GPU-частицами работает не полностью — довольно неочевидно (ведь цвет GPU-частиц вполне себе меняется со временем). Где-то в доках вроде как была маленькая строчка, которая поясняла это, но кто ж её упомнит. В общем, сделать так, чтобы GPU-частицы изначально рождались с разными цветами мы не сможем. Но, конечно, есть варианты с некоторыми костыльными решениями, которые иногда могут подойти.
Модуль Orbit не меняет пивот и не анимируется

Когда вы сталкиваетесь с модулем Orbit, вы думаете: «Воу, с этой штукой можно будет сделать красивые вещи! Например, если совместить её с трейлами, которые можно сделать Ribbon-частицами или же просто спавнить хвост частицами через Emitter Initial Location». Но это не так. Модуль на самом деле не смещает центр координат частицы и он остается без закручивания. Что приводит нас к тому, что все выше перечисленные модули вообще не видят движения от модуля Orbit, и поэтому прицепить что-то за частицами с Orbit'ом не получится =(
А ещё вы не сможете его нормально анимировать, так как для ввода значений Curves берется время эмиттера и by life анимации для каждой частички не получится. И с GPU-частицами немного иначе работает. Такие дела.
В ветке 4.20 сломан Beam-эмиттер

Если вы работаете с проектом на версии движка 4.20 и создаете частицы типа Beam Data, то заметите, что он не работает, как нужно. А именно: не обращает внимание на Lifetime частиц и эмиттера, на количество его повторений Loops, не меняет во времени параметры луча типа цвета или альфы.
Какой выход? Делать такие частицы на 4.21 — там вроде как все починили уже. Либо делать такой тип эмиттера на ранних версиях типа 4.19 или 4.18 и мигрейтить в двадцатую — у некоторых такой способ работал.
Ввод Uniform параметров для Particle Systems в блюпринтах
В чатицах есть метод ввода параметров Uniform — он рандомит вводные числа от одной границы до другой.
И есть метод ввода Particle Parameter — с помощью него вы можете вводить данные извне партикловой системы. Либо просто из левел-эдитора, либо из блюпринта.
Неочевидность здесь заключается в вводе Uniform значения через Parameter. То есть по дефолту выставляемое значение константное и не имеет границ — это поле Constant. И, если на уровне мы можем вручную поменять ввод параметров на рандом:

То, когда мы обычно вводим параметры в блюпринте, там ничего подобного нет:
Даже если мы будем использовать конструкцию с рандом рейнджем — он будет рандомить параметр только для всей партикловой системы в целом, а не для каждой частицы.
Поэтому решением для ввода такого рода параметров будет конструкция с Make ParticleSysParam, в которой такого рода введние параметров учитывается, хотя конструкция и выглядит сложнее обычного ввода. Если вы и так вводили параметры через такую конструкцию и не знали горя — вы молодец.
Фиксированные баунд боксы у GPU-частиц
Не забывайте фиксировать и выставлять вручную Bounding Box у GPU-частиц, иначе они пропадают как только центр эмиттера исчезает из поля зрения.
Коллизия меш-частиц
Несмотря на присутствие в модулях, метод коллизии Scene Depth с частицами типа Mesh Data не работает.
Меш партиклы ≠ статик меш
По структуре меш-партикли, которые используются в Mesh Data частицах, оказывается несколько отличаются от обычного Static Mesh, даже если вы используете один и тот же меш-ассет. Поэтому, если вы в материале используете ноды вроде LocalPosition, например, для какого-нибудь дисолва, то в частицах такой материал вполне может работать неправильно.
Перезапуск анрила
Ну и топ типс :) Если по вашей логике в частицах всё должно работать так, а работает иначе — попробуйте перезапустить движок. К сожалению, зачастую это помогает.
Статья подготовленна специально для UE4Daily.com
Если знаете еще какие-нибудь неочевидности в партикловой системе или заметили ошибку - обязательно напишите в комментариях.
Лига Разработчиков Видеоигр
8.5K поста23.1K подписчиков
Правила сообщества
ОБЩИЕ ПРАВИЛА:
- Уважайте чужой труд и используйте конструктивную критику
- Не занимайтесь саморекламой, пишите качественные и интересные посты
- Никакой политики
СТОИТ ПУБЛИКОВАТЬ:
- Посты о Вашей игре с историей её разработки и описанием полученного опыта
- Обучающие материалы, туториалы
- Интервью с опытными разработчиками
- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе
НЕ СТОИТ ПУБЛИКОВАТЬ:
- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры
- Посты, единственная цель которых - набор команды для разработки игры
- Посты, не относящиеся к тематике сообщества
Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.
ЗАПРЕЩЕНО:
- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции
- Выдавать чужой труд за свой
Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.
О РАЗМЕЩЕНИИ ССЫЛОК:
Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:
- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества
- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз
- Cсылка размещается в формате: "Страница игры в Steam: URL"