Створення карт кривизни (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%.
Що входить у роботу
- Аудит меша: перевірка UV, Baker Groups, Smooth Groups, нормалей.
- Налаштування параметрів запікання залежно від рушія (Unity, Unreal, custom).
- Запікання Curvature та Thickness у 16-bit з кастомним Color Ramp.
- Перевірка на тестовому матеріалі: Curvature подається безпосередньо як Albedo — це виявляє артефакти до накладання шарів.
- Передача вихідників: .tga/.png/.exr, сцени запікання (.tbscene, .spp, .blend).
- Навчання команди: як правильно включати карти в пайплайн матеріалів.
Якщо ви хочете гарантовано отримати чисті карти без артефактів, замовте аудит меша — це зекономить години переробок.
Процес роботи над картами
На практиці запікання 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.
3D-моделювання для ігор
Уявіть: художник здає персонажа з 120 000 полігонів, мотивуючи це тим, що «так виглядає краще». На мобільному пристрої сцена з десяти таких персонажів впустить FPS до неіграбельних значень. Ми в студії GameArt щодня вирішуємо такі проблеми: наші моделі проходять суворий полігональний контроль та оптимізацію під цільову платформу. Понад 7 років ми випустили понад 50 ігрових проєктів — від мобільних гіперказуалок до PC-екшенів. Гарантуємо, що кожна модель впишеться в технічні вимоги без втрати візуальної якості. Замовте безкоштовний аудит вашого 3D-асета — оцінимо полігонаж і тексельну щільність за одну годину.
3D-моделювання для ігор — це не просто «зробити гарно». Це розстановка пріоритетів в обмеженому бюджеті трикутників і draw calls. Кожен етап пайплайну впливає на продуктивність у рантаймі. Пропуск ретопології або криві UV обертаються переробками на етапі інтеграції — ми це виключаємо на старті.
У цій статті розберемо ключові аспекти: від high-poly скульпту до фінальної збірки в Unity або Unreal Engine, з акцентом на практичні кейси. Ми проєктуємо моделі під конкретну платформу: для мобільних використовуємо низьку тексельну щільність (512 px/м), для PC — до 2048 px/м. Всі рішення приймаються на основі бенчмарків рушія та профілювання на реальному залізі.
Як оптимізувати 3D-моделі для різних платформ?
Цей аспект найчастіше ігнорується на старті проєкту — і саме він потім коштує переробок.
Стандартний пайплайн виглядає так:
- Концепт / референси — перш ніж відкривати ZBrush, потрібно розуміти силует, читаність та цільову платформу.
- High-poly sculpt — детальна скульптурна модель без обмежень по полігонах. Робиться в ZBrush або Blender (Sculpt Mode).
- Low-poly retopology — чиста ігрова сітка поверх high-poly, вручну або напівавтоматично.
- UV-розгортка — підготовка координат для текстур.
- Baking — перенесення деталізації з high-poly на карти (normal map, AO, curvature тощо).
- Передача в рушій — імпорт в Unity або Unreal з налаштуванням LOD-ланцюжка.
Кожен етап впливає на наступний. Погана ретопологія зламає скіннінг. Криво нарізані UV дадуть артефакти при запіканні. Етапи не можна міняти місцями.
Мобільні платформи (iOS / Android)
Мобайл — найжорсткіше середовище. Орієнтири для персонажів:
| Тип персонажа |
Полігони (тріангульовані) |
| Головний герой (великий план) |
3 000 – 8 000 |
| NPC другого плану |
1 000 – 3 000 |
| Масовка, вороги вдалині |
300 – 800 |
Для оточення (один пропс):
| Об'єкт |
Полігони |
| Великий інтерактивний (скриня, двері) |
500 – 1 500 |
| Середній декоративний |
100 – 400 |
| Дрібний (камінь, гілка) |
20 – 80 |
Критичніше самого полігонажу — кількість draw calls і батчинг. Модель на 200 трикутників з окремим матеріалом може бути дорожчою за модель на 2 000 трикутників, яка батчиться з усією сценою. Правильний батчинг (SRP Batcher, GPU instancing) знижує draw calls до 40% — це дає запас для більш деталізованих асетів.
PC / Console
Тут бюджети м'якші, але не безмежні:
- Головний персонаж у шутері від першої особи: 15 000 – 60 000 полігонів (модель противника, яку гравець бачить постійно).
- Персонаж у RPG від третьої особи: 8 000 – 25 000.
- Транспортний засіб у гонці: 30 000 – 80 000 (багато дрібних деталей, LOD обов'язковий).
Ключовий інструмент — LOD (Level of Detail). В Unity це LOD Group, в Unreal — автоматичний HLOD + ручні LOD-рівні в Static Mesh Editor. Правило: LOD0 → LOD1 має втрачати ~50-60% полігонів, LOD1 → LOD2 ще ~50%. Додатково налаштовуємо occlusion culling і кластерний рендеринг, щоб знизити навантаження на GPU.
VR
VR — окрема історія. Рендер іде для двох очей, цільовий фреймрейт 90 fps (Quest) або 120 fps (PSVR2). Будь-який фризен відчувається фізично — у гравця паморочиться голова.
Бюджет персонажа у VR: 4 000 – 12 000 (залежить від кількості NPC у сцені одночасно). Оточення агресивно оптимізується: портальна система, occluder culling, кластерний рендеринг — без цього сцена не потягне потрібний fps. Ми використовуємо Frame Debugger і Render Doc для профілювання на цільовому пристрої на ранніх етапах.
Чому ретопологія — художнє завдання?
Ретопологія — створення чистої полігональної сітки поверх sculpt-моделі. Багато хто сприймає її як нудний технічний етап, який можна прискорити авторетопологією (ZRemesher, Instant Meshes, функція Auto Retopology в Maya). Це помилка. Ручна ретопологія в 3 рази точніша за автоматичну на суглобах та обличчі.
Авторетопологія дає поганий результат у трьох ключових зонах:
- Суглоби — коліна, лікті, зап'ястя. Там потрібні рівні кільця еджлупів, перпендикулярні осі обертання. Авторетопологія ламає їх хаотичними діагоналями, і при анімації суглоб схлопується негарно.
- Обличчя — навколо рота та очей потрібні concentric loops, які слідують м'язовій структурі. Це обов'язкова умова для коректної мімічної анімації через blend shapes / morph targets.
- Силуетні ребра — плечі, груди, великі форми. Тут потрібно свідомо розподілити полігони так, щоб силует читався навіть на LOD2.
Інструментарій для ручної ретопології включає Maya (Quad Draw), Blender (BSurfaces + Shrinkwrap), 3ds Max (Graphite Modeling Tools) і ZBrush (ZRemesher з guide curves). Щільність сітки розподіляється нерівномірно: обличчя та кисті — більше полігонів, спина та низ ніг — менше. Це не свавілля, а наслідок того, де камера проводить більше часу.
Як UV-розгортка впливає на якість текстур?
UV — ще один етап, який часто недооцінюють. Тексельна щільність (texel density) повинна бути однаковою по всьому персонажу. Якщо у чобота щільність вдвічі вища, ніж у обличчя — текстура виглядатиме непослідовно. В Maya для цього є UV Toolkit з нормалізацією, в Blender — аддон TexTools.
UDIM (U-Dimension) — технологія, при якій кілька UV-тайлів об'єднуються в один об'єкт. Це дозволяє використовувати текстури 4K–8K без обмежень одного UV-простору. Застосовується для персонажів з високими вимогами до деталізації — cinematic-ігри, hero assets. В pipeline це означає Substance Painter з UDIM-режимом і окремий експорт кожного тайла.
Запікання (baking) — перенесення деталей високополігональної моделі на карти для low-poly. Інструменти:
- Marmoset Toolbag — галузевий стандарт, cage-based baking з тонким налаштуванням. Зручна візуалізація помилок. Marmoset забезпечує в 2 рази швидше запікання ніж xNormal при однаковій якості.
- xNormal — безкоштовний, перевірений часом. Менш зручний інтерфейс, але стабільний результат і батч-запікання.
- Substance Painter — вбудований baker для швидкого результату всередині текстурування, менш гнучкий, ніж Marmoset.
- Blender — Cycles baker. Повільніший і потребує налаштування, але безкоштовний.
Типовий набір запіканих карт: Normal Map, Ambient Occlusion, Curvature, Thickness, Position, World Space Normal. Curvature і Thickness — генераторні маски в Substance Painter, що автоматично виділяють опуклості та ввігнутості для процедурного текстурування. Згідно з документацією Marmoset Toolbag, batch-baking на кількох об'єктах економить до 30% часу.
Що входить у 3D-моделювання для ігор?
| Етап |
Деталі |
Формат здачі |
| High-poly sculpt |
Створення деталізованої скульптури в ZBrush / Blender |
.zpr / .blend, скріншоти |
| Ручна ретопологія |
Чиста low-poly сітка з правильними еджлупами для анімації |
.fbx / .ma |
| UV-розгортка |
Нормалізована тексельна щільність, опціонально UDIM |
.fbx з UV-set |
| Запікання |
Normal, AO, Curvature, Thickness (Marmoset / xNormal) |
texture set (PNG/TGA) |
| LOD-ланцюжок |
LOD0–LOD3 з порогами по полігонах і відстані |
.fbx для кожного LOD |
| Інтеграція |
Імпорт в Unity / Unreal, перевірка матеріалів і батчингу |
.unitypackage / .uasset |
| Документація |
Іменування асетів, ієрархія, вимоги до трикутників |
PDF / Notion |
Додатково надаємо годинну сесію підтримки після здачі — допомагаємо з налаштуванням LoD Group, колізіями та анімацією. Вихідні файли (.zpr, .blend, .ma, .fbx) передаються в повному обсязі.
Типові помилки при UV-розгортці, які ми запобігаємо:
- Різні тексельні щільності на сусідніх частинах моделі — текстура виглядає неконсистентно.
- Перекривні UV (overlap) — артефакти запікання.
- Недостатній padding між островами — розмиття текстур при міп-маппінгу.
- Відсутність UDIM для складних персонажів — втрата деталізації.
Для отримання комерційної пропозиції зв'яжіться з нами — ми оцінимо строки та підготуємо рішення під ваші вимоги: від мобільних гіперказуалок до PC-екшенів і VR. Отримайте безкоштовний аудит вашого асета просто зараз.