Системи частинок (2D)

Вступ

В Godot є проста (але досить гнучка для більшості застосувань) система частинок. Системи частинок використовуються для імітації складних фізичних ефектів, таких як іскри, вогонь, магічні частинки, дим, туман тощо.

Ідея полягає в тому, що "частинка" випромінюється з фіксованим інтервалом і з фіксованим часом життя. Протягом свого життя кожна частинка матиме однакову базову поведінку. Що відрізняє кожну частинку від решти і забезпечує більш органічний вигляд, це "випадковість", пов'язана з кожним параметром. По суті, створення системи частинок означає встановлення базових фізичних параметрів, а потім додавання до них випадковості.

Вузли частинок

Godot пропонує два різні вузли для 2D-частинок, Particles2D і CPUParticles2D. Particles2D є більш вдосконаленим і використовує графічний процесор для обробки ефектів частинок, але це обмежує його графічним API вищого класу, а в нашому випадку - візуалізатором GLES3. Для проектів, що використовують GLES2 є CPUParticles2D, цей варіант керується процесором, з майже такими ж функціями, що і в Particles2D, але меншою продуктивністю. Поки Particles2D налаштовується за допомогою ParticlesMaterial (і, за бажанням, із користувацьким шейдером), параметри відповідності надаються через властивості вузла в CPUParticles2D (за винятком налаштувань сліду). Ви можете перетворити вузол Particles2D у вузол CPUParticles2D, натиснувши на вузол в інспекторі та вибравши пункт Перетворити на CPUParticles2D у меню Частинки на панелі інструментів.

../../_images/particles_convert.png

Далі тут буде використовуватися вузол Particles2D. Спочатку додайте вузол Particles2D до вашої сцени. Після створення цього вузла ви помітите, що була створена лише біла крапка, а поруч із вашим вузлом Particles2D в інспекторі є піктограма попередження. Це пов’язано з тим, що для роботи вузла потрібен ParticlesMaterial.

ParticlesMaterial (Матеріал Частинок)

Щоб додати технологічний матеріал у вузол частинок, перейдіть на панель інспектора в Process Material. Клацніть на поле поруч Material і зі спливаючого меню виберіть Новий ParticlesMaterial.

../../_images/particles_material.png

Тепер ваш вузол Particles2D повинен випускати білі точки, що падають вниз.

../../_images/particles1.png

Текстура

Система частинок використовує одну текстуру (у майбутньому це може бути розширено до анімованих текстур за допомогою спрайт-аркуша). Текстура встановлюється за допомогою відповідної властивості текстури:

../../_images/particles2.png

Параметри часу

Lifetime (Час життя)

Час існування кожної частики у секундах. Коли закінчується термін життя, створюється нова частинка, яка замінює її.

Час життя: 0.5

../../_images/paranim14.gif

Час життя: 4.0

../../_images/paranim15.gif

One Shot (Один постріл)

Якщо увімкнений, вузол Particles2D буде випускати всі свої частинки за один раз, і більше ніколи.

Preprocess (Попередня підготовка)

Системи частинок починаються з нуля випромінюваних частинок, потім починають випромінювати. Це може бути незручністю, при завантаженні сцени та систем, таких як факел, імла тощо, коли вони починають випромінювати частинки в момент входу. Попередня обробка використовується для того, щоб система могла обробити задану кількість секунд до того, як вона фактично буде намальована вперше.

Speed Scale (Шкала швидкості)

Шкала швидкості за замовчуванням має значення 1 і використовується для регулювання швидкості системи частинок. Зменшення значення призводить до того, що частинки будуть повільнішими, а збільшення значення - до їх прискорення.

Explosiveness (Вибуховість)

Якщо час життя становить 1 і є 10 частинок, це означає, що одна частинка буде випромінюватися кожні 0,1 секунди. Параметр вибуховості змінює це і змушує частинки випромінюватися одночасно. Діапазони:

  • 0: Випускати частинки через рівні проміжки часу (значення за замовчуванням).

  • 1: Випускати всі частинки одночасно.

Також допускаються значення в середині. Ця функція корисна для створення вибухів або раптових викидів частинок:

../../_images/paranim18.gif

Randomness (Випадковість)

Всі фізичні параметри можуть бути випадковими. Випадкові значення варіюються від 0 до 1. Формула для параметра випадковості:

initial_value = param_value + param_value * randomness

Fixed FPS (Фіксований FPS)

Цей параметр можна використовувати для налаштування рендерингу системи частинок із фіксованим FPS. Наприклад, зміна значення на 2 змусить частинки відтворюватися зі швидкістю 2 кадри в секунду. Зауважте, це не уповільнює саму систему частинок.

Fract Delta

Цим можна увімкнути або вимкнути Fract Delta.

Параметри малювання

Visibility Rect (Прямокутник видимості)

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

Властивості прямокутника, W та H відповідно, контролюють його ширину та висоту. Властивості X і Y контролюють положення лівого верхнього кута прямокутника відносно випромінювача частинок.

Ви можете домогтися, щоб Godot автоматично створював Прямокутник Видимості, використовуючи панель інструментів над 2d-видом. Для цього виберіть вузол Particles2D та перейдіть Частинки > Створити область видимості. Godot буде моделювати вузол Particles2D, що випромінює частинки, протягом декількох секунд і встановлюватиме прямокутник відповідно до поверхні, яку беруть частинки.

Ви можете регулювати тривалість випромінювання за допомогою опції Час генерації (сек). Максимальне значення - 25 секунд. Якщо вам потрібно більше часу для переміщення частинок, ви можете тимчасово змінити тривалість на вузлі Particles2D.

Локальні координати

За замовчуванням цей параметр увімкнений, і це означає, що простір, куди випромінюються частинки, визначається відносно вузла. Якщо вузол переміщений, усі частинки переміщуються разом з ним:

../../_images/paranim20.gif

Якщо його вимкнути, частинки будуть випромінюватися у глобальний простір, це означає, що переміщення вузла, не вплине на вже випущені частинки:

../../_images/paranim21.gif

Draw Order (Порядок малювання)

Це контролює порядок малювання окремих частинок. Index означає, що частинки малюються відповідно до їх порядку викидання (за замовчуванням). Lifetime означає, що вони малюються в порядку часу, що залишився до кінця життя.

Параметри ParticlesMaterial (Матеріал Частинок)

Direction (Напрямок)

Це основний напрямок, в якому випромінюються частинки. За замовчуванням Vector3(1, 0, 0), це означає, що частинки випромінюються вправо. Однак, з налаштуванням сили тяжіння за замовчуванням, частинки будуть падати вниз.

../../_images/direction1.png

Щоб ця властивість була помітною, вам потрібна початкова швидкість, більша за 0. Тут ми встановлюємо початкову швидкість до 40. Ви помітите, що частинки випромінюються вправо, а потім опускаються через гравітацію.

../../_images/direction2.png

Розсіювання

Spread (Розсіювання) - кут у градусах, який буде випадковим чином доданий в будь-якому напрямку до основного напряму. Розсіювання 180 буде випромінюватися в усіх напрямках (+/- 180). Щоб розсіювання працювало, параметр Initial Velocity (Початкова швидкість) повинен бути більше 0.

../../_images/paranim3.gif

Flatness (Рівність)

Ця властивість корисна лише для 3D-частинок.

Gravity (Тяжіння)

Гравітація, що застосовується до кожної частинки.

../../_images/paranim7.gif

Initial Velocity (Початкова швидкість)

Це швидкість, з якою будуть випромінюватися частинки (у пікселях/сек). Пізніше швидкість може бути змінена під дією сили тяжіння або інших прискорень (як описано далі).

../../_images/paranim4.gif

Angular Velocity (Кутова швидкість)

Це початкова кутова швидкість, що застосовується до частинок.

Spin Velocity (Швидкість Обертання)

Швидкість, з якою частинки обертаються навколо свого центру (у градусах/с).

../../_images/paranim5.gif

Orbit Velocity (Орбітальна швидкість)

Використовується, щоб змусити частинки повертати відносно їх центру.

../../_images/paranim6.gif

Linear Acceleration (Лінійне прискорення)

Лінійне прискорення, прикладене до кожної частинки.

Radial Acceleration (Радіальне прискорення)

Якщо це прискорення позитивне, частинки прискорюються далеко від центру. Якщо негативне, вони поглинаються ним.

../../_images/paranim8.gif

Tangential Acceleration

Це прискорення використовуватиме дотичний вектор до центру. Поєднання з радіальним прискоренням може принести хороші ефекти.

../../_images/paranim9.gif

Damping (В’язкість)

Застосовує до частинок тертя, змушуючи їх зупинитися. Це особливо корисно для іскор або вибухів, які зазвичай починаються з високою лінійною швидкістю, а потім припиняються в міру згасання.

../../_images/paranim10.gif

Angle (Кут)

Визначає початковий кут частинки (у градусах). Цей параметр переважно корисний випадковим.

../../_images/paranim11.gif

Scale

Визначає початковий масштаб частинок.

../../_images/paranim12.gif

Колір

Використовується для зміни кольору частинок, що виділяються.

Hue variation (Зміна відтінку)

Значення Variation задає початкову зміну колірного тону застосованого до кожної частинки. Значення Variation Random визначає коефіцієнт варіації колірного тону випадковістю.

Emission Shapes (Форми Випромінювання)

ParticlesMaterials дозволяють встановити Маску Випромінювання, яка диктує площу та напрямок, в якому випромінюються частинки. Вони можуть бути сформовані з текстур у вашому проекті.

Переконайтеся, що ParticlesMaterial встановлено та вибрано вузол Particles2D. На панелі інструментів повинно з'явитися меню Частинки:

../../_images/emission_shapes1.png

Відкрийте його та виберіть "Завантажити маску випромінювання":

../../_images/emission_shapes2.png

Потім виберіть, яку текстуру ви хочете використовувати як маску:

../../_images/emission_shapes3.png

З'явиться діалогове вікно з декількома налаштуваннями.

Маска випромінювання

З текстури можна створити три типи масок випромінювання:

  • Залиті пікселі: Частинки виникають з будь-якої області текстури, за винятком прозорих областей.

../../_images/emission_mask_solid.gif
  • Крайні Пікселі: Частинки виникають із зовнішніх країв текстури.

../../_images/emission_mask_border.gif
  • Направлені крайні пікселі: схожі на крайні пікселі, але додають додаткову інформацію до маски, щоб дати частинкам здатність випромінюватись далеко від меж. Зверніть увагу, що для того, щоб використовувати їх, потрібно встановити Початкову швидкість.

../../_images/emission_mask_directed_border.gif

Кольори випромінювання

Capture from Pixel призведе до того, що частинки успадкують колір маски в місцях їх появи.

Після натискання кнопки OK маска буде сформована та встановлена в ParticlesMaterial у розділі Emission Shape (Форма випромінювання):

../../_images/emission_shapes4.png

Всі значення в цьому розділі були автоматично сформовані за допомогою меню Завантажити маску випромінювання, тому їх, як правило, слід залишити в спокої.

Примітка

Зображення не слід додавати безпосередньо до Point Texture або Color Texture. Натомість завжди слід використовувати меню Завантажити маску випромінювання.