Пайплайн створення VFX для ігор. Як зробити ефект піщаної бурі з Dune для гри та синематику

Вітання! Мене звуть Денис Федоренко, я VFX Artist у Room 8 Studio та ментор курсу в varto.school. Дивлячись Artstation, я натрапив на роботу з гри Dune: Spice Wars, це була якраз піщана буря. I менi захотілося зробити свою версію цього ефекту. Сам ефект не дуже складний, головне — це створити необхідну текстуру. Нижче розповім основнi етапи створення цього ефекту. Let`s go!

VFX: що то таке?

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

Що таке VFX? Це візуальні ефекти, та сама магія, яка є у фільмах, іграх, синематиках та рекламі. Те, що неможливо зняти на камеру в реальності.

У геймдеві VFX використовують не тільки для того, щоб додати грі більш яскравих елементів. Візуальні ефекти додають грі ритм, зрозумілу інтерактивність, а особливо збільшують емоціональну задоволеність у гравців.

Тепер ми вже трохи розуміємо, про що буде йти мова далі.

Пайплайн для ігрового VFX

При створенні ефектів я використовую такий пайплайн:

  1. Створення текстур, матеріалів;
  2. Блокінг ефекту;
  3. Тестування;
  4. Ускладнення ефекту, додавання логіки, деталей;
  5. Тестування;
  6. Оптимізація.

Софт, який я буду використовувати для цього тутору: Unreal Engine 4, Substance Designer та Photoshop.

Текстури

Створювати текстуру ми будемо у Substance Designer.

Для початку нам потрібно створити 2 маски через «Liner Gradient» та поєднати це в одну маску (схожа з маскою UV координат в Unreal Engine) за допомогою ноди «RGB Merge». Тепер усе це під’єднуємо у ноду «3D Worley Noise». Ми отримали такий «Cell Noise». Дублюємо 3 рази та робимо різні варіації скейлу.


Далі ми комбінуємо наші ноди через ноду «Blend» у режимі «Switch», регулюючи opacity, щоб нойзи м’яко накладалися один на одного, створюючи текстуру хмар.


Тепер нам необхідно додати деталей через ноду нойзу «Clouds 2» та скомбінувати з нашим головним нойзом, так само через «Blend» у режимі «Switch» регулюючи opacity.

Додаємо ноду «Auto Levels» та розблюруємо нодою «HQ Blur Grayscale». Наразі наша текстура не є тайловою, тому нам потрібно затайлити її, а зробимо це у Photoshop.

Експортуємо у Photoshop та за допомогою «Spot Healing Brush Tool» прибираємо шви, потім експортуємо її. Тепер ми отримали нойзову текстуру схожу на хмари.


Далі нам знадобиться ще два будь-яких нойза. Я взяв зі своєї бібліотеки текстур, і текстуру блискавки, яку я намалював від руки у Photoshop. Тепер ми можемо перейти до Unreal Engine і почати створювати матеріал для піщаної бурі.


Матеріал

Створимо новий матеріал в «Blend Mode», для цього потрібно поставити «Translucent» у «Shading Model», повинно бути «Default Lit».

Переносимо нашi текстури хмар, якi створили у Substance Designer, до матеріалу. Продублюємо один раз та додамо два панери, пiдключимо до текстур та поставимо невелику швидкiсть.

У першому панерi по координатах X ставимо 0,04, по Y — 0,03.

У другому по X — 0,03, по Y — 0,02.

Далі закинемо один з нойзiв. Додамо йому панер та робимо звичайну конструкцію технiки «Distortion», потім єднаємо з панерами текстур.


Тепер необхідно зробити маску для текстур. Для цього беремо ноду «Sphere Mask»:

  • До A каналу підключаємо «Tex Coordinate».
  • До B — Scalar зi значенням 0,5; у «Radius» ставимо Scalar — 0,5; в «Hardness» ставимо — 0,01 i перемножуємо маску саму на себе.

Далi iнвертуємо маску через ноду «One Minus».

Додаємо ноду «Subtract»:

  • До A каналу пiдключаємо перемноженi текстури хмар між собою та помножені на 2.
  • До B каналу — ноду «One Minus».

Далi додаємо ноду «Divide»:

  • До A каналу підключаємо «Subtract».
  • У B каналі пишемо 0,2 i множимо з результатами маски перемноженої самої на себе.

Додаємо ноду «Deph Fade» та єднаємо усю конструкцію з «Particle Color», підключаємо у «Emissive» та «Opacity» матерiалу.

Матеріал для бурi готовий. Тепер необхідно створити матерiал блискавок, робимо майже таку конструкцію, як у першому матерiалi, усе окрім маски.

Матерiали для ефекту готовi, тепер перейдемо до Niagara та створимо ефект бурi.

Niagara

Створимо ефект у Niagara. Система проста, має чотири емітери зi своїми налаштуваннями. У першому емітері:

  • В «Render» у «Spire Render» — обираємо матерiал бурi.
  • В «Emitter Update» у «Loop Behaviour» ставимо «Infinite».
  • В «Particle Spawn» у «Spawn Rate» ставимо 10.
  • В «Initialize Particle» у «Lifetime Mode» обираємо «Random», i ставимо мінімальне значення 3,6, а максимальне — 8.
  • В «Sprite Size Mode» обираємо «Random Uniform», пишемо мiнiмальне значення 260, а максимальне — 350.
  • В «Sprite Rotation Mode» ставимо на «Random».
  • В «Velocity» обираємо «Random Range Vector», у мiнiмальних значеннях по X — 20, по Y — 30, по Z — 10, в максимальних значеннях по X — 60, по Y — 30, по Z — 20.

У модулi «Color» обираємо колiр пicку — жовто-червоний.


  • В «Sphere Location» ставимо «Sphere Radius» на 800.
  • В «Particle Update» — «Scale Sprite Size» робимо криву. У точцi часу 0 значення 2,3; у точцi часу 1 — 10.
  • В «Scale Color» теж робимо криву. У точцi часу 0 значення 0; точцi 0,08 —1; точці 0,89 — 1; точці 1 — 0.

У модулi «Wind Force», якщо ми хочемо, щоб буря рухалась, можемо поставити «Random Range Vector» та вказати напрямок через мiнiмальнi та максимальнi значення. Додамо ще «Curl Noise Forces» у «Noise Power», виставимо 80.

Далi продублюємо емiтер:

  • В «Emitter Update» замicть «Spawn Rate» поставимо «Spawn Burst». Ставимо на «Random Range Int» та пишемо у мiнiмальних значеннях 10, у максимальних — 20.
  • В «Particle Update» у «Scale Sprite Size» у першій точцi змiнюємо значення на 4,2. Це ми зробили для того, щоб коли ефект з’являється у сценi, одразу з’являлася й заспавнена буря.

Тепер дублюємо другий емiтер:

  • В «Sprite Renderer» обираємо матерiал блискавки.
  • В «Sub UV» ставимо 2×2.

Далi у «Render» додаємо «Light Renderer», прибираємо галочку з «Use Invert Squared Fallof» та ставимо її на «Affects Translucent» і «Alpha Scale Brightness», у «Radius Scale» пишемо 0,6, у «Default Exponent» — 2.


Далi:

  • В «Particle Update» додаємо модуль «Dynamic Parametrs». Робимо криву, у точцi часу 0 значення 0, у точцi часу 1 — 0,6.
  • В «Particle Spawn» ставимо модуль «SubImageIndex», обираємо «Random Range Float», мiнiмальне значення 0, максимальне — 3.
  • В «Sphere Location», «Sphere Radius» ставимо на 400.
  • В «Lifetime Mode» обираємо «Random» i ставимо мiнiмальне значення 0,2, а максимальне — 0,6.
  • В «Emitter Update», «Spawn Burst» ставимо на «Random Range Int», та пишемо мiнiмальне значення 6, максимальне — 10.
  • В «Emitter Update» ставимо галочку на «Loop Delay», обираємо «Random Range Float», мiнiмальне значення — 0,8, максимальне — 2. Ставимо галочку на «Recalculate Duration».

Далi дублюємо емiтер з блискавками та поставимо менші розміри блискавки, щоб додати деталей та рiзноманiтностi. Наш ефект готовий, можна ще закинути у Blueprint, додати декiлька джерел свiтла, i буде повноцінний VFX Asset.

Тепер можна використовувати цей ефект як у сiнематиках, так i у іграх. А ось так він буде виглядати:

Підписуйтеся на Telegram-канал @gamedev_dou, щоб не пропустити найважливіші статті і новини.

👍ПодобаєтьсяСподобалось12
До обраногоВ обраному4
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Я робив на цю тему свою версію, але більше надихався Gears 5 www.artstation.com/artwork/eJoAzZ

Підписатись на коментарі