Создаем огонь в редакторах частиц
Введение
Доброго времени суток, меня зовут Булатов Евгений, я работаю художником в студии Extreme Developers, мы занимаемся разработкой игр. В этом уроке я расскажу о своем методе создания огня в редакторах частиц.
Частицы стали неотъемлемой частью компьютерной графики. Кино, телевидение, видеоигры, используют их для создания спецэффектов. Редакторы частиц встроены во многие пакеты 3D моделирования, или подключаются к ним как отдельные плагины. Например, FumeFX для 3DSmax (стоимость 845 USD). Это действительно впечатляющие системы, тысячи частиц двигаются подчиняясь физическим законам, согласно десяткам редактируемых свойств. Красиво и реалистично, но медленно и дорого.
К счастью есть и более простые решения. Существуют отдельные редакторы частиц, которые используются, например, в разработке игр.
Пример такой программы это Magic Particles, отечественная разработка, распрастроняющаяся бесплатно. Или другая более известная программа - Particle Illusion. Вы можете использовать любой из этих редакторов для создания такого огня или использовать свой (может быть ваш движок, содержит свой инструмент для настройки частиц). Кроме того вам потребуется графический редактор для рисования текстур.
Я постараюсь дать основные идеи создания огня, (подкрепленный конкретными указаниями), что бы вы могли в дальнейшем самостоятельно продвигаться в этой области. Ведь одним огнем, частицы не ограничиваются, дальше там лежит целый мир впечатляющих эффектов.
В материалах к уроку вы можете найти файлы эмиттеров для Magic Particles и Particle Illusion, текстуры частиц, а так же avi ролик с анимацией огня.
Итак начнем. Нам потребуется редактор частиц:
(Magic Particles) http://www.astralax.ru
Или (Particle Illusion) http://www.wondertouch.com
И графический редактор, например Photoshop.
Часть I создание текстур
Для создания красивого огня очень важны текстуры частиц. Экспериментируя с ними вы будете всякий раз получать разный огонь.
Magic Particles понимает формат файлов PSD, что очень удобно и даже его альфаканал (для прозрачности). Но поскольку мы создаем огонь, и будем использовать аддитивный блендинг (в Photoshop режим наложения, называется Screen) то альфаканал использовать необязательно.
При таком режиме смешивания, черный цвет является абсолютно прозрачным, а прочие цвета осветляют картинку под ними. Для создания частиц огня, я рисовал текстуры 256х256 на черном фоне. Потом их можно уменьшить но рисовать удобней большие. Вот что у меня получилось:
Я использовал тонкую кисть с мягкими краями, а затем размазывал края «пальцем», при необходимости дублируя слои, и размывая их Gaussian Blur.
Нарисуйте несколько текстур, от 3-ех до 6-ти. Создав эффект я экспериментировал с текстурами, удаляя те что выбивались из общей картины или перерисовывая их. Я понял что конечный эффект во много определяется формой и характером язычков пламени которые рисуешь.
Часть II Magic Particles
После того как текстуры готовы, пора переходить к редактору частиц. В этой части я опишу создание огня в Magic Particles. А в следующей дам пояснения по Particle Illusion.
Запустите Magic Particles. Вверху находится панель кнопок, нажимаем на ней кнопку «создать эмиттер», а затем «создать тип частиц внутри эмиттера».
В окне просмотра у вас начнет расползаться что то серое и не понятное. В центре этого отображается иконка эмиттера, в квадратной рамке. Перетащите эмиттер вниз к краю экрана, и снимите галочки «показывать эмиттер» и «показывать область», они находятся на нижней панели.
Для загрузки текстур перетащите все файлы на окно предпросмотра текстуры (или воспользуйтесь кнопкой загрузить текстуру, в диалоге открытия файла можно выбрать сразу несколько файлов).
Теперь переключитесь на вкладку цвет и включите параметр Интенсивность (активизирует аддитивный блендинг, в Photoshop режим наложения называется screen). При таком режиме смешивания цвета складываются высветляя картинку под собой, а черный является абсолютно прозрачным – частицы светятся.
Затем щелкните на серую полоску внизу, вы поставите на ней точку - маркер. Эта полоска с помощью маркеров, задает цвет частицам на протяжении их жизни.
Настройте цвет следующим образом:
Последний маркер должен быть черный. Это нужно для того что бы частицы плавно исчезали (используем особенности режима наложения «интенсивность»). Это цвет пламени нашего огня.
Сейчас текстуры каждой частицы переключаются, программа проигрывает последовательность кадров. Но поскольку мы не рисовали анимацию то это нам не подходит. Переключитесь на вкладку Текстура и поставьте скорость смены текстур равной нулю, так же включите параметр Случайная стартовая текстура. Таким образом для каждой частицы, будет выбираться случайная текстура, неизменная на протяжении ее жизни.
Теперь остается настроить движение частиц, и вы получите настоящий огонь! Но для начала измените интервалы видимости (внизу нижней панели) 9% в начале и 95% в конце. Так программа не будет показывать начало и конец эффекта. Это удобно если они нам не нужны.
Огонь всегда движется вверх, с постоянной скоростью, выбрасывая разной длинны языки пламени. Вверху пламя становиться тоньше и постепенно исчезает. Сейчас мы последовательно шаг за шагом приведем движение частиц к этой модели.
Начнем с эмиттера. Переключитесь на эмиттер в Дереве эмиттеров (слева) и в самом верхнем графике смените тип эмиттера с точки на линию.
Из этой линии (отрезка) будут испускаться частицы. У нее два параметра, синий график - угол наклона, зеленый - длинна линии. Начальные параметры угол – 0, длина – 100 вполне подходят для огня.
Теперь изменим угол испускания частиц. Следующий график Направление эмиттера, градус. Задайте углы 36º и 144º, что бы частицы выбрасывались вверх.
Сейчас это не очень похоже на огонь. Переключитесь на частицы и нажмите на панели кнопку инструментов
Настройка графиков
Тут собраны вместе различные параметры частиц, поскольку параметры все рядом, очень удобно настраивать их через это окно. Такие значения частиц как Жизнь, Количество, Размер, Скорость взаимосвязаны. Например, высокий параметр Скорость увеличит темп движения частиц, и одновременно удлинит пламя, но, понизив значение Жизнь, вы сможете уменьшить его высоту.
Настройте параметры по своему вкусу или воспользуйтесь этими:
Похоже скорее на хороший огнемет, не плохо конечно, но хотелось бы небольшой, красивый костерчик ). На самом деле, когда я настраивал частицы, то по очереди двигал то графики, то настраивал Минимумы и Максимумы в этом окне, пока не получил нужный мне результат.
Перейдем к настройкам графиков. Сейчас огонь кажется слишком плотным, пламя излишне ярким. Найдите график Степень непрозрачности (коэффициент) и понизьте его до 35.
Теперь можно заняться движением частиц. Пламя должно подниматься вверх, а сейчас оно выбрасывается во все стороны. Это из-за широкого угла направления эмиттера. Создавая костер я подумал что пламя должно немного расширяться внизу а затем устремляться вверх. Примерно вот так:
Сейчас пламя расширяется, осталось направить его вверх. Этого можно добиться, используя параметр Вес, с отрицательным значением. Частицы будут словно всплывать.
В Magic Particles есть два типа графиков. Обычные (серые иконки) и Коэффициенты (красные иконки). Обычные графики регулируют свойства частицы на протяжении жизни эффекта (по оси Х, отложено время всего эффекта). А коэффициенты, меняют частицу на протяжении ее жизни (По оси Х, отложено время жизни частицы).
С помощью коэффициентных графиков я сделал так что в начале, движение частицы определяется параметром скорость а в дальнейшем значением вес.
Выглядит это вот так:
И вес:
Так я получил нужное движение огня.
Поскольку пламя вначале расширяется, а вверху становится тоньше, то я настроил график Размер (коэффициент) вот так:
Вы можете понаблюдать за движением одной частицы, если поставите соответствующую галочку в графике Излучаемое количество частиц. Это бывает удобно, потому что за обилием частиц часто непонятно как они там двигаются.
Сейчас пламя все еще довольно сильное и высокое. Немного уменьшите его высоту и сымитируйте колебания. Вот к чему я пришел, настраивая графики Продолжительность жизни и Излучаемое количество частиц:
Графики с двумя линиями интересны тем, что они позволяют задавать значения случайным образом в интервале между зеленой и синей линией. Т.е. каждой создаваемой частице будут присваиваться разные значения параметра.
Получилось не плохо, но что бы бы пламя казалось более живым, я добавил вращение частицам. График Вращение частицы выставил от 0 до 100. А Вращение (коэффициент) сделал затухающим, чтобы убрать неестественное вращение вверху.
Вот мой результат:
Так же вы можете скачать небольшое видео avi 1,2 Mb.
В огонь можно добавить немного искр, создав новый тип частиц внутри эмиттера, а также дым.
Для искр нарисуйте белую точку или черточку на черном фоне и используйте параметр интенсивность. Для дыма нужно будет поэкспериментировать с текстурами. Поскольку дым не светится, выключите интенсивность, а в настройках цвета придайте ему голубоватый оттенок.
Вот и весь мой нехитрый способ создания огня в редакторах частиц. Скачав файл с примером и текстурами, вы сможете посмотреть мой вариант в Magic Particles.
Часть 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 что у меня получилось.
Заключение
Поэкспериментируйте со своим результатом, вы можете сделать огонь более яростным, как пожар, или спокойным, как пламя газовой плиты. Сделать его ярче, тусклее, быстрее или медленнее, ведь огонь бывает совершенно разным. И немного поиграв с параметрами, вы сможете его сделать таким, каким захотите.
В заключении хочу поблагодарить Яшу известного как Snork и Алексея a.k.a. Odin_KG за помощь в создании урока.
Задавайте вопросы, и оставляйте комментарии.
С наилучшими пожеланиями Евгений Vendigo Булатов.