Что такое система частиц
Unity: системы частиц
Системы частиц похожи на соль: даже небольшое количество может добавить готовящемуся «блюду» стиля. Современные игры, в которых не используются системы частиц, выглядят довольно бледно.
В прошлом нам приходилось каждую струйку дыма программировать самостоятельно. К счастью, благодаря встроенной модульной системе частиц Unity Shuriken делает создание частиц достаточно простой задачей. Эта система частиц проста в изучении и позволяет создавать сложные эффекты.
В этом туториале вы научитесь следующему:
Примечание: в этом туториале подразумевается, что вы знакомы с основами работы в Unity. Если вы новичок в Unity или вам нужно освежить свои знания, то для начала изучите наш туториал Introduction to Unity.
Приступаем к работе с системами частиц
Скачайте заготовку проекта для этого туториала и распакуйте её в удобное для вас место. Учтите, что для работы с туториалом вам понадобится как минимум Unity 2017.2.
Откройте Starter Project в 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. Здесь находятся самые основные параметры частиц:
Сверху: 8 секунд. Внизу: 3 секунды
Сверху: 2. Снизу: 10
Задайте значение скорости 0.75; так эффект пламени будет медленнее и плотнее.
Примечание: изменяя параметры системы частиц, вы будете видеть её предварительный обзор в окне Game. В процессе выполнения туториала посматривайте на этот предварительный обзор.
Запустите сцену, чтобы посмотреть, как повлияли внесённые изменения:
Мы настроили факел, но эффект огня пока оставляет желать лучшего. К счастью, в модуле Main есть дополнительные опции, позволяющие усовершенствовать форму и поведение факела.
Другие свойства модуля Main
Выберите в иерархии GameObject TorchFireParticles и прокрутите вниз, к системе частиц. В модуле Main Module посмотрите на следующие свойства:
Сверху: 0.2. Внизу: 1.
Сверху: 0°. Внизу: 45°
Сверху: local space. Внизу: world 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 в папке Scripts окна Project Window.
Добавьте в Start() следующий код:
Теперь бомбы при падении красиво вращаются. Но я обещал вам взрывы!
В иерархии нажмите на кнопку Create и выберите Create Empty. Нажмите на созданный GameObject и назовите его ExplosionParticles. Далее добавьте к этому GameObject новую систему частиц. Если вы забыли, как создавать систему частиц, то посмотрите первый раздел туториала.
Создав систему частиц, перетащите GameObject ExplosionParticles из иерархии в папку Prefabs в Project Browser. После этого удалите GameObject ExplosionParticles из Project Hierarchy.
Затем выберите префаб Bomb в папке Prefabs и перетащите префаб ExplosionParticles в слот Explosion Particles Prefab Bomb следующим образом:
Как и в случае с факелом, мы будем использовать для системы частиц материал Fire.
Выберите префаб ExplosionParticles в окне Project Window, а затем разверните в инспекторе модуль Renderer. Перетащите FireMaterial из папки Materials из окна Project Window в слот Material, как показано ниже:
Чтобы завершить эффект, нам нужно изменить следующие параметры в модуле Main:
Создание взрыва
Если вы решили, что это модуль Emission, то вы молодец!
Разверните Emission Module. Rate — это количество частиц, создаваемых за секунду. Для взрыва нам нужен не постоянный поток частиц, а резкая вспышка.
Задайте Rate over Time значение 0. Теперь перейдите к Rate over Distance и вы увидите список Bursts, который по умолчанию пуст:
Burst — это набор частиц, испускаемых одновременно в определённый момент времени.
Нажмите на кнопку + в нижнем правом углу, чтобы добавить новый Burst. Вы увидите два поля: Time и Count:
Оставьте Time равным 0, и задайте Count значение 150. Такие параметры заставят систему частиц одновременно испускать 150 частиц в начале системы.
Запустите сцену. Как всё выглядит теперь?
Для начала развернём модуль Shape:
Мы уже использовали этот модуль для формы пламени факела, но здесь можно выбрать и другие формы. Нажмите на раскрывающееся поле, в котором написано Cone, чтобы увидеть все доступные варианты:
Каждая форма влияет на эмиттер по-своему. На каждой показанной ниже анимации показан одинаковый эмиттер, у которого меняется только форма:
От одной системы можно получить множество различных эффектов, просто меняя её форму! Для создания реалистичного взрыва выберите форму Sphere.
Запустите сцену и готовьтесь взорваться:
Теперь всё выглядит потрясающе!
Изменение цвета
Открыв систему частиц в инспекторе, нажмите на флажок рядом с модулем Color over Lifetime, чтобы включить его, а затем разверните его. Вы сразу увидите слово Color с белым блоком рядом с ним. Нажмите на белый блок:
При этом откроется редактор градиента:
Изменение цвета в течение времени жизни частиц представлено в виде градиента. Начальный цвет находится слева, и частицы постепенно изменяют цвет на указанный в правой части:
Четыре белые полосы по краям называются маркерами; нажмите между двумя имеющимися маркерами, чтобы добавить новый. Чтобы удалить маркер, перетащите его с полосы:
Верхние маркеры управляют Alpha или непрозрачностью цвета, а нижние — значениями цвета RGB (Red, Green, Blue).
Нажмите на самый правый альфа-маркер. В нижней части редактора градиента будет показано текущее значение альфа-канала:
Перетащите ползунок к 0. Теперь частицы будут постепенно становиться прозрачными в течение времени свой жизни.
Снова запустите сцену, чтобы посмотреть, как повлияли внесённые изменения:
Хотите ещё больше улучшить сцены? Вернитесь к сцене с факелом и сделайте так, чтобы пламя использовало модуль Size Over Lifetime Module для получения похожего эффекта.
Куда двигаться дальше?
Готовый проект можно скачать отсюда.
В этом туториале вы узнали, как в Unity работают системы частиц и их модули, а также научились тому, как настраивать их для получения нужного эффекта. Поэкспериментируйте с различными параметрами, чтобы увидеть, каких ещё эффектов можно добиться.
Подробную информацию о системе частиц Shuriken и её модулях см. в официальной документации Unity и в видео о системах частиц. Также о скриптинге систем частиц можно подробнее узнать здесь.
Компьютерная графика → Система частиц или как сделать крутые эффекты
Привет друзья! В этой статье мы поговорим о таких вещах как:
-Что такое Particle System в 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. Он не учитывает черный цвет в принципе. Для этого шейдера черный цвет это степень прозрачности, поэтому некоторые текстуры могут показаться светлее и прозрачнее чем есть на самом деле.
И так! У нас практически все готово. Переходим в сцену, тыкеам на наш эффект, спускаемся в низ во вкладку 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 поле- поле с цветом.
Этот параметр отвечает за то как эффект будет менять цвет в течении своей жизни.
Тыкаем на него и открывается редактор. Верхние бегунки отвечают за прозрачность частичек, а нижние отвечают за цвет. Выбирает любой цвет который вам нуже.Я выбрал от оранжевого до желтого.
всего один график тыкаем его и изменяем как вам нужно, в моем случае это от большего к меньшему.
Rotation over lifetime
Вкладка Noise
Это так называемый шум в поведении частиц. Нас интересует только поле Strength, оно отвечает за силу разброса траектории частиц.
Самая последняя вкладка Renderer, с ней мы уже работали выше.
Эта вкладка тоже очень важная. Отвечает за отображение частиц и их порядок в слое. В самом низу есть 2 поля Sorting layer – выбор слоя в котором будет находится Эффект и Order in layer – порядок в этом слое.
Если вы все сделали правильно, то у вас должен получится вот такой примитивный огонь)))
Где достать бесплатно.
Так же я бы советовал искать текстуры в бесплатных паках эффектов, с этого можно получить двойную выгоду: Во- первых текстуры, во- вторых можно найти интересные эффекты и изучить их технологию)
Их можно найти на Assets Store.
На англоязычном YouTube очень много обучалок, где люди делятся текстурками)
Советы новичкам
1 и самый важный совет – не удаляйте текстуры. НИКОГДА. В любой момент, даже самая странная и не понятная текстура может подойти вам как нельзя лучше.
Используйте текстуры с прозрачным фоном.
Если вы рисуете текстуры сами, не задавайте им цвет. Пусть текстура будет белой, в редакторе вы всегда сможете поменять ей цвет)
По возможности находит эффекты профессионалов и разбирайте их а потом пытайтесь повторить именно так вы сможете научиться делать реально крутые штуки)