Автор: Евгений Булатов «Vendigo»

Опубликовано: 07.08.2008

Изменено: 07.08.2008

Постоянная ссылка

Комментарии [0]

Создаем огонь в редакторах частиц





Страницы: 1 2

Часть III. Создаем огонь в Particle Illusion

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

Запустите Particle Illusion. Этот редактор предполагает работу с уже имеющимися библиотеками эмиттеров, поэтому с начала нам нужно будет создать свою библиотеку.

Нажмите Ctrl+M - вызов менеджера библиотек. Щелкните по кнопке с красным крестиком внизу и ответьте «Да» на появившийся вопрос «Delete All Emitters in Library?”.

Затем нажмите "Ок" и сохраните где-нибудь свою библиотеку с новым эмиттером. После сохранения библиотеки вы вновь вернетесь к основному интерфейсу программы. В левом нижнем окне открыта ваша библиотека. Для удобства переименуйте папку и эмиттер во что-нибудь подходящее, я выбрал "Огонь" и "Пламя", это делается через контекстное меню.

Затем дважды щелкните на эмиттере, откроется окно его настроек:

Оно состоит из трех частей: Дерева эмиттера, Панели настроек, и Области предпросмотра. В этом окне можно полностью настроить эффект, задать частицам текстуры, и определить их движение.

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

В дереве эмиттеров выберем частицы «New Particle Type» в среднем окне вкладка "Particles" в ней "Change Shape", все как на скриншоте. Именно тут задаются текстуры для частиц. Нажимаем кнопку «+» и загружаем свои текстуры. Затем щелкаем по кнопке «Make Active» и наши частицы обретают новые формы!

Поскольку мы загрузили несколько кадров то нужно настроить их отображение, а именно убрать их анимацию, и выбрать случайный порядок назначение кадров. Сдвиньте ползунок смены текстур на Off и включите "Random Star Frame".

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

Логика работы абсолютна такая же как и в Magic Particles, я думаю этот рецепт огня подойдет и для многих других схожих редакторов.

Далее настраиваем цвет. Цвет верхней полоски отвечает за цвет частицы на протяжении ее жизни, как видите в конце она становится темнее. Нижняя полоска показывает прозрачность частицы. Начальным градиентом от черного к белому, я задал плавное появление частиц.

После настройки цвета щелкните «ОК» закрывая окно настройки эмиттера. Дальнейшую настройку огня лучше производить в основном окне программы, только там работают команды отмены «undo».

Для того что бы начать работу в основном окне, поместите курсор в рабочую область (центральное окно) и щелкните мышью (там откуда у вас будет исходить огонь). Слева у вас развернется дерево эмиттера с входящими в него частицами, а снизу окно графика, выбранного параметра. Осталось только настроить графики нашего эмиттера.

В Particle Illusion для огня я выбрал тип эмиттера Area (область), у этого типа есть два очевидных параметра widht и height (ширина и высота). Выбор типа осуществляется через контекстное меню, правый щелчок мыши на иконке эмиттера в центральном окне.

Габариты задал постоянные, ширина 90 пикселов, высота 15.

Дальнейшая настройка огня так же аналогична модели в Magic Particles. Поэтому я просто перечислю параметры и те значения которые я подобрал с некоторыми пояснениями:

Параметры эмиттера:
Emmision engle (направление излучения): огонь поднимается вверх, поэтому ставим 90°.
Emmision range (диапазон, ширина угла излучения): я выбрал 40°.

Параметры частиц пламени:
Life (время жизни): что бы пламя колебалось по высоте настроил волнообразный график в пределах от 11 до 14
Number (количество частиц): волнообразные колебания от 255 до 430.
Size (размер): 30
Velosity (скорость): 100
Weight (вес): -120. Чем выше отрицательное значение тем быстрее частицы поднимаются вверх.

В своем огне я задал движение частиц в основном этим параметром. Параметр скорости Velosity, определял лишь начальную фазу движения. Для этого смежный параметр Velosity over life был настроен спадающим. От 100% в начале до 20 в конце. Это позволяет увеличивая Emmision range эмиттера (диапазон, ширина угла излучения) задавать такой характер движения частиц:

Т.е. вначале огонь расширяется, а затем устремляется вверх. Настраиваем огонь дальше:

Spin (вращение): 6
Motion rand. (случайность движения): 35

Отклонения:
Life variation: 4
Number variation: 198
Spin variation: 60

Size over life (размер после рождения в %) тут я нарисовал длинную волну что бы частица сначала увеличивалась в размере а затем уменьшалась в конце. Параметры - в начале 100, к центру поднимается до 150 и плавно спадает до 40 в конце.

Графики можно рисовать не только ломанными но и в режиме кривых Безье, для этого щелкните по узелку нажав клавишу Alt.

Параметры после рождения:
Velosity over life (скорость после рождения): как я уже пояснил выше, спадает от 100% до 20%.
Weight over life (вес после рождения): от 0 в начале до 100 процентов к точке 0.6 и дальше 100%
Spin over Life (вращение после рождения): от 100% в начале до 0 в конце. Внизу пламя «бурлит» а вверху уже нет.

Вот и все, теперь это должно быть похоже на пламя! Здесь вы можете скачать материалы урока и посмотреть в файле "Огонь_02.ip3" что у меня получилось.

Часть IV. Экспорт огня в последовательность кадров

После создания огня его нужно вставить в игру. Самым простым способом в данном случае будет отрендерить такой огонь в покадровую анимацию и зациклить ее. Затем ее можно будет воспроизводить в виде спрайтов в любом месте игры.

К сожалению, в силу природы таких редакторов, сделать сходящийся циклический процесс они не могут. Придется обманывать :). Но для начала нам нужно получить последовательность кадров. Ничего сложного в этом нет. Посмотрите на окно экспорта в Magic Particles:

Выбираете размер кадра обычно кратный степени двойки. Тип файла - любой графический формат, кроме сжатия с потерями. Альфаканал нам не понадобится. И жмете Экспорт.

У вас будет очень много кадров, из которых вам нужно будет выбрать небольшой участок, длиной 1-3 сек. Этого будет вполне достаточно.

Для создания плавного перехода я воспользовался программой Adobe After Effects. Не останавливаясь подробно на этом, приведу пару скриншотов:

Я импортировал последовательность кадров в After Effects и скопировал анимацию вторым слоем. Затем «разрезал» дорожки посередине и сдвинул их так, чтобы одна заканчивалась в месте разрыва, а другая начиналась. Немного уменьшил время композиции, чтобы слои шли внахлест. А затем непрозрачность верхнего слоя настроил так, чтобы от точки А до точки В она изменялась от 0 до 100%.

После такой операции переход становится почти незаметен. Остается только экспортировать композицию в последовательность кадров, и посмотреть как все это работает в игре.

Есть и другой способ, который позволяет перенести огонь в игру – это использование девелоперской версии программы Magic Particles (Dev). Эта версия имеет в своем составе API для переноса спецэффектов в движок на уровне обработки частиц. Пример использования API можно скачать здесь.

Заключение

Материалы для урока: InFlames.zip (2.5 Мб).

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

В заключении хочу поблагодарить Яшу известного как Snork, Алексея a.k.a. Odin_KG и Машу Зайцеву за помощь в создании урока.

Задавайте вопросы, и оставляйте комментарии.
С наилучшими пожеланиями Евгений Булатов "Vendigo".

 

Страницы: 1 2