AI-системи процедурної генерації текстур і 3D-моделей

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

Чому процедурна генерація ламається на масштабі

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

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

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

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

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

Що змінюється після впровадження: швидкість, повторюваність, обсяг

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

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

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

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

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

Єдиний візуальний стиль тримається на одному джерелі правил.

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

Зовнішнє підтвердження практики — доповіді з процедурної генерації на SIGGRAPH: студії описують рівно ті самі ефекти — відтворюваність, швидкість ітерацій, зниження ручної праці.

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

Варіанти побудови конвеєра: порівняння підходів

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

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

Порівняння підходів

Варіант Коли підходить Обмеження
Повністю процедурний конвеєр Масові однотипні асети: тайли, декор оточення, дрібний реквізит. Потрібна відтворюваність — при одному початковому значенні набір збирається заново без змін Складні органічні та сюжетні форми виходять усередненими; параметри правил налаштовуються вручну і потребують калібрування за референсами
Гібридний режим Є базові форми та вимоги до якості: процедурна частина готує чернетку, художник доводить деталі й матеріали Пропускна здатність впирається в людей; без фіксації версій правки розходяться між ітераціями
Генерація за зразками Є набір еталонних моделей чи текстур, потрібно розширити бібліотеку в тому самому стилі й палітрі Якість обмежена навчальним набором: унікальні форми поза ним випадають, права на вихідники потрібно перевіряти до навчання

Як читаємо обмеження генерації

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

Етапи впровадження: від аудиту до передачі регламентів

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

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

  1. Аудит конвеєра. Розбираємо, як контент з'являється зараз: що збирається вручну, що перевикористовується між сценами, де втрачається час. На виході — карта вузьких місць і цільова частота випуску, під яку рахуємо решту етапів.

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

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

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

    Розбіжність тут означає, що правило описано неповно; заодно фіксуємо робочий набір і перевіряємо повернення до попереднього.

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

Що передаємо на руки: конфігурації, схеми, політики

Ми не залишаємо замовника з чорною скринькою: підсумок проєкту — комплект, за яким генерацію можна запускати, змінювати й супроводжувати силами своєї команди. Нижче — те, що переїжджає до вашого репозиторію та вікі разом із готовими сценами.

  • Конфігурації генерації — профілі з параметрами під кожен клас об'єктів: щільність деталізації, варіативність, обмеження за стилем. Зміна профілю змінює результат без правки коду.
  • Схеми конвеєра — послідовність етапів від вихідного майстра до фінальної текстури чи моделі, з позначками, де крок можна замінити.
  • Політики доступу — ролі, права на запуск, межі даних, які допустимо подавати в генерацію.
  • Словник параметрів — опис кожного значення: за що відповідає, як впливає на результат, які поєднання конфліктують.
  • Документація — інструкції із запуску, розбір типових помилок, приклади робочих конфігурацій під різні задачі.
  • Регламенти супроводу — що і як часто оновлюємо, як фіксуємо зміни та відкочуємося до попередньої версії.
  • Бібліотека матеріалів — базові текстури й моделі, від яких відштовхується генерація нових варіантів.

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

Кейс: бібліотека моделей із відтворюваною збіркою

Замовник — команда, яка випускає бібліотеку 3D-моделей і текстур для ігрових та рекламних сцен: кілька сотень об'єктів на партію, у кожного — варіанти матеріалів і рівнів деталізації.

Точка старту

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

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

Шви на стиках, загублені розгортки та вивернуті нормалі спливали на прийманні, і до третини об'єктів ішло на переробку.

Що змінили

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

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

Результат

Партія з кількох сотень об'єктів збирається одним прогоном замість шести днів ручної роботи, частка відтворюваних повторів зросла з приблизно 40% до 100% — еталонний набір збігається до останнього полігона.

Клас дефектів зі швами та нормалями закрито перевіркою до викладки: на переробку йдуть поодинокі об'єкти замість третини. Бібліотека стала розширюваною — новий варіант матеріалу додається правкою параметрів, а не копією об'єкта.

Чим відрізняється процедурна генерація від ручного моделювання

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

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

Різниця видна на чотирьох речах: керованість, повторюваність, швидкість правок і вимоги до вихідних даних.

Параметр Процедурна генерація Ручне моделювання
Керованість Правиться правило — узгоджено змінюється весь набір Кожен об'єкт правиться окремо, відхилення накопичуються
Повторюваність Один набір параметрів дає ідентичний результат Залежить від виконавця, повторюється приблизно
Швидкість правок Правка правила розходиться по сотні об'єктів за перерахунок Сто об'єктів — сто правок, трудовитрати зростають лінійно
Вихідні дані Опис правил і візуальні зразки Візуальні зразки й час художника
Контроль результату Параметри фіксовані, відхилення видно на контрольному прорахунку Ручний: вичитка й порівняння зі зразком

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

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

Технічні сумніви: що уточнюють перед стартом

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

Ваш випадок може бути не в списку — опишіть його, розберемо окремо.

Як забезпечити відтворюваність генерації?

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

Які вихідні дані потрібні?

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

Де в генерації залишається художник?

Художник задає правила: палітру, набори матеріалів, допустимі варіації візерунка. Модель видає варіанти всередині цих меж, фінальне доопрацювання роблять у звичному редакторі.

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

Що з уже працюючим конвеєром?

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

Обговоримо задачу: що потрібно для оцінки та плану

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

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

  • Що генеруємо і в якому обсязі. Категорії текстур і моделей, кількість варіантів, за якими параметрами вони мають різнитися між собою.
  • Референси та стильові рамки. Приклади «так треба» і «так не можна», набір матеріалів і відтінків, масштаб об'єктів у сцені.
  • Вимоги до приймання. Формати експорту, вимоги до розгортки й топології, допустима частка ручних правок у готовому об'єкті.
  • Куди вбудовується результат. Ручний відбір у редакторі, пакетне вивантаження на сцену або виклик генерації з вашого інструмента.
  • Де рахуємо. Робочі місця художників, виділений сервер або ваші обчислювальні ресурси — від цього залежить схема конвеєра.
  • Що вже напрацьовано. Поточні скрипти, бібліотеки матеріалів, вихідні набори, попередні спроби та причини, з яких вони не підійшли.
  • Критерії готовності. Яку частку об'єктів потрібно приймати без доопрацювання і за який час має проходити партія.

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

Напрямки AI-розробки

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1141