Как сделать огонь в юнити

Частицы в Unity3d

Всем привет! Меня зовут Евгений Серегин, на рендер.ру я под ником lazycow . Портфолио можете посмотреть тут http://evgenyseregin.wix.com/portfolio.В свое время я работал художником по спецэффектам в компании Biart. Дело было для меня новым и поэтому интересным. Давно хотел попробовать себя в данном качестве. Сейчас решил поделиться некоторым опытом .

Итак, урок посвящен частицам в Unity3d. Предназначен скорее для новичков, но каждый, думаю, найдет что-то для себя интересное. Движок сегодня очень популярен и не осваивает его только ленивый. К тому же проект, над которым я сейчас работаю мы делаем тоже на Юнити.

Пару вводных фраз о самих эффектах, чтобы понимать что к чему куда и как. Мое личное мнение, что 70% отлично выглядящего эффекта составляет правильно сделанная, качественная текстура. Сюда же входят цвета, наилучшим образом передающие суть эффекта, ее размер, анимированная она или нет, с альфа каналом или без. Текстура всегда должна быть оптимальной. К примеру, нет смысла делать маленькую искру на листе 256х256. Тут достаточно 8х8 или 16х16. Оставшиеся 30% успеха создаются умело настроенным поведением частиц. Чтобы развить этот навык – смотрите больше референсов, подмечайте различные эффекты в жизни, в кино, в играх. Изучайте физику вещей. Очень хороши замедленные съемки всякого рода взрывов, выстрелов, горящего огня и т.д.
Начнем. Перед тем, как настраивать эффект необходимо определиться из каких частей он будет состоять. В нашем примере – это пламя, искры, дым и немного искажения в стиле горячего воздуха в пустыне . Всегда помните, что чем проще и оптимальнее эффект, тем больше их можно использовать на сцене и тем меньше все будет тормозить. Далее мы определяемся с общим видом эффекта – что это будет. Собираем референсы, изучаем, как ведет себя огонь в горящих бочках, что там горит – это дает понимание какой будет дым по цвету и по интенсивности. Бывает неплохо набросать эффект, несколько фаз его развития на бумаге, чтобы понимать что делать. Своеобразная раскадровка.
Запускаем Юнити. У меня версия 4.1. В какой-то из предыдущих версий была переделана система частиц, поэтому на очень старых версиях редактора урок может быть не актуален. Из меню выбираем GameObject>Create Other>Particle System. У нас появилась система частиц с летящими белыми пятнами. В правом нижнем углу вьюпорта должно появиться маленькое окошко, которое помогает запускать симуляцию эффектов, останавливать их, ставить на паузу, менять скорость проигрывания (ВНИМАНИЕ! Скорость самого эффекта изменяется не здесь).Это позволяет отловить различные артефакты и косяки при очень быстрых эффектах, например выстрел. Чтобы понимать размер эффекта относительно мира я рекомендую настраивать на уже готовых объектах. В нашем случае – это бочка. Ставим бочку в координаты 0,0,0, вводя их в свитке Inspector в окошки сабсвитка Transform. Если свитка нет, то в меню Window включите его, а так же свиток Hierarchy. Далее выбираем нашу Particle System и ставим ее так же в 0,0,0. И чуть поднимаем вверх, чтобы огонь горел не на самом дне, а начинался чуть выше. Систему частиц можно переименовать, кликнув по ней в свитке Hierarchy и нажав F2. Я назвал нашу систему частиц FireMetalBarrelы.

ОГОНЬ

Теперь в свитке Inspector в сабсвитке Particle System появились настройки нашей системы частиц. В принципе можно настраивать и отсюда их. Но удобнее будет нажать кнопку «Open Editor…». Откроется окно со всеми эмитерами и их настройками. Очень удобно, если настраивается сложный эффект. Визуально все понятно и не возникает путаницы. Справа вверху у Вас будет несколько вспомогательных кнопок Show Selected, Resimulate, Wireframe. Show Selected чуть затемняет все не выбранные эмитеры и подсвечивает тот, который Вы выбрали в данный момент.

рис. 002 Выбирать эмитеры(после того, как Вы их создали, конечно) можно в свитке Hierarchy.

Первое, что мы должны сделать, чтобы увидеть не дефолтные белые шарики, а нужную текстуру – это сделать материал и текстуру огня. Сразу оговорюсь, что делать текстуры то еще развлечение. Достаточно долгая и кропотливая работа. Но как я уже говорил – это стоит того в итоге. Я использую свои давние наработки, которые я делал для игры Deep Black. Для текстур огня и дыма я использовал FumeFX плагин для 3dsmax. Моделировал различные взрывы, интенсивность, направления и т.д. Потом рендерил в серии кадров. Так я получал различной интенсивности и размера огненные всполохи. С дымом чуть проще. Как? Расскажу позже.

Итак, чтобы создать новый материал достаточно кликнуть правой кнопкой по любому месту в папке Materials (для моего проекта)

Материал можно поместить куда угодно, в любую папку. Главное не запутаться, когда их будет много . Называем материал, в нашем случае это FireMed. Назначаем материалу шейдер Particles/Additive. В нашем случае это то, что нужно. Можете поэкспериментировать с шейдерами и назначить понравившийся. Tint Color позволяет корректировать цвет текстуры, а так же интенсивность альфаканала. Насколько материал будет прозрачным. Soft Particles Factor – это параметр, который позволяет сгладить пересечение частиц с плоскостью, на которой находится эмитер. Но и добавляет немного расчётов видеокарте, когда частиц много )). В пустом сером маленьком окошке нажимаем маленькую кнопку «Select», открывается окно выбора текстур. Ищете свою текстуру (все текстуры должны находиться в папке проекта, чтобы Юнити их видел). Можно набрать имя текстуры и найти ее.

Возвращаемся в наш редактор частиц, выбираем эмитер FireMetalBarrel и сразу же переходим в самый нижний сабсвиток Renderer. Ставим галочку (это значит, что он не будет игнорироваться и будет активен ) и разворачиваем его кликом по нему. Render Mode оставляем Billboard. Это значит, что при любом угле обзора текстуры частиц всегда будут направлены в камеру. Снимаем галочки Cast и Receive Shadows так как шейдер материалов, типа Particles не принимает тени и не отбрасывает их. Перетаскиваем наш заготовленный материал в строчку Material и видим что-то отдаленно похожее на огонь. Материал можно так же назначить выбрав его из всех доступных, нажав маленький кружок обведенный зеленым цветом.

Возвращаемся в начало нашего свитка FireMetalBarrel и начинаем настраивать один сабсвиток за другим. Сразу подскажу, что наведя мышку на любой параметр вы увидите всплывающую краткую подсказку о том, что он значит и как работает. Все настроенные параметры я приведу на скриншотах. У некоторых параметров есть опции – они обозначены маленькими черными треугольничками справа от параметра. Constant -постоянная величина, Curve – изменение параметра по кривой, например размер от малого к большому и опять к малому. Random between two constants – случайное значение в промежутке от одного до другого указанных значений. Random between two curves – то же, что и предыдущее, только крайними значениями выступают кривые.

Опишу действие параметров:

Duration – общая продолжительность эффекта. Как показала практика особо не влияет при зацикленных эффектах.

Looping – зацикленность

Prewarm – как бы прогрев эффекта, чтобы он начался уже с основной интенсивностью

Start Delay – задержка в старте проигрывания в секундах

Start Lifetime – Время жизни в секундах

Start Speed – скорость, с которой стартуют частицы

Start Rotation – стартовая повернутость частицы на определенный градус. В нашем случае от 0 до 360.

Start Color – стартовый цвет. Можно регулировать по альфе или по цвету.

Gravity Multiplier – множитель гравитации. 9,82 м/c– гравитация для планеты Земля.

Inherit Velocity – наследуемая скорость для следующих частиц.

Simulation Space – система координат. В нашем случае – world. При Local позволяет частицам перемещаться вместе с эмитером, как например, двигатель космолета. При world – частицы ведут себя, как факел, который несут, т.е. отстают от эмитера.

Play on Awake – частицы стартуют автоматически.

Max Particles – максимальное кол-во частиц одновременно проигрываемых из этого эмитера.

Emission

Rate – количество частиц генерируемое в секунду.

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

Shape

Shape – форма эмитера. Конус, сфера, полусфера, бокс, меш.

Angle – угол разброса. В нашем случае 15 градусов.

Radius – радиус эмитера.

Emit from – откуда генерируются частицы. Из одной точки, из всего тела эмитера и т.д.

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

Velocity over Lifetime

Параметр позволяет рандомайзить скорость движения частиц в течение их жизни. В нашем случае система координат world и направление вверх, т.е. по Y. Случайная скорость от 0.5 до 1. Получается, что языки пламени движутся с разной скоростью.

Force over Lifetime

Система координат тоже world. Помогает задать влияние небольших сил, которые смещают частицы в стороны по Х и по Y на небольшие расстояния. Y в данном случае почему то работает, не вверх, как в предыдущем.

Color over lifetime

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

рис. 007 Тут можно регулировать цвета и альфаканал.

Rotation over Lifetime

Параметр позволяет придать некоторое вращение в течение жизни. В нашем случае от -20 до 30 градусов. Частицы вращаются в случайные разные стороны с медленной скоростью, что тоже придает реализма.
Остальные параметры нам оказались без надобности, но Вы можете поэкспериментировать и попытаться настроить еще лучше .

ДЫМ.

Если Вы все сделали правильно, то у Вас должно получиться довольно неплохое пламя. Но, сам эффект еще не готов и на половину и поэтому не стоит расстраиваться, если огонь далек от идеала. Сейчас я расскажу о том, как сделать дым. По сути с ним все просто – это тот же самый огонь лишь клонированный и немного перенастроенный

и с материалом (текстурой дыма). Копируем так – выбираем наш эмитер огня FireMetalBarrel, нажимаем Ctrl+D переименовываем в Smoke и перетаскиваем новый эмитер прямо на FireMetalBarrel, чтобы эмитер Smoke стал дочерним объектом и все они вместе образовывали иерархию. Все это делается в свитке Hierarchy. Подробнее хочу остановиться на том, как сделать текстуру дыма. Тут я не использовал никаких плагинов – только старый добрый Фотошоп и Гугл . Ищем картинку одинокого облака в Гугле. Я нашел вот такую

После небольшой обработки по размерам и десатурейту (превратил в ч/б) и добавления альфа канала путем копирования самого изображения и вставки в канал альфа – имеем нечто похожее на текстуру дыма.

Кстати я рекомендую стараться делать все текстуры кратные степени двойки по сторонам, типа 128х128, 1024х512, 64х16 и т.д. Это сэкономит Вам уйму времени, если надумаете использовать их потом еще в других проектах.
Создаём новый материал Smoke и настраиваем его по образу и подобию материала огня с той разницей, что используем немного другой шейдер и другую текстуру.

Вводим параметры, как показано на рисунке 008.

ИСКРЫ.

Искры, по сути, тот же клонированный огонь с измененными параметрами и другим материалом. Назовем этот эмитер Spark. Настройки для него показаны на рис. 012.

Текстуру можете сделать в Фотошопе – это маленькая точка или точка с небольшим свечением вокруг. Размер текстуры, как я уже говорил в начале 16х16 или около того. Шейдер – Particles/Additive.

ГОРЯЧИЙ ВОЗДУХ.

Здесь опять тот же хорошо настроенный, клонированный и чуть модифицированный эмитер огня, но все дело делает шейдер, который по дефолту не идет с Юнити. У нас он был написан нашими программистами для проекта. Думаю не составит труда найти подобный шейдер в инете.

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

[Перевод] Unity: системы частиц

image

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

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

В этом туториале вы научитесь следующему:

  • Как добавлять в Unity новые системы частиц.
  • Узнаете, какие модули систем частиц используются чаще всего, и научитесь ими пользоваться.

Этот туториал состоит из двух основных частей: в первой мы создадим пламя факела, во второй — эффект взрыва бомбы.

Примечание: в этом туториале подразумевается, что вы знакомы с основами работы в Unity. Если вы новичок в Unity или вам нужно освежить свои знания, то для начала изучите наш туториал Introduction to Unity.

Приступаем к работе с системами частиц

Скачайте заготовку проекта для этого туториала и распакуйте её в удобное для вас место. Учтите, что для работы с туториалом вам понадобится как минимум Unity 2017.2.

Откройте Starter Project в Unity. Ассеты внутри него распределены по нескольким папкам:

  • Materials: содержит материал огня.
  • Models: содержит модели факела и бомбы, а также их материалы.
  • Prefabs: содержит префаб бомбы.
  • Scenes: содержит сцены Torch и Bomb.
  • Scripts: здесь находятся исходные скрипты.
  • Textures: здесь находится текстура для материала огня.

Разобравшись с тем, где что находится, мы можем приступать к изучению работы систем частиц в Unity.

Добавление системы частиц

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

В системах частиц удобно то, что они являются компонентами, которые можно добавлять к любому GameObject в сцене. Хотите, чтобы из глаз акул вырывались лазерные лучи? Просто добавьте к GameObject глаза акулы систему частиц!

Откройте сцену Torch в окне Project Window и запустите сцену:

Пока здесь не происходит ничего интересного. Факел висит на стене, но на нём не видно огня. Для начала нам нужно добавить систему частиц.

Остановите выполнение сцены и выберите TorchFireParticles в Hierarchy. В Inspector нажмите на кнопку Add Component. Найдите Particle System и нажмите, чтобы добавить её:

Примечание: вы могли заметить, что я не добавил систему частиц непосредственно к GameObject MedievalTorch. Я сделал так, чтобы частицы испускались из ёмкости с топливом в верхней части, а не из середины факела.

Запустите сцену, и вы увидите, что частицы уже испускаются:

Примечание: вы можете видеть вместо белых розовые частицы. Похоже, это баг Unity с заданием текстуры по умолчанию. Если у вас произошло такое, то не волнуйтесь, скоро мы зададим правильную текстуру пламени. Если вы хотите исправить этот баг уже сейчас, то нажмите на раздел Renderer системы частиц, нажмите на точку рядом с полем Material и в открывшемся окне дважды щёлкните Default-Particle.

При выборе GameObject с присоединённой к нему системой частиц вы заметите в правом нижнем углу окна сцены чёрное диалоговое окно. Это диалоговое окно позволяет симулировать или останавливать систему частиц. Нажатие на кнопку Simulate активирует систему частиц и заменяет её на кнопку “Pause”. Чтобы остановить симуляцию, нужно нажать на кнопку “Stop”.

Это диалоговое окно полезно при создании систем частиц, выполняемых в течение ограниченного периода времени, например, для взрывов.

Рассмотрим систему частиц внимательнее

Взгляните на Inspector. Вы заметите, что добавленный нами компонент системы частиц имеет несколько подразделов:

Каждый из этих подразделов называется модулем (Module). В этих модулях содержатся параметры системы частиц. Развёрнутый по умолчанию модуль называется модулем Main:

Модуль Main — фундамент любой системы частиц в Unity. Здесь находятся самые основные параметры частиц:

  • Duration: время выполнения системы частиц в секундах. Оставим здесь значение по умолчанию5.00.
  • Looping: повторное испускание частиц до остановки системы частиц. Цикл перезапускается после достижения времени Duration. Огонь должен гореть постоянно, так что оставим этот параметр включённым.

Включенный и отключенный

Сверху: 8 секунд. Внизу: 3 секунды

Сделаем время жизни равным 4 секундам; благодаря этому пламя не будет слишком высоким.

Сверху: 2. Снизу: 10

Задайте значение скорости 0.75; так эффект пламени будет медленнее и плотнее.

Примечание: изменяя параметры системы частиц, вы будете видеть её предварительный обзор в окне Game. В процессе выполнения туториала посматривайте на этот предварительный обзор.

Запустите сцену, чтобы посмотреть, как повлияли внесённые изменения:

Мы настроили факел, но эффект огня пока оставляет желать лучшего. К счастью, в модуле Main есть дополнительные опции, позволяющие усовершенствовать форму и поведение факела.

Другие свойства модуля Main

Выберите в иерархии GameObject TorchFireParticles и прокрутите вниз, к системе частиц. В модуле Main Module посмотрите на следующие свойства:

    Start Size: исходный размер частиц.

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

Оставьте значение ; частицы круглые, поэтому вы вряд ли заметите разницу.

Сверху: local space. Внизу: world space

Оставьте для своей симуляции значение Local Space. Влияние параметра будет заметно только когда система частиц будет двигаться.

Ого, вот так список! Но в результате мы узнали, как добавлять в сцену систему частиц и настраивать её по своему вкусу.

Снова запустите сцену, чтобы увидеть, как на неё повлияли изменения:

С каждым разом становится всё больше похожим на пламя, правда?

Однако нам нужно больше частиц. Для этого нам нужно изменить emission системы.

Знакомство с модулем Emission

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

Находясь в Inspector системы частиц, нажмите на заголовок модуля Emission:

При этом откроется модуль Emission:

Rate over Time представляет количество частиц, испускаемых за секунду. Задайте для Rate over Time значение 15.

Запустите сцену снова; теперь система частиц будет больше походить на горящее пламя.

Но заметно, что она всё ещё больше похожа на дым. И здесь мы внесём самое большое изменение на текущем этапе туториала: собственную текстуру!

Добавление собственной текстуры

У всех частиц есть материал частиц и текстура, задающая их внешний вид. С текстурой по умолчанию мы можем сделать только это. Заменив текстуру, мы можем создавать эффекты наподобие волшебных звёздочек, дыма и, разумеется, огня.

Заменить текстуру частиц достаточно просто. До этого момента частицы отрисовывались на экране с помощью материала Default-Particle, который является материалом частиц с круговой градиентной текстурой:

Чтобы заменить этот материал, выберите в иерархии GameObject TorchFireParticles. Затем найдите в инспекторе компонент системы частиц и откройте модуль Renderer системы частиц.

Откройте папку Materials в окне Project View и перетащите на FireMaterial Material на свойство Material:

Затем запустите сцену, чтобы увидеть, как применяется наша выбранная текстура:

Чувствуете жар? Однако пламя слишком широкое; Чтобы исправить это, нам нужно изменить форму системы частиц.

Изменение формы системы частиц

Модуль Shape, как можно понять из названия, управляет формой и поведением частиц в этой форме. Можно выбрать одну из нескольких различных форм; каждая имеет свои собственные параметры. Это позволяет создавать частицы в параллелепипеде, в сфере или даже в собственном меше!

Разверните модуль Shape в инспекторе:

В качестве формы (shape) системы частиц выбран конус (cone), то есть частицы испускаются из основания base и движутся наружу под углом (angle):

В показанном выше примере основание окрашено синим, угол зелёным, а частицы — красным. Также стоит заметить, что при развёрнутом модуле Shape мы видим в окне Scene удобный предварительный обзор конуса:

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

Меняя Radius, мы можем менять размер основания. Чем больше значение, тем больше будут рассеиваться частицы при испускании. Выберите значение 0.2; так мы обеспечим создание пламени внутри ёмкости для топлива факела.

Запустите сцену и посмотрите, как изменилась форма пламени:

Оно начинает походить на настоящее пламя! Последнее, что можно сделать — изменять размер частиц с течением времени их жизни.

Изменение размера с течением времени жизни

С помощью модуля Size over Lifetime можно создавать частицы, увеличивающиеся или уменьшающиеся с течением их жизни, или даже пульсирующие, как светлячки в лесу.

Найдите в списке модулей системы частиц раздел Size over Lifetime. По умолчанию от выключен, поэтому поставьте флажок рядом с названием модуля:

Разверните модуль Size over Lifetime, нажав на его название. Так вы откроете тёмно-серый фон с плоской кривой (Curve) в верхней части:

Нажмите на тёмно-серый фон, чтобы открыть редактор кривых в нижней части инспектора. Горизонтальная ось отображает время жизни частицы, а вертикальная ось — её размер:

Для редактирования кривой можно перемещать ключевые точки с обоих сторон красной линии; добавлять новые ключи можно двойным нажатием на любое место кривой. Для удаления ключевых точек нажмите правой клавишей мыши на точку и выберите Delete Key. Также можно выбрать одну из заранее созданных кривых в нижней части окна:

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

Запустите сцену, чтобы увидеть эффект во всей его полноте!

Поздравляю! Вы узнали, как настраивать новую систему частиц и изменять её по своему усмотрению для создания красивого эффекта огня.

В следующем разделе мы разбудим в себе внутреннего Майкла Бэя, чтобы научиться создавать эффекты взрывов!

Создание эффекта бомбы

Создать эффект взрыва в Unity довольно просто. Как только вы разберётесь, как создавать экземпляры частиц по своему усмотрению, вы сможете использовать этот эффект для таких вещей, как колёса автомобиля, выбрасывающие искры при трении о землю, или воздушные шары, которые взрываются и выбрасывают из себя конфетти.

Откройте Bomb scene в Project Window и запустите сцену:

В нижней части сцены есть пол, но кроме него в сцене больше ничего не происходит.

Для создания бомб передащите префаб Bomb в слот префаба Bomb Emitter:

Запустите сцену снова, чтобы увидеть, как появляются бомбы:

Эмиттер создаёт новую бомбу через каждые две секунды. Чтобы они вращались, нужно добавить при создании бомбы небольшую вращающую силу.

Откройте скрипт Bomb в папке Scripts окна Project Window.

Добавьте в Start() следующий код:

Первые три строки генерируют случайные значения float от 10 до 100 для осей x, y и z. Далее мы получаем ссылку на компонент Rigidbody бомбы и прикладываем к нему момент. Благодаря этому бомба начинает вращаться в случайном направлении. Сохраните изменения в скрипте, вернитесь в Unity и запустите сцену.

Теперь бомбы при падении красиво вращаются. Но я обещал вам взрывы!

В иерархии нажмите на кнопку Create и выберите Create Empty. Нажмите на созданный GameObject и назовите его ExplosionParticles. Далее добавьте к этому GameObject новую систему частиц. Если вы забыли, как создавать систему частиц, то посмотрите первый раздел туториала.

Создав систему частиц, перетащите GameObject ExplosionParticles из иерархии в папку Prefabs в Project Browser. После этого удалите GameObject ExplosionParticles из Project Hierarchy.

Затем выберите префаб Bomb в папке Prefabs и перетащите префаб ExplosionParticles в слот Explosion Particles Prefab Bomb следующим образом:

Теперь при касании бомбой земли будет создаваться новый GameObject Explosion Particles.

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

Очень волшебно, но пока совершенно непохоже на взрыв!

Как и в случае с факелом, мы будем использовать для системы частиц материал Fire.

Выберите префаб ExplosionParticles в окне Project Window, а затем разверните в инспекторе модуль Renderer. Перетащите FireMaterial из папки Materials из окна Project Window в слот Material, как показано ниже:

Чтобы завершить эффект, нам нужно изменить следующие параметры в модуле Main:

  1. Присвойте Duration значение 0.70.
  2. Looping нужно отключить. Частицы должны испускаться только один раз.
  3. Задайте Start Lifetime значение 0.7.
  4. Присвойте Start Speed значение 10.
  5. Задайте Start Size значение 2.
  6. Задайте Gravity Modifier значение 1. Благодаря этому частицы в конце будут слегка спускаться вниз.

Запустите сцену с бомбой, чтобы увидеть. что мы создали:

Ну, это уже похоже на взрыв, но определённо можно сделать лучше!

Создание взрыва

Чтобы улучшить взрыв, мы изменим свойства модулей системы частиц. Догадываетесь, какой модуль мы будем изменять? Вот подсказка — мы уже его использовали.

Если вы решили, что это модуль Emission, то вы молодец!

Разверните Emission Module. Rate — это количество частиц, создаваемых за секунду. Для взрыва нам нужен не постоянный поток частиц, а резкая вспышка.

Задайте Rate over Time значение 0. Теперь перейдите к Rate over Distance и вы увидите список Bursts, который по умолчанию пуст:

Burst — это набор частиц, испускаемых одновременно в определённый момент времени.

Нажмите на кнопку + в нижнем правом углу, чтобы добавить новый Burst. Вы увидите два поля: Time и Count:

Оставьте Time равным 0, и задайте Count значение 150. Такие параметры заставят систему частиц одновременно испускать 150 частиц в начале системы.

Запустите сцену. Как всё выглядит теперь?

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

Для начала развернём модуль Shape:

Мы уже использовали этот модуль для формы пламени факела, но здесь можно выбрать и другие формы. Нажмите на раскрывающееся поле, в котором написано Cone, чтобы увидеть все доступные варианты:

Каждая форма влияет на эмиттер по-своему. На каждой показанной ниже анимации показан одинаковый эмиттер, у которого меняется только форма:

Система частиц в Unity для факела

Частицы также придают достоверность игровым сценам. Они могут стать основой ревущего костра или световых эффектов заклинаний волшебника. Кроие того, они могут быть использованы для создания дыма, пыли, взрывов и даже радуги!

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

Unity позволяет легко создавать системы частиц. Unity использует мощную модулярную встроенную систему частиц под названием Shuriken, , которую нетрудно выучить, и которая позволяет создавать сложные эффекты.

В этом уроке вы узнаете следующее:

  • Как добавить новую систему частиц в Unity.
  • Что делают наиболее часто используемые модули систем частиц, а также то, как их использовать.

Начало работы с частицами в Unity

Скачайте стартовый проект и распакуйте в удобном месте. Вы будете использовать его в качестве отправной точки.

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

Откройте Starter Project в Unity с рассортированными внутри по следующим папкам ассетами:

Materials Содержит материал огня. Models Содержит модели факела и бомбы и их материалы. Prefabs префаб бомбы. Scenes Содержит сцены с факелом и бомбой. Scripts Содержит скрипты. Textures Содержит текстуру для огня.

Добавление системы частиц

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

Откройте сцену Torch а окне Project и запустите сцену:

Запуск сцены в Unity

Мы видим фонарь, висящий на стене, но никакого огня нет. Для начала нам нужно добавить систему частиц. Выберите TorchFireParticles в Иерархии. Внутри Инспектора нажмите на кнопку Add Component, найдите Particle System и нажмите кнопку, чтобы добавить ее:

Добавление компонента в Unity

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

Запустите сцену и вы увидите, что у вас есть излучающиеся частицы:

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

При выборе игрового объекта (GameObject) с прикрепленной системой частиц, вы увидите черное диалоговое окно в правом нижнем углу окна Сцены (Scene view). Этот диалоговое окно дает возможность моделировать или остановить систему частиц. Щелчок на кнопке Simulate (Смоделировать) активизирует вашу систему частиц и изменит кнопку на кнопку Pause (Пауза). Чтобы остановить моделирование, нажмите на кнопку Stop (Стоп).

Этот диалог полезен для проектирования систем частиц, которые работают на фиксированной временной шкале, например, взрывы.

Пристальный взгляд на систему частиц

Взгляните на вкладку Инспектор и Вы заметите, что в ней появился компонент системы частиц, который имеет несколько подразделов:

Компонент системы частиц

Каждый из этих подразделов называется Модулем. Эти модули содержат параметры для системы частиц. Модуль, открывающийся по умолчанию – модуль Main module:

Главный модуль

Главный модуль — основа любой системы частиц в Unity. Наиболее распространенные параметры частиц:

Duration Продолжительность времени, в течении которого будет работать система. Оставьте значение по умолчанию, равное 5.00 . Looping

Если включена, система начнет свою работу в месте завершения своего duration цикла и начнет всё заново.

Включено (слева) и выключено (справа)

Огонь должен гореть непрерывно, поэтому оставим включенной.

Prewarm Если включена, система будет инициализирована так, будто она уже прошла через весь цикл своей работы. Работает только когда Looping также включено. Включено (слева) и выключено (справа)

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

Start Delay Задержка в секундах до запуска системы излучения частиц после ее включения. Оставьте значение по умолчанию, равное 0 . Start Lifetime

Начальная продолжительность жизни частиц.

Вверху: 8 сек., вверху: 3 сек.

Установите продолжительность равной 1.2 секунд, чтобы пламя не было слишком высоким.

Начальная скорость каждой частицы в соответствующем ей направлении. Чем больше скорость частиц, тем больше распространение они получат.

Вверху: 2, внизу: 10

Установите скорость равной 0.75 . Это сделает пламя более плотным.

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

Получившийся спецэффект выглядит довольно круто, но напоминает скорее пар, дым, но никак не огонь. Уже сейчас вы можете порадоваться своим успехам, но приготовьтесь к следующей партии настроек основного модуля! :]

Дополнительные свойства основного модуля

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

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

Начальный размер каждой частицы.

Вверху: 0.2, внизу: 1

Установите размер частицы 0.25 ; это управляемый размер, который позволяет увидеть отдельные частицы более четко.

Начальный угол поворота каждой частицы.

Вверху: 0°, внизу: 45°

Сделайте начальный угол поворота равным 0° , поскольку нашу частицы имеют круглую форму, так что вы вряд ли заметите разницу.

Начальный цвет каждой частицы. Оставьте текущий белый цвет, поскольку вы будете окрашивать огонь с помощью текстуры.

Масштабирование значения гравитации в менеджере физики (physics manager). Значение равное 0 приведет к отключению гравитации.

Изображение выше взято из системы со значением Модификатора Гравитации, равным 1 , благодаря которому частицы летят вниз как вода в водопаде. Оставим этот параметр на 0 ; частицы будут двигаться вверх со скоростью, заданной в Start Speed.

Запускает частицы с той же самой скоростью velocity что и система частиц. Работает только тогда, когда к системе частиц добавлен Rigidbody.

Слева: 1, справа: 0

Оставьте Inherit Velocity равной 0 , поскольку для создания эффекта огня она нам не понадобится.

Указывает относительно какой из систем координат (с.к.) должны начать свое движение частицы? Локальной (и как следствие двигаться вместе с самими объектом) или мировой?

Вверху: локальная с.к., внизу: мировая с.к.

Выберите Local Space (Локальная система координат). Эффект будет заметен только приперемещении системы частиц.

Play On Awake Начинает ли система свою работу автоматически в момент создания объекта? Max Particles

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

Это был довольно внушительный список, но в результате вы узнали, как добавить систему частиц к сцене и как настроить ее по своему вкусу. Запустите сцену еще раз, чтобы увидеть эффект от внесенных изменений:

Выглядит все больше и больше похоже на огонь, правда? Нужно добавить больше частиц, а для этого надо редактировать модуль emission of the system.

Введение в модуль Emission (Emission Module)

Модуль Emission является одним из наиболее важных модулей в системах частиц Unity. Он обрабатывает число и время излучения частиц в системе, чтобы создать непрерывный поток или внезапный выброс частиц в зависимости от ваших потребностей. Находясь в Инспекторе Системы частиц, щелкните по заголовку Emission:

Щелкните по заголовку Emission

Вкладка модуля раскроется и даст нам возможность задать значения:

Свойства Emission Module

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

Оставьте настройки в Time и измените Rate на 50 . Запустите сцену снова:

Мы по-прежнему видим нечто похожее на дым. Но, без паники, нам на помощь приходят пользовательские текстуры!

Добавление пользовательских текстур

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

Изменять текстуру частиц довольно легко. До сих пор, частицы были нарисованы на экране с помощью материала Default-Particle который является материалом частиц с круговой градиентной текстурой:

Чтобы изменить материал, выберите игровой объект TorchFireParticles внутри Иерарархии. Затем найдите компонент системы частиц в Инспекторе, и откройте модуль Renderer системы частиц.

Откройте папку Materials в окне проекта и перетащите FireMaterial Material в свойство Material:

Теперь запустите сцену, чтобы увидеть вашу пользовательскую текстуру в действии:

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

Изменение формы системы частиц

Модуль Shape, как следует из названия, управляет формой и поведением частиц в этой форме. Вы можете выбрать одну из нескольких различных форм, каждая из которой имеет свои собственные специфические настройки. Это позволяет создать частицы в «ящике», сфере или вообще в чем угодно другом.!

Разверните модуль Shape в Инспекторе:

Форма shape вашей системы частиц установлена как конусообразная (cone), что означает, что частицы появляются у основания (base) и двигаются с заданным углом (angle).

В приведенном выше примере, основание окрашено в синий цвет, угол – зеленый, а частицы – красные. Обратите также внимание на то, что пока у вас открыт модуль форм (Shape Module), вам доступен удобный предпросмотр создаваемого конуса:

Изменение угла Angle изменяет и размер конуса, делая его шире или уже. Установите его значение равным 10 и вы получите хороший плотный огонь, который слегка расширяется по мере роста частицы.

Изменение радиуса Radius изменяет размер основания; чем выше значение, тем больше частицы будут разбрасываться с появлением. Установите это значение в 0.2 ; это обеспечит то, что огонь будет исходить из нужного места на факеле.

Запустите вашу сцену и посмотрите, как изменилась форма пламени:

Это уже больше похоже на настоящий огонь! Завершающим штрихом является изменение размера частиц в течение их жизни.

Изменение размера со временем

С помощью модуля Size over Lifetime вы можете создавать частицы, которые уменьшаются или увеличиваются в течение их жизни, или даже пульсируют как светлячки в лесу.

Найдите Size over Lifetime в списке модулей систем частиц. В отличие от предыдущих модулей, он по умолчанию отключен. Нажмите на флажок рядом с именем модуля, чтобы включить его:

Чекбокс для Size over Lifetime

Откройте модуль Size over Lifetime, кликнув по его названию. Откроется темно-серое окошко с плоской линией наверху:

Модуль Size over Lifetime

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

Кривые

Вы можете перемещать ключи на обоих концах красной линии для редактирования кривой. Вы также можете добавить дополнительные ключи, дважды щелкнув в любом месте на кривой. Чтобы удалить ключи, щелкните правой кнопкой мыши на ключ, чтобы удалить и выберите Delete Key.

Вы можете также выбрать одну из предустановленных кривых в нижней части:

Чтобы сделать огонь более похожим на настоящий, выберите третью справа преднастройку, чтобы создать линию, идущую вниз:

Запустите сцену, чтобы увидеть свой эффект во всей своей огненной славе!

Если вы работали в основной форме с Animations, давайте теперь посмотрим, как можно создать реалистичные дрожащие тени! Как создать дрожащие тени? Очень просто:

  1. Отключите Directional Light (Направленный свет) в Иерархии.
  2. Добавьте Point Light (Точечный свет) к центру частиц пламени (0, 0, 4) .
  3. Сделайте Color (Цвет) слегка оранжевым (HEX-значение FFC68AFF).
  4. Установите Range (Диапазон) в 50 .
  5. Установите Intensity (Интенсивность) в 3 .
  6. Добавьте Animation и сохраните ее где-нибудь в папке Assets.
  7. Присвойте анимацию Animation, которую вы только что создали, к Point Light.
  8. Откройте Animation Window.
  9. Выберите Point Light (Точечный свет).
  10. Установите Shadow Type в Hard Shadows .
  11. Установите Samples в 50 .
  12. Через каждые несколько кадров добавляйте ключевой кадр keyframe и слегка двигайте Point Light (точечный свет) по осям X и Y. Нет никаких стандартов и норм, просто попытайтесь подобрать максимально реалистичные параметры.
  13. Запустите сцену.

Вот, что примерно должно получиться:

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

Компьютерная графика → Система частиц или как сделать крутые эффекты

Particle System или Система Частиц – это огромный генератор маленьких изображений, которым можно давать траекторию, скорость, настраивать физику или колоритность частиц.

Использовать систему частиц можно для чего угодно! Мы можем сделать огонь или лед, ветер и ураган, все зависит от вашей фантазии и мастерства.

Чтобы создать дефолтный эффект нужно в сцене выбрать: create=>Effects=>Particle System.

Компонент Particle System имеет множество настроек и для удобства, инспектор упорядочивает их в сворачиваемые секции или “модули” описываемые ниже. Каждая секция может быть развёрнута и свёрнута при нажатии на заголовок. С левой стороны расположены чекбоксы, которые можно отмечать для включения или отключения тех или иных настроек.Но об этом позже.

Вуаля! В сцене появился Particle System с которым вы можете работать. Сегодня мы попробуем сделать огонь. Но для начала нужно подготовить текстуры и материалы.

Текстуры и материалы

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

Можно поискать в интернете или рисовать самим, используя фотошоп, например.

Эту текстуру я нашел очень давно в одном из бесплатных паков эффектов из Assets Store, в Unity (ctrl+9). Итак, с текстурой разобрались, теперь нам нужно каким-то образом сделать материал для эффекта. Приступим: в любой папке своего проекта кликаем правой кнопкой мыши затем: create=>material.

Создался пустой материал что с ним делать дальше?! Для начала назовем его Fire, мы же будем делать огонь). Затем нажмем на материал и перейдем во вкладку inspector. В поле меню Shader, у вас сейчас стоит Standard, давайте изменим давайте изменим. Кликаем на это поле затем выбираем: Legacy Shaders=>Particles=>Additive.

Как вы могли заметить для эффектов есть несколько видов шейдеров. Я расскажу вам про 2: Additive и Alpha Blended. На просторах интернета вы можете найти много текстур и они будет разными. Если вы выбираете текстуру с прозрачным фоном, то советую вам выбирать шейдер Alpha Blended. Он не будет искажать цветовую гамму вашей текстуры. А если вы, как и я используете текстуру с черным фоном, то вы должны использовать шейдер Additive. Он не учитывает черный цвет в принципе. Для этого шейдера черный цвет это степень прозрачности, поэтому некоторые текстуры могут показаться светлее и прозрачнее чем есть на самом деле.

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

И так! У нас практически все готово. Переходим в сцену, тыкеам на наш эффект, спускаемся в низ во вкладку Renderer, чуть ниже есть меню Material => выбираем наш материал)

Дело практически сделано! Я не буду рассказывать про все кладки эффекта, потому что это затянулось бы на долго. Но я расскажу самые важные и часто используемые. Итак, читаем, запоминаем и повторяем за мной!

Самая первая вкладка – одна из самых важных, приступим:

Duration – это продолжительность эффекта. Оставляем стандартное значение.

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

Prewarm – ставиться только если эффект зациклен. Нужен для того чтобы при старте эффекта он находился уже активном состоянии а не начинался самого начала.

Start Delay – задержка начала эффекта.

Start Lifetime – время жизни каждой частицы. Напротив каждого меню есть черный треугольник, при нажатии на него можно выбрать какой тип значения мы выберем. Нажимаем и выбираем Random between two constant. Теперь у нас два поля для ввода. Ставим 1 и 3. Теперь время жизни каждой частицы варьирует от 1f до 3f.

Start speed – скорость частиц, ставим 2 поля и вводим 1 и 4.

Start size – как не трудно догадаться это начальный размер частицы. Ставим от 0.1 до 3.

Start rotation – начальный поворот изображения. От 0 до 359. Почему не до 360 – потому что 0 это и есть 360)

Start color – цвет нашего эффекта пока его не трогаем.

Simulation speed – модификатор скорости нашего эффекта, ставим 2.

Play on awake – будет ли эффект срабатывать сразу после того как он станет активным.

Остальное пока трогать не будем) переходим дальше

Во вкладке Emission нас интересует только 1 поле Rate over Time – это кол-во частичек генерируемых в определенный отрезок времени. Ставим 50

Вкладка Shape

Shape— форма траектории нашего эффекта выбираем конус.

Angle – верхний радиус.

Radius – нижний радиус.

Color over lifetime

В этой вкладке всего 1 поле- поле с цветом.

Этот параметр отвечает за то как эффект будет менять цвет в течении своей жизни.

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

Вкладка Size over lifetime . Это график изменения размера в течении жизни эффекта

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

Rotation over lifetime

Как не сложно догадаться эта вкладка отвечает за вращение в течении жизни эффекта. Одно поле для ввода меняем на 2 и ставим диапазон он 90 до -90

Вкладка Noise

Это так называемый шум в поведении частиц. Нас интересует только поле Strength, оно отвечает за силу разброса траектории частиц.

Самая последняя вкладка Renderer, с ней мы уже работали выше.

Эта вкладка тоже очень важная. Отвечает за отображение частиц и их порядок в слое. В самом низу есть 2 поля Sorting layer – выбор слоя в котором будет находится Эффект и Order in layer – порядок в этом слое.

Если вы все сделали правильно, то у вас должен получится вот такой примитивный огонь)))

Где достать бесплатно.

Все бесплатные текстуры можно найти как я говорил в интернете или отрисовать самому . Но у меня есть один очень интересный сайт где я частенько нахожу прикольные текстуры :

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

Их можно найти на Assets Store.

На англоязычном YouTube очень много обучалок, где люди делятся текстурками)

Советы новичкам

1 и самый важный совет – не удаляйте текстуры. НИКОГДА. В любой момент, даже самая странная и не понятная текстура может подойти вам как нельзя лучше.

Используйте текстуры с прозрачным фоном.

Если вы рисуете текстуры сами, не задавайте им цвет. Пусть текстура будет белой, в редакторе вы всегда сможете поменять ей цвет)

По возможности находит эффекты профессионалов и разбирайте их а потом пытайтесь повторить именно так вы сможете научиться делать реально крутые штуки)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *