Створення карт кривизни (Curvature) і товщини (Thickness)

Створення карт кривизни (Curvature) і товщини (Thickness) Ми не раз стикалися з ситуацією, коли Curvature і Thickness виявляються «сміттям» — шум на плоских гранях, артефакти на округленнях, невірний bias у зонах контакту. Адже саме ці карти відповідають за той живий матеріал, який відрізняє AAA-

Наші компетенції

Інші послуги студії

VR/AR/MR застосунки на замовлення

Вражайте клієнтів і навчайте команду у віртуальній реальності

Розробка ігор на Unity

Від ідеї до релізу — ігри, які запам'ятовуються

3D-моделювання та анімація

Оживимо ваш продукт в об'ємній графіці та анімації

VR-тренажери промислового обладнання

Тренуємо операторів на техніці без ризику і простою

AR-інструкції для виробництва

Покрокові підказки прямо на обладнанні — без паперу

Safety-тренажери

Відпрацювання НС і техніки безпеки без виходу на об'єкт

VR/AR-тренінги

Навчаємо персонал сервісу, адаптації та soft skills у VR

Навчальні вікторини

Перевірка знань у форматі гри — легко і без стресу

Корпоративні відеоінструкції

Зрозумілі ролики для навчання співробітників і клієнтів

Гейміфікація бізнес-процесів

Мотивуємо команду через ігрові механіки в KPI та HR

Застосунки для інфокіосків

Інтерактивні екрани для магазинів, стендів і офісів

VR/AR-інсталяції

Wow-ефект для брендів на виставках, івентах і в шоу-румах

Віртуальні виставки та музеї

Ваша експозиція доступна з будь-якої точки світу — 24/7

Event-квести та брендовані ігри

Незабутні ігри для конференцій та клієнтських івентів

Часті запитання

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

  • image_games_mortal_motors_495_0.webp
    Розробка гри для компанії Mortal Motors
    1526
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    1030
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    657
  • image_games_phoenix_ii_606_0.webp
    3D-анімація – тизер для гри phoenix 2.
    738
  • image_training-quizzes_kids_shopping_quiz_614_0.webp
    Навчальна вікторина для дітей «Покупки в магазині»
    142

Створення карт кривизни (Curvature) і товщини (Thickness)

Ми не раз стикалися з ситуацією, коли Curvature і Thickness виявляються «сміттям» — шум на плоских гранях, артефакти на округленнях, невірний bias у зонах контакту. Адже саме ці карти відповідають за той живий матеріал, який відрізняє AAA-арт від технічно грамотного, але плоского асета. Проблема не в інструменті — Baker у Marmoset Toolbag або Substance Painter справляється за секунди. Проблема в налаштуваннях і підготовці геометрії. Оптимізація цього етапу може скоротити бюджет на текстури до 30%.

Чому Curvature Map виходить з артефактами?

Найчастіша ситуація: художник запікає Curvature у Marmoset Toolbag 4 з налаштуваннями за замовчуванням і отримує карту, де всі гострі кути виглядають правильно, але на плоских гранях — білий шум. Причина — параметр Ray Distance виставлений занадто високо: промені зачіпають сусідні острови UV і дають хибні опуклості.

Виправляємо зниженням Ray Distance до значень, при яких промінь ледь досягає high-poly. Для персонажного меша з розбивкою на Baker Groups — окремий cage для кожної групи. У Substance Painter та ж проблема вирішується через bake per material з явно заданим Max Frontal Distance. У 95% випадків це прибирає шум без перезапікання.

Друге джерело болю — seam bleeding. Якщо UV-розгортка зроблена без відступу 2–4 пікселі по краях кожного острова, кривизна з сусідніх островів затікає в шов. На 2K-текстурі для мобільного асета це помітно одразу; на 4K для PC — при певному куті камери. Перевіряємо розгортку перед запіканням — це економить години переробок.

Що таке Thickness Map і навіщо вона потрібна?

Thickness Map запікається через AO з інвертованими нормалями: промені йдуть всередину меша і фіксують відстань до протилежної стінки. Для тонких деталей — вух персонажа, пелюсток, країв накидки — ця карта дає Subsurface Scattering коректний ввід. Без неї SSS працює рівномірно, і тканина виглядає як пластик. У наших проектах ми використовуємо 16-bit Thickness, щоб уникнути banding на плавних переходах.

Інструменти та підхід до запікання

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

Інструмент Коли використовувати Ключові налаштування
Marmoset Toolbag 4 Повний контроль над cage та Baker Groups Curvature Intensity, Curvature Bias, Smooth Angle (90° для hard-surface, 160–180° для органіки)
Substance Painter 9 Швидке запікання всередині робочого шару bake per material, Max Frontal Distance, Padding 4px
Blender + BakeMaster Інді-проекти, відсутність ліцензій Geometry Node → Pointiness → Color Ramp; Thickness через AO з Local Space

Marmoset — кращий варіант, коли потрібен точний контроль. Substance Painter генерує Curvature з нормальної карти, що швидше, але менш точно на low-poly з гострими кутами без згладжування. Blender — бюджетний вхід, але потребує кастомного нодграфа в Cycles.

Незалежно від інструменту, перед запіканням меш повинен пройти кілька перевірок:

  • Нормалі high-poly усереднені коректно — без перевернутих фейсів.
  • Smooth Groups на low-poly збігаються з UV-швами.
  • Cage не перетинає сам себе в зонах увігнутостей.
  • UV-острови мають однаковий texel density по всьому асету.
Чек-лист перевірки перед запіканням - [ ] Перевірити нормалі high-poly на inverted faces - [ ] Сумістити Smooth Groups з UV seams - [ ] Налаштувати Cage з відступом 0.1–0.5% від розміру меша - [ ] Встановити Padding 2–4 пікселі на UV-островах - [ ] Переконатися, що немає геометрій, що перетинаються, в межах однієї Baker Group

Як Curvature використовується в матеріалі

Запечена Curvature Map у чистому вигляді — проміжний результат. У Substance Painter вона подається в Generator Metal Edge Wear як маска для edge highlighting. У ShaderGraph Unity її використовують як вхід для lerp між двома матеріалами: на опуклостях метал стертий до блиску, у заглибинах — накопичився бруд.

Правильний workflow: Curvature → Color Ramp (налаштувати конкретні діапазони) → маска на шар. Без Color Ramp карта дає занадто широку маску, і ефект виглядає розмито. Для Thickness — підключення до параметра Thickness у Lit Shader з увімкненим Subsurface Scattering. В URP/HDRP це Subsurface Mask Map у каналі A. У кастомному шейдері — окрема текстура, що семплюється у фрагментному шейдері для розрахунку глибини розсіювання.

Типові помилки, які дорого обходяться

  • Запікання без Baker Groups. Якщо у персонажа рука перекриває торс при позі A-Pose, Marmoset запече кривизну торса з урахуванням тіні від руки. Розділення на групи вирішує це — кожна частина тіла запікається ізольовано. Економія на цьому етапі призводить до артефактів, які виправляються заново за годину-дві.
  • Curvature з неправильним Smooth Angle. Значення 90° підходить для hard-surface. Для органіки — 160–180°, інакше всі м'язові переходи виглядають як графіті з білих плям.
  • Thickness на відкритій геометрії. Якщо меш не замкнений (відкритий циліндр, наприклад), промені йдуть у нескінченність і повертають 0. Потрібно або закрити геометрію тимчасовими заглушками, або обмежити Ray Distance до передбачуваної максимальної товщини об'єкта.
  • Використання 8-bit для Curvature. Карта кривизни — градієнтні дані. На 8-bit з'являється banding на плавних переходах. Для фінального матеріалу Curvature зберігають у 16-bit, конвертуючи в 8-bit лише при необхідності економії пам'яті на мобільних платформах. Вартість помилки — переробка всіх шарів, що може збільшити бюджет на 20%.

Що входить у роботу

  1. Аудит меша: перевірка UV, Baker Groups, Smooth Groups, нормалей.
  2. Налаштування параметрів запікання залежно від рушія (Unity, Unreal, custom).
  3. Запікання Curvature та Thickness у 16-bit з кастомним Color Ramp.
  4. Перевірка на тестовому матеріалі: Curvature подається безпосередньо як Albedo — це виявляє артефакти до накладання шарів.
  5. Передача вихідників: .tga/.png/.exr, сцени запікання (.tbscene, .spp, .blend).
  6. Навчання команди: як правильно включати карти в пайплайн матеріалів.

Якщо ви хочете гарантовано отримати чисті карти без артефактів, замовте аудит меша — це зекономить години переробок.

Процес роботи над картами

На практиці запікання Curvature і Thickness займає невелику частину від загального часу, але помилка тут тягне за собою переробку кількох шарів матеріалу. Тому починаємо з аудиту меша: перевіряємо UV-острови, Baker Groups, правильність Smooth Groups. Наша команда має досвід понад 5 років у галузі запікання текстур і реалізувала 150+ проектів для ігрової індустрії — від мобільних до AAA.

Масштаб завдання Орієнтовний термін
Один hero-асет, до 5 UV-сетів від 4 до 8 годин
Персонаж з повним набором LOD від 1 до 2 днів
Оточення (пропси + модульні тайли) від 3 до 7 днів
Запікання для існуючого пайплайну (інтеграція в команду) за погодженням

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

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

Marmoset Toolbag Documentation рекомендує для Curvature використовувати значення Smooth Angle 90° для hard-surface, але ми на практиці часто піднімаємо до 120° для кращого контролю гострих кутів. Докладніше про фізику Subsurface Scattering можна прочитати в Wikipedia.