Creating A Fire Particle:ru

From Valve Developer Community
Jump to: navigation, search

Обзор

Эта краткая статья даст Вам понять как создавать партикл огня вот такого типа:

Fire particle.jpg


Базовые свойства

Создайте новую партикл систему и назовите её. Мы должны определится с главными свойствами партикла. В главной таблице партиклов нажмите properties (свойства). Измените максимальное количество партиклов (max_particles) на 40. Теперь выберите material, нажмите ... и в браузере выберите текстуру. Для примера пусть будет particle\fire_particle_4\fire_particle_4.vmt Установим bounding_box_min на -512 -512 -512 и bounding_box_max на 512 512 512 Измените color на оранжевый. В этих настройках мы закончили. Переключаемся на рендеринг (табличка render ).


Рендер

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


Оператор

С помощью оператора мы заставим наши партиклы двигаться, ищезать и т. д. В табличке операторов добавьте movement_basic . Эта штукенция определяет базовые движения партикла. Измените gravity на 0 0 50 . Гравитация направляет огонь в нужную сторону. 0 0 50 направляет его вверх как в реальности. Если установить 0 0 -50 то огонь будет направлен вниз. Далее добавьте Oscillate_Vector. Этот оператор поможет создать "волновой еффект" (wavy fire effect). Этот эффект поможет придать реализма и живости огню, а не чтобы он стоял статичным и не двигался. Примерно вот такую функцию колебаний мы будем использовать:

Sin wave.jpg

В 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 . С этим закончили. Добавим Lifespan Decay этот оператор поможет уничтожить (чтобы он плавно ищез) партикл после некоторого времени. давайте сделаем "затухания партикла" (альфы). Добавляем 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 С операторами закончили.


Инициализаторы

Добавим инициализатор для установки начального состояния партикла. Добавьте Radius Random и установите radius_min на 3 и radius_max на 10 . Это сымитирует партикл с заданным радиусом. Если хотите больший огонь, то установите radius_max на 50. Далее добавьте Alpha Random, установите alpha_min на 120 и alpha_max на 200. Добавьте Rotation Random ничего не изменяя. Добавьте 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 . Это спавнит партикл в заданной сфере и с заданной скоростью. Добавьте Lifetime Random и измените lifetime_max на 1.25 и lifetime_min на 1 . Это установить в партикле время жизни партиклов рандомно в пределах этих цифр. Добавим Sequence Random и установите sequence_max и min на 2 Теперь добавляем osition Modify Offset Random и установим offset in local space 0/1 на 1. С инициализацией закончили.


Излучатели

Теперь последнее действие это добавление главной функции, которая оживит наш огонь. Добавьте emit_continuously и теперь наш огонь зажжется в окне превью!) Измените emission_rate на 50.

Заключение

На этом всё. На этом примере можно сделать много похожих партиклов.