Рух однієї частинки: Частина 1 — VFX Graph

У цій статті ми створимо простий візуальний ефект, який генерує одну частинку та рухає її вгору з фіксованою швидкістю. Ми проведемо вас через встановлення Visual Effect Graph, створення ресурсу візуального ефекту та пояснимо основну функціональність його блоків: Spawn, Initialize, Update і Output. Працюючи з однією частинкою, ми покажемо, як до Visual Effect Graph можна підходити так само, як до скриптів MonoBehaviour, що полегшує концептуалізацію та створення складніших ефектів.

Вступ: Visual Effect Graph

Блок Spawn

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

pic

Зазвичай використовувані вузли Spawn:

Постійна швидкість спауну: Генерує певну кількість частинок за секунду.

pic

Періодичний сплеск: Генерує сплеск частинок повторно з заданою затримкою між ними.

pic

Одиничний сплеск: Генерує один сплеск частинок після заданої затримки.

pic

Блок Initialize

Блок Initialize — це місце, де налаштовуються дані для кожної частинки.
Це включає в себе визначення властивостей, таких як місце початку частинки в сцені, її швидкість руху, розмір та колір. Ці початкові налаштування визначають, як частинка виглядатиме та поводитиметься, коли вона з'явиться. Налаштовуючи ці властивості перед початком циклу оновлення, ви встановлюєте точку відліку для всієї поведінки частинок, забезпечуючи правильну роботу візуального ефекту.

pic

Розуміння налаштувань Initialize

Capacity
Місткість визначає максимальну кількість частинок, яку система може згенерувати. У Visual Effect Graph це значення є фіксованим, оскільки система повинна виділити пам'ять для всіх створених частинок. За замовчуванням місткість більшості ефектів становить 64 частинки. Найкраще залишати це значення незмінним під час налаштування швидкості спауну та візуальних ефектів, а потім коригувати його пізніше для оптимізації продуктивності.
Якщо вам потрібно зменшити місткість, розгляньте способи зробити ефект більш ефективним, зберігаючи візуальну якість при використанні меншої кількості частинок.

Bounds
Межі визначають умови, за яких візуальний ефект відображається, залежно від його видимості та положення відносно камери. Налаштовуючи відповідні межі, ви можете забезпечити відображення частинок лише тоді, коли це необхідно, що покращує продуктивність. Visual Effect Graph надає кілька режимів меж для різних сценаріїв, що дозволяє оптимізувати рендеринг залежно від конкретних потреб вашого ефекту.

pic

Update Block

Update Block контролює, як частинки змінюються з часом після їх створення. Тут ви визначаєте такі поведінкові характеристики, як рух, згасання або збільшення, що відбуваються під час існування частинки в сцені. Наприклад, ви можете змусити частинки дрейфувати в певному напрямку, поступово зменшуватися або змінювати колір.
Ці оновлення застосовуються безперервно протягом життєвого циклу частинки, що дозволяє створювати динамічні та еволюціонуючі ефекти. Використання цього блоку є обов'язковим для створення більш динамічних і чутливих ефектів.

pic

Output Block

Output Block визначає, як частинки рендеряться та з'являються на екрані. Цей блок контролює їх візуальне відображення, таке як форма, матеріал і режим змішування. Крім того, Output Block дозволяє тимчасово коригувати властивості частинок спеціально для рендерингу, наприклад, збільшувати розмір, масштаб чи обертання. Ці зміни застосовуються тільки під час фази рендерингу і не впливають на дані частинки з часом.
Це робить Output Block важливим для точної налаштування вигляду частинок у фінальному ефекті, не змінюючи їх поведінку чи атрибути в інших частинах графа.

pic

Для тих, хто знайомий з Unity скриптами

Якщо ви знайомі з Unity скриптами, Visual Effect Graph має деякі паралелі з методами MonoBehaviour, які можуть допомогти вам зрозуміти його функціональність:

  • Initialize Block схожий на метод Start(). Він визначає початковий стан кожної частинки при її створенні, такий як її позиція, швидкість і вигляд.
  • Update Block виконується кожного кадру на GPU, що робить його схожим на метод Update(). Однак, на відміну від Update(), він працює повністю на GPU, що дозволяє ефективно обробляти тисячі частинок одночасно.
    Це означає, що він не може взаємодіяти з логікою на стороні CPU, але є відмінним для оновлення поведінки частинок у реальному часі.

Покрокова інструкція: Переміщення частинки

Крок 1: Встановлення Visual Effect Graph

Виберіть Window > Package Manager, знайдіть Visual Effect Graph в табі Unity Registry.
Виберіть Install, якщо цей пакет наразі не додано до вашого проєкту.

pic

Крок 2: Створення активу Visual Effect

Клацніть правою кнопкою миші у вікні проєкту та виберіть Create > Visual Effects > Visual Effect Graph

pic

Виберіть Minimal System та натисніть кнопку Create

pic

Перетягніть актив JumpingParticle VisualEffect у ієрархію

pic

Крок 3: Налаштування появи однієї частинки

Двічі клацніть на актив Visual Effect, щоб відкрити Graph View

pic

Клацніть правою кнопкою миші на блок Spawn та виберіть Create Block

pic

Або можна натискати на блок Spawn та натискати Space Key

Розгорніть список Spawn і виберіть Single Burst.
Це дозволить нам створити спалах частинок.

pic

Це створить блок Single Burst з кількістю, встановленою в 0, та затримкою, встановленою в 0. Переконайтеся, що ви встановили кількість на 1, щоб він створив одну частинку, яку ми будемо модифікувати.

pic

Крок 4: Налаштування руху

Ми будемо використовувати вузол add position в блоці Update, щоб змінювати позицію.

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

pic

pic

Ось як має виглядати ваша поточна система

Крок 5: Використання Delta Time

Нам потрібно налаштувати вузол Delta Time (VFX).
Це забезпечує час між кадрами GPU, щоб, якщо ваш комп’ютер працює швидше або повільніше, час був відкоригований і виконання відбувалося в реальному часі. Використання Delta Time за замовчуванням дозволяє переміщення на 1 одиницю за секунду. Ми можемо використовувати вузол множення, щоб змінити це.

pic

Крок 6: Налаштування властивості швидкості

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

pic

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

pic

Як це застосовується?

Розуміння того, як змінювати та оновлювати окремі частинки, є основою для створення більш складних візуальних ефектів. Зводячи систему до однієї частинки, цей посібник демонструє, що частинки та GameObjects мають багато спільного. Підхід до Visual Effect Graph з мисленням сценаріїв GameObjects може спростити процес. Запитайте себе: “Як би ви написали сценарій для GameObject, щоб він рухався або поводився так, як ви хочете, щоб виглядав ваш ефект?”

Такий підхід часто показує, що багато ефектів складаються з простих компонентів: основне світіння та кілька маленьких рухомих об'єктів. Розпізнаючи ці елементи, ви зможете розкласти складні ефекти на більш прості частини і зосередитись на їх русі та поведінці в рамках Visual Effect Graph.
Цей підхід не лише спрощує створення складних ефектів, але й відкриває нові творчі можливості, використовуючи ваші наявні знання з композиції в Unity.

Підсумок

Цей посібник надає простий підхід для руху частинки вгору за допомогою відкритої властивості Speed. Ми розглянули основи блоків Spawn, Initialize, Update та Output, а також їхню роль у процесі створення візуального ефекту. Розуміння того, як налаштовувати та змінювати окремі частинки, є важливим для створення більш складних і багатошарових ефектів. Поєднуючи кілька частинок з унікальними поведінками, ви можете створювати динамічні та візуально привабливі ефекти, які оптимізовані для великомасштабної розробки.

Удачі в побудові!

Перекладено з: Making a Single Particle Move: VFX Graph Part 1

Leave a Reply

Your email address will not be published. Required fields are marked *