Генерация частиц по пройденному расстоянию

Обсуждение программы Magic Particles.

Генерация частиц по пройденному расстоянию

Сообщение DmitryZ » Пт фев 19, 2016 7:12 pm

Здравствуйте! Скажите, а можно как-то реализовать генерацию частиц не только по времени, а ещё и по пройденному эмиттером расстоянию? В данный момент при передвижении эмиттера частицы генерируются каждый кадр (кстати, при изменении частоты и при включении/выключении интерполяции почему-то вообще ничего не меняется), и если быстро двигать эмиттер, то частицы появляются в каждом кадре порциями. Было бы удобно делать разного рода магические трейлы, пыль из-под гусениц, дым от ракет и подобные эффекты, если можно было бы настроить частоту генерации относительно единицы расстояния. Например, при перемещении на 100 пикселей, чтобы в каждом кадре частицы генерировались на прямой, проложенной от предыдущей позиции до текущей, в количестве, пропорциональном длине этой прямой. Примерно как это сделано в Unity при выборе Emit by Distance.
DmitryZ
 
Сообщения: 1
Зарегистрирован: Пт фев 19, 2016 6:50 pm

Re: Генерация частиц по пройденному расстоянию

Сообщение Odin_KG » Сб фев 20, 2016 8:09 pm

Здравствуйте!

Скажите, а можно как-то реализовать генерацию частиц не только по времени, а ещё и по пройденному эмиттером расстоянию?

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

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

В данный момент при передвижении эмиттера частицы генерируются каждый кадр

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

(кстати, при изменении частоты и при включении/выключении интерполяции почему-то вообще ничего не меняется)

Есть частота создания частиц - она точно должна влиять. Можете там 1 секунду поставить и это станет очевидно.
Интерполяцию лучше всегда держать включенной. Её назначение совсем в другом... эмиттер всегда пересчитывается с фиксированной частотой, обычно 30 раз в секунду, т.е. для API не существует никакого другого временного шага и все характеристики частиц могут быть получены только с таким шагом. Но при интерполяции создаются сразу 2 состояния с шагом 30 Гц, а данные которые получает пользователь о частице высчитываются между этими 2-я состояниями. Это позволяет передавать в API любую частоту для обновления эмиттера. Вообще Интерполяцию отключать не стоит, так как, например, для анимированных папок (эмиттер с несколькими эмиттерами внутри), она используется автоматически (ведь эмиттеры могут иметь разные частоты обновления). А возможность отключения я оставил, скорее, для собственных отладочных целей.

Примерно как это сделано в Unity при выборе Emit by Distance.

Есть надежда, что вскоре появится плагин Magic Particles для Unity, по крайней мере, в этой области есть хорошие сдвиги.
Аватара пользователя
Odin_KG
Administrator
Administrator
 
Сообщения: 841
Зарегистрирован: Чт янв 15, 2009 2:57 pm


Вернуться в Magic Particles

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron