6 прикладів використання Houdini для Unreal Engine

Вітаю! Мене звати В’ячеслав Тітенко, я лід відділу TechArt і VFX у геймдев-компанії Kevuru Games. Ми у команді часто використовуємо засоби, які допомагають нам реалізовувати проєкти максимальної складності. Наприклад, поєднання UE (Unreal Engine) з програмним пакетом для роботи з тривимірною графікою Houdini дозволяє суттєво спростити розробку ігор.

У цій статті разом з Houdini Artist Павлом Філевським ми проаналізуємо декілька практичних кейсів застосування UE з Houdini. Приклади, які ми наведемо, доречні і в Unity, а також у поєднанні з іншими процедурними застосунками на кшталт Blender.

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

Ретопологія — створення спрощеної моделі об’єкта

Одне з найпростіших застосувань UE та Houdini — це ретопологія, тобто перетворення 3D-моделей з великою кількістю полігонів на те, що можна використовувати в анімації. За необхідністю можна також робити LOD (Levels Of Detail) — кілька варіантів одного об’єкта з різними ступенями деталізації, що перемикаються залежно від відстані об’єкта до віртуальної камери.

Розглянемо приклад. Для одного з проєктів наші спеціалісти зробили кастомні інструменти для плюща та інших рослинних насаджень. Якщо брати кожен елемент плюща окремо, то він має розумну кількість полігонів. Проте загалом їх виходить занадто багато — для відділу моделлерів завдання буде необґрунтовано великим. У таких випадках ми завжди намагаємося спростити роботу для наших колег й оптимізувати 3D-модель.

Сам UE робить ретопологію не так, як би хотілося. Тому нам потрібно було зібрати інструменти, які б швидко і з мінімальними маніпуляціями зменшували кількість полігонів — причому, тільки тих об’єктів, які будуть чітко обумовлені з боку візуалу і полігонажу.

Топологiя до спрощення

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

Аналiз топологiї

Наступний крок — зменшити кількість полігонів на стеблах, які мають однакові імена та матеріал. Зазвичай, коли матеріали різні, вони легко розділяються за атрибутом полігонів, але в нашому випадку це не працює. Втім, ми маємо різницю в розташуванні вертексів на UV розгортці. І цього достатньо, щоб розрахувати їх координати та відокремити за U позицією.

Роздiлення топологiї за UV атрибутами

Маленькі стебла можна виокремити окремо — за параметром масштабу.

Роздiлення топологiї за масштабом

Застосовуємо Polyreduce для кожної частини зі своїми налаштуваннями, збираємо все разом, вичищаємо зайві атрибути — завдання виконане. У такий спосіб полігонаж цього плюща зменшився з 560 тис. до 110 тис. полігонів.

Видалення полігонів

Результат ретопологiї

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

3-й LOD на вiдстані

Руйнування складних об’єктів

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

Для комплексних симуляцій руйнувань UE робить нововведення у фізиці, але все працює не так просто, як би хотілося. Водночас для реалістичної анімації можна використовувати в Houdini записану поведінку частин об’єкта, який руйнується. Цей інструмент часто буває нам у пригоді, коли потрібно змоделювати руйнування складних об’єктів.

Фортеця в проєктi
Сетап в Houdini доволі складний. Ми розберемо основні етапи, а детальніші приклади можна знайти в офіційних джерелах.

Спочатку потрібно визначити складові частини і задати їм правильний характер зламу. Наприклад, щоб дерево руйнувалося за структурою колоди, а кам’яні частини мали пряміші злами. Також слід враховувати, що на окремих частинах з’явилися бічні грані, яким потрібно зробити UV розгортку і призначити нові матеріали.

Сегментацiя фортецi

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

Перший етап руйнування

Другий етап руйнування

Останній крок — експортувати все в UE. Для цього треба записати інформацію анімації про кожний шматок (їх тут майже 3 тис.) в FBX-файл. Це виглядає подібно кістковій структурі, де кожен об’єкт — одна кістка. Для цього використовуємо спеціальну Labs ноду RBDtoFBX.

Експорт руйнування

Недолік експорту в цьому форматі — важка анімація. Адже якщо 3 тис. кісток помножити на 500 кадрів на всю анімацію, це займає великий обсяг пам’яті. Тому для експорту ми застосували інший спосіб — VAT (Vertex Animation Texture). Про нього і поговоримо у наступному кейсі.

Вертексна анімація за допомогою текстур

Наступний інструмент — VAT, який дозволяє записувати анімацію вертексів в текстури. Це порівняно новий метод, але наш досвід показує, що не варто боятися використовувати інноваційні технології, адже за ними майбутнє. Отже, за допомогою VAT передавати складні анімації можна не через запис інформації у файл, як це робить, наприклад, Alembic, а використовуючи растрові текстури, де RGB інформація заміщує XYZ координати. У такий спосіб нам вдається суттєво, а іноді кардинально, економити ресурси.

Подивимося, як це працює. У нашому кейсі ми мали завдання — імплементувати до проєкту анімовану медузу, яку купили зі стоків.

Проблема полягала в тому, що для плавних рухів великої кількості щупальців анімація була зроблена різними модифікаторами у таких застосунках, як-от 3D Max чи Maya. Тож зі стоку ми взяли важкий Alembic-файл.

Експорт анiмацiї медузи в VAT

За допомогою інструментів SideFX Labs для експорту анімації до VAT створюємо текстуру. На перший погляд, вона схожа на кашу з кольорових пікселів. Але в ній записана вся інформація, необхідна для анімації позицій точок і полігонів моделі. Так само там містяться дані для рушія, як-от UV координати чи кастомні атрибути, створені в Houdini.

VAT текстура

Для імпорту в UE5 також використовували набір інструментів від SideFX Labs. Його можна зручно додати до файлів проєкту прямо з тієї ноди, що відповідає за експорт текстур.

Налаштована медуза в UE-проєктi

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

Створення симуляцій візуальних ефектів

Наступне, про що варто згадати, — це створення різних симуляцій для VFX, як-от вогонь, вибухи, дим тощо, а також їхній рендер та збирання у Flipbook-текстури. За допомогою Houdini ми в команді робимо це максимально швидко, не поступаючись якістю візуальних ефектів.

Розглянемо принцип створення вогню. Для цього можна зібрати свій сетап або ж використати готові пресети з вкладки PyroFX. Обираємо будь-який об’єкт, наприклад, раніше створену сферу з шумом поверхні, і тиснемо на Bonfire. Далі адаптуємо нашу модель під необхідні параметри горіння.

Симуляцiя вогню в Houdini

Щоб зациклити початок горіння полум’я з кінцем, змістимо timeshift2 на 40 кадрів, а timeshift1 — на 40 + 64.

Створення циклу горiння

Потім виставляємо камеру і параметри рендера у квадрат на 64 кадри. Підлаштовуємо матеріал і рендеремо секвенцію.

Рендер вогню

Тепер залишилось зібрати всі рендери в Flipbook. Йдемо в контекст Composition, завантажуємо секвенцію і використовуємо ноду Mosaic з кількістю 64 кадри. Не забуваємо перемістити повзунок часу на один кадр.

Створення flipbook текстури горiння

Зміна заданих параметрів за допомогою Houdini Engine

Ще один корисний інструмент від розробників SideFX — плагін Houdini Engine. Він дозволяє отримати доступ до процедурного інструментарію Houdini всередині інших 3D-редакторів, а також ігрових рушіїв. Завдяки цьому наші художники значною мірою економлять час на роботу.

Принцип його роботи доволі простий. У Houdini за допомогою нодів створюється асет з будь-якими необхідними параметрами. Потім він імпортується в ігровий рушій за допомогою Houdini Engine. І безпосередньо в рушії можливо змінювати задані параметри.

На сайті розробника можно детально ознайомитися з цією технологією та подивитися приклади використання: www.sidefx.com/products/houdini-engine.

Робота з великими ландшафтами

Коли мова йде про різноманітні ландшафти, ми застосовуємо Terrain/Hieghfields інструментарій Houdini. Він надає всі переваги процедурного підходу для створення великих реалістичних просторів в 3D-пакеті.

Розробник може передати всю необхідну інформацію в ігровий рушій за допомогою карти висот і текстур з масками — для подальшого налаштування всередині рушія. Завдяки цьому ми в команді ефективно працюємо з ландшафтами великих відкритих світів.

Тут наведений приклад з детальним поясненням створення пустелi i як працює ця технологія: www.sidefx.com/...​orials/procedural-desert

Підсумок

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

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

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

О, приємно, що в нас є люди, які використовують Гудіні. Тоді трохи понаглію і прорекламую свій плагін для Гудіні. copsubstance.com
Якщо комусь такий плагін потрібен зв’яжіться зі мною через сайт (для українських розробників обов’язково надам знижку).

Отличные интрументы, пока не представляю как это можно применить в своей работе, но как появятся идеи, обязательно воспользуюсь.

Можно пораду: як починаючому гудінщіку розвиватись? Вивчаю вже 5 місяців, база є, не дуже складна симуляція і база в vex.Але Houdini така штука,що його можна десятиліття вчити і не все вивчиш.Хочется при компанії розвиватись, на реальних проектах.Але вакансій доволі мало(особливо зараз). Може є якісь думки , які кроки і в якому направленні робити?

На сегодняшний гудини наиболее востребован в видеоиндустрии и все больше в гейм девелопменте. Оба направления очень интересны, и стоит выбрать свой. Для видео стоит развивать VFXы, для гейм можно брать в проработку гудини енжин и клепать портфолио. Отличные уроки/примеры выкатили Side Fx в серии Titan.
Удачи в этом не легком, но очень перспективном пути.

О, дякую) А як часто в такі великі компанії ,як у вас, набирають новачків?Як раз шукаю варіант с геймдевом.Можливо є стажування або інтернатури?Або скажемо так: який нижній поріг щоб в вашу компанію на vfx artist влаштуватись?І наскільки потрібно ж зі старту знати двіжок(Unity,UE), чи є позиції які вимагають суто Houdini?

бля, нічого не понятно, але цікаво))

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

К сожалению левел дизайнеры пока не добрались до этих инструментов, но я уверен что однажды это станет необходимой нормой. Где мы применили — это heghtfield карты и запекание внеземных ланшафтных скайбоксов. Но снова таки — силами техартистов.

Хочу трохи виправити автора. Інструмент houdini engine це не ще один корисний інструмент, а саме основний інструмент при роботі unreal<->houdini. За допомогою цього інструменту можна перезбирати цілі карти за лічені хвилини. Більш того це той інструмент який дає можливість робити нові моделі на основі вхідних параметрів(типу кількість поверхів будівлі, кількість спиць в колесі і т.д). Я б сказав це те чому гудіні зараз топовий DCC

Забув додати. У нього є лише одне обмеження — нажаль це все не можливо в рантаймі. Тільки в редакторі.

Согласен, что это не просто еще один маленький инструмент, а целый пайплайн.
Но не стоит забывать, что даже не считая гудини енжин инструментарий для движка очень широк. Сейчас например работаю с волосами, опять же, гудини рулит)

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