Створення плагіну на базі ML для симуляції рідини в реальному часі

Усім привіт! Мене звати Саша Пучка, я 3D-лід в Zibra.AI. Все моє дитинство минуло в комп’ютерних клубах. Так-так, ви все правильно зрозуміли: я ріс десь між періодом палеоліту та епохою зумерів. Тоді мама запевняла мене, що якщо я буду стільки грати у комп’ютерні ігри, то ніколи не знайду нормальну роботу. І я зробив ігри ААА-класу своєю роботою. Шах і мат, мам. Але знаєте, що мене дратує у геймдеві? Ні, не дратує, а відверто бісить, нумо називати речі своїми іменами. Роками чекати на релізи улюблених відеоігор.

І саме тому я приєднався до команди, що поставила собі за мету прискорити виробництво ігор. Умовно кажучи, зробити процес створення ігрового контенту напівавтоматичним. Тож ми розробили революційну технологію — застосували машинне навчання для обробки 3D. Зараз розкажу про наш перший продукт.

Знайомся — Zibra Liquids

Раджу одразу запам’ятати це словосполучення. Адже саме завдяки цьому плагіну вода в іграх нарешті виглядатиме так, аби ти не відчував іспанського сорому за неї. І мова не про якісь «запечені» сцени з фейковими ефектами. Як щодо симуляції в реальному часі, м-м? Або нових гейм-механік? Чи, може, ти готовий до води, яка стане частиною нового ігрового процесу? Пристебнися, у нас попереду глибоке занурення.

Хто ми і як з’явилися

Компанію ZibraAI було створено у 2020 році в результаті успішного застосування ML для обробки 3D. Провівши низку досліджень машинного навчання, команда розробила спосіб кодування поля Signed Distance Field (SDF) 3D-об’єкта в компактні вектори, які потім можна розпакувати невеликою нейронною мережею для відновлення оригінального SDF.

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

Іншими словами, наша команда реалізувала ідею створення доступних інструментів на основі основної ML-технології. Інструменти призначені для спрощення процесу розробки гри, розв’язання проблеми поганого зовнішнього вигляду та зменшення обчислювальної потужності, що використовується в процесі. Це дозволить розробникам ігор і VFX-художникам зосередитися на творчості, не витрачаючи зусиль на оптимізацію гри.

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

Натхнені ідеєю розширити можливості розробників ігор і полегшити їхній шлях, ZibraAI вирішили додати напівавтоматизацію в розробку ігор. Розробники зможуть оцінити покращення графіки, оптимізацію фізики в грі та створення 3D-контенту з нижчими витратами на обчислення на всіх пристроях.

Що вже можна затестити?

Зараз у розробці є чимало інструментів. Однак перший з них ми вже встигли зарелізити на Unity. Це Zibra Liquids — кросплатформний плагін фізичного моделювання рідини в реальному часі для розробників ігор. Це також перший в історії плагін для симуляції рідини на основі ML, доступний для комерційного використання. Вражає, чи не так? Далі — більше.

Цей плагін дає змогу створювати взаємодію рідини з об’єктами будь-якої форми, навіть складної. Зайве говорити, що взаємодія рідини та об’єкта є вбивчою особливістю, оскільки ніхто раніше не робив подібного на тому ж рівні. Плагін працює в режимі реального часу. Його вбудовано в ігровий рушій, що означає, що розробникам більше не потрібно використовувати дороге і трудомістке стороннє програмне забезпечення. Встановлення Zibra Liquids займає усього кілька хвилин. Не віриш? Переконаймось разом.

Створення ріалтаймової симуляції

Запускаємо плагін. Щоб створити симуляцію ZibraLiquids, потрібно додати два ігрових об’єкти:

  • Zibra Liquid
  • Zibra Liquid Emitter
  • Для цього переходимо у меню SampleScene — GameObject — Zibra — Zibra Liquid:

Коли обидва об’єкти будуть додані, обираємо ZibraLiquid 1 і в меню Manipulators натискаємо Add, щоб увімкнути ZibraLiquid Emitter 1:

Це мінімально необхідне налаштування. Натискаємо кнопку Play, і вуаля — вже бачимо рідину в дії (вона тече всередині невидимої коробки). Тобто рідина з’являється реально за три кліки!

Хочете перевірити, як працює рідина? Ізі! Для цього переходимо на вкладку Assets — Plugins — Zibra — Liquids, обираємо Samples і відкриваємо SampleScene.

Тепер, коли рідину запущено, можемо грати з нею.

Переміщати камеру по сцені дуже просто. Для цього використовуй елементи керування WASD.

Клавіші зі стрілками контролюють гравітацію всередині сцени, а «O» повністю вимикає гравітацію.


Натиснувши кнопку Edit Container Are, можна вручну змінити положення контейнера його та розмір.

Повзунки дають змогу регулювати кількість частинок, що генеруються за секунду, і їхню швидкість.

Можна використовувати елементи керування gizmo, щоб замінити та повернути емітер у потрібному напрямку.

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

Щоб застосувати різні пресети, обираємо об’єкт ZibraFluid і клацаємо значок Slider у меню Material Parameters:

Тепер можемо застосувати будь-який пресет. Налаштувати параметри рідини дуже просто. Можна зробити піну, сироп, змінити колір, прозорість, щільність води, її деталізацію, жорсткість, в’язкість і швидкість води. Ці параметри впливають на баланс перформансу та якості.

Кілер-фічі

У повній версії плагіну є чимало фішок, за допомогою яких можна створювати гейм-механіки з водою. Комбінація Gravity control та Force Interaction дає змогу переміщувати об’єкти у сцені, створювати бої з водяними гарматами, головоломки з водою, гонки на водних судах, водний серфінг. Словом, обмежити тебе може лише власна фантазія.

Хочеш деталей? Ось і вони:

Force Interaction — силова взаємодія, що дозволяє використовувати рідину як функцію геймплею. Force Interaction дає змогу створювати реалістичні симуляції рідин, що впливають на об’єкти в сцені. Щоб ця функція працювала, об’єкт повинен мати компонент rigid body.

Voxel Collider — компонент, завдяки якому рідина може взаємодіяти з об’єктами складної форми. Налаштовується теж у декілька кліків.

Fluid Emitter — точка входу рідини в сцену. Zibra Liquids не обмежує їхню кількість.

Fluid void — точка виходу рідини зі сцени. Їх додати можна також скільки завгодно.

Zibra Liquids можна запустити навіть з айфона 6S. Симуляція працює зі швидкістю 60 кадрів на секунду. iOS-версію плагіну вже зараз можна спробувати на бета-тестуванні, релізна версія очікується найближчим часом.

У нових версіях буде також додано поверхневий натяг, тертя, детектори, портали.

Щодо бейкінгу. Головною фішкою плагіну є саме симуляції у реальному часі. Але ми прислухаємось до побажань наших користувачів, тож у найближчих оновленнях додамо функцію запікання. Сам же плагін працює на GPU, знявши навантаження з процесора. І не має значення, використовуєш ти AMD, NVIDIA чи Intel.


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

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

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

👍ПодобаєтьсяСподобалось8
До обраногоВ обраному6
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

Під Unreal Engine не плануєте плагін випускати?

Найближчим часом буде бета версія. Після бети реліз.

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