Создание частиц пламени

From Valve Developer Community
< Ru
Jump to navigation Jump to search
English (en)Русский (ru)中文 (zh)Translate (Translate)

Обзор

Цель этого руководства - дать представление о создании пламени огня с помощью частиц.

В этой статье не будет подробного объяснения всех аспектов создания частиц, поскольку имеется(en) отдельная документация. Вы научитесь создавать частицу пламени следующим образом:

Fire particle.jpg

Свойства

1. Создайте новую систему частиц и назовите её. Мы должны определится с основными свойствами частиц. В главной вкладке частиц нажмите properties (свойства).

2. Измените максимальное количество частиц (max_particles) на 40. Теперь выберите material, нажмите кнопку ..., чтобы выбрать в открывшемся обзоре материалов подходящую текстуру огня. Для примера пусть будет particle/fire_particle_4/fire_particle_4.vmt

3. Установите bounding_box_min на -512 -512 -512 и bounding_box_max на 512 512 512 Измените значение color на оранжевый. В этих настройках мы закончили. Переходим на вкладку "render (отображение)".

Отображение

Всем частицам нужна какая-то визуализация. Мы же это будем делать с помощью отображения render_animated_sprites. Создайте и измените его значение animation_rate на 0.9 и измените animation_fit_lifetime на 1. Отображение настроили. Теперь нажимаем на вкладку "operator".

Операторы

1. С помощью операторов определяются такие параметры, как тип движения, появление/исчезание за счёт альфа-канала, время жизни и т.д. Операторы выполняются после после того, как инициаторы определят начальное состояние.

2. На вкладке операторов добавьте Movement Basic . Это определяет основные движения частицы. Измените gravity на 0 0 50 . Гравитация направляет огонь в нужную сторону. 0 0 50 направляет его вверх как в реальности. Если установить 0 0 -50, то огонь будет направлен вниз.

3. Далее добавьте Oscillate Vector. Этот оператор поможет создать эффект дрожания пламени, чтобы пламя переливалось и тряслось как в реальности, а не выглядело статичным. Пример функции колебаний пламени:

Sin wave.jpg

4. В Oscillate Vector возле oscillation rate min измените значение на -0.400000006 -0.400000006 0 и oscillation rate max на 0.400000006 0.400000006 0. Измените значения oscillation frequency min на 0.5 0.5 1, далее oscillation frequency max на 1 1 0.

С этим закончили.

5. Добавим Lifespan Decay этот оператор поможет уничтожить (чтобы он плавно исчезал) частицу после некоторого времени.

6. Давайте сделаем Alpha Fade. Добавляем Alpha Fade In Random в нем изменяем значения fade in time min на 0.3000000119 и fade in time max на 0.400000006. Теперь добавим Alpha Fade Out Random и измените в нём значения fade out time min на 0.349999994 и fade out time max на 0.5.

С операторами закончили.

Инициаторы

Добавим инициатор для определения начального состояния частиц.

1. Добавьте Radius Random и установите значения radius_min на 3 и radius_max на 10 . Это определет размер испускаемых частиц, если нужно больше, то измените максимальное значение на 50.

2. Далее добавьте Alpha Random, установите значения alpha_min на 120 и alpha_max на 200.

3. Добавьте Rotation Random ничего не изменяя.

4. Добавьте Position Within Sphere Random , установите значения distance_bias на 1 1 0 и speed_max на 10. Установите значения speed_in_local_coordinate_system_min и speed_in_local_coordinate_system_max на 0 0 5 . Это определит появление частиц в пределах этой сферы с заданной скоростью.

5. Добавьте Lifetime Random и измените lifetime_max на 1.25 и lifetime_min на 1. Это задаст произвольное время жизни каждой частицы пламени в пределах этих значений.

6. Добавим Sequence Random и установите sequence_max и sequence_min на 2

7. Теперь добавляем Position Modify Offset Random и установим offset in local space 0/1 на 1.

С инициализацией закончили.

Испускатели

Для завершения нужно добавить основную функцию, которая включит частицу. Это делается излучателем.

1. Добавьте emit_continuously и теперь пламя зажжется в окне просмотра!) Измените значение emission_rate на 50.

Заключение

Создание частицы завершено, должна была получиться небольшая частица пламени. Можно использовать этот способ для редактирования и создания других частиц, например, водопада.