Запекание (baking) и PBR-текстурирование: материалы и карты
Как эта тема связана с предыдущими шагами пайплайна
Ранее в курсе мы собрали базовый пайплайн ассета, разобрали форму и топологию, затем связку high-poly → low-poly, ретопологию и UV-развёртку. Теперь мы закрываем ключевой производственный мост между геометрией и финальным видом в движке: запекание карт (baking) и PBR-текстурирование.
Логика простая:
Low-poly отвечает за силуэт, шейдинг и производительность.
High-poly хранит всю мелкую форму, фаски и микродетали.
Baking переносит часть информации с high-poly на текстуры.
PBR превращает набор текстур в материал, который предсказуемо реагирует на свет в Unity или Unreal.!Схема связывает high/low, запекание, PBR-текстуры и итог в движке
Что такое запекание и что именно мы запекаем
Запекание (baking) это вычисление текстур по отношению между двумя моделями или между моделью и её UV.
Самые частые варианты:
Запекание с high-poly на low-poly для переноса формы.
Запекание внутренних карт low-poly (например, curvature по самой low-poly) для ускорения текстурирования.Базовые карты запекания
| Карта | Что хранит | Зачем используется |
|---|---|---|
| Normal (tangent space) | Направление микрорельефа поверхности | Имитирует фаски, гравировки и мелкую форму без геометрии |
| AO (Ambient Occlusion) | Самозатенение в углублениях | Маска для грязи, пыли, усиления глубины |
| Curvature | Выпуклости и впадины по форме | Быстрое создание потёртостей по рёбрам и акцентов |
| World Space Normal | Нормали в мировом пространстве | Вспомогательная карта для масок и процедурных эффектов |
| Position | Позиция пикселя (обычно в 3 каналах) | Маски по высоте, градиенты, эффекты загрязнения |
| Thickness | Приблизительная толщина | Маски для воска, тонких материалов, некоторых стилизаций |
| ID map | Цветовые зоны материалов | Быстрое выделение частей модели по материалам |
В большинстве игровых пропсов стартового уровня достаточно уверенно делать Normal + AO + Curvature, а остальное подключать по задаче.
Основа качества: тангентное пространство и MikkTSpace
В играх normal map чаще всего работает в tangent space. Это означает, что normal-карта интерпретируется через локальный базис поверхности: tangent, bitangent, normal.
Практическая проблема: если бейкер и движок считают этот базис по-разному, швы и артефакты могут появиться даже при хорошей UV.
Самый распространённый стандарт вычисления тангентов в пайплайнах для игр это MikkTSpace.
Описание и реализация стандарта: MikkTSpace (GitHub)
Практический ориентир: старайтесь, чтобы и бейкер, и движок, и DCC были согласованы по тангентам.Подготовка low-poly к запеканию
Качество запекания почти всегда упирается не в настройки, а в дисциплину подготовки low-poly, которую мы обсуждали в теме про UV.
Минимальный чек-лист перед бейком
Силуэт и форма: low-poly совпадает с high-poly в ключевых плоскостях и по контуру.
Шейдинг: нормали корректны, нет случайных переломов блика.
Жёсткие грани и UV: где есть жёсткая грань, там обычно есть UV-разрез.
Триангуляция: low-poly триангулирован предсказуемо и не будет меняться после финального бейка.
UV-паддинг: между островами достаточно отступа, чтобы не было протекания при мипмаппинге.Официальная справка по нормалям в Blender: Blender Manual: Normals
Cage, расстояние проекции и типовые режимы бейка
Что такое cage
При запекании лучи обычно идут от low-poly к high-poly. Cage это специальная оболочка, которая задаёт направление и дистанцию проекции.
Слишком маленькая дистанция даёт пропуски деталей.
Слишком большая дистанция ловит соседние элементы и даёт грязь.Взрывной бейк
Если объект состоит из плотной сборки, детали могут мешать друг другу при проекции. Тогда применяют приём exploded bake:
Временно раздвинуть части меша так, чтобы они не перекрывали друг друга.
Запечь карты.
Вернуть части на место.Этот приём особенно полезен для hard-surface (оружие, техника, гаджеты).
Сопоставление по именам
Многие бейкеры поддерживают соответствие high/low по именам, чтобы лучи не перескакивали на соседние детали. Это снижает количество артефактов в сложных ассетах.
Практический порядок запекания
Ниже порядок, который работает в большинстве связок инструментов и хорошо согласуется с нашим пайплайном.
Финализировать low-poly: шейдинг, сглаживание, жёсткие грани, UV, паддинг, триангуляция.
Подготовить high-poly: фаски, floaters, чистая форма, отсутствие случайных пересечений.
Настроить бейк: выбор карт, разрешение, антиалиасинг, cage или расстояние.
Сделать тестовый бейк на небольшом разрешении и проверить проблемные места.
Сделать финальный бейк в целевом размере.
Проверить карты в рендере: минимум в том же тангентном стандарте, что и движок.Официальная справка Blender по запеканию: Blender Manual: Render Baking
PBR-текстурирование: что такое материал и какие карты нужны
PBR (Physically Based Rendering) это подход, где материал описывается параметрами, которые предсказуемо реагируют на освещение.
Самый распространённый набор карт в играх:
Base Color: цвет без теней и бликов.
Metallic: где поверхность металл.
Roughness: насколько размытые отражения.
Normal: микрорельеф.Иногда встречаются:
Emissive: самосвечение.
Opacity или Alpha: прозрачность.
Height: высота для параллакса или специфических шейдеров.Metallic-Roughness и Specular-Glossiness
Есть две основные схемы описания материалов:
Metallic-Roughness: чаще в современных пайплайнах и движках.
Specular-Glossiness: встречается в старых пайплайнах и некоторых стилях.Для курса и большинства игровых задач ориентируйтесь на Metallic-Roughness, потому что она проще и распространённее.
Как читать PBR-карты и не путать физику материала
Base Color
Правило: не рисуйте в Base Color запечённые тени и яркие блики. Тени и блики появляются от света, а не от цвета.
Исключение: стилизованные проекты могут сознательно нарушать это, но тогда это художественное решение, а не PBR-дисциплина.
Metallic
Обычно это почти бинарная карта:
диэлектрики (дерево, пластик, камень) близко к 0
металлы близко к 1Переходные значения используют для грязи, окислов, окрашенных металлов, но не как способ сделать материал просто “посильнее блестящим”.
Roughness
Roughness отвечает за ширину и размытость отражений:
низкая roughness даёт чёткие отражения
высокая roughness даёт матовую поверхностьВажно: roughness это не “грязь”, а свойство микрорельефа. Грязь часто меняет roughness, но это следствие, а не причина.
Normal
Normal-карта добавляет детали, но не меняет силуэт. Если у объекта плохой контур, normal это не исправит.
Официальные заметки Unity по normal map и импорту: Unity Manual: Normal maps
Линейное и sRGB: почему текстуры могут выглядеть неправильно
В движках разные карты должны интерпретироваться по-разному:
Base Color обычно хранится в sRGB (перцептивное пространство).
Roughness, Metallic, AO, Normal обычно должны быть в linear (без sRGB-коррекции).Если поставить неправильный режим импорта, roughness или metallic будут “не теми числами”, и материал начнёт выглядеть неадекватно.
В Unity это задаётся в настройках импорта текстуры. В Unreal многие карты по умолчанию считаются линейными, но Base Color обычно в sRGB.
Упаковка каналов и оптимизация текстур
Чтобы экономить память и ускорять рендер, часто делают channel packing, когда разные чёрно-белые карты кладут в разные каналы одной текстуры.
Типичный пример (варианты зависят от проекта):
R = AO
G = Roughness
B = MetallicЭто уменьшает число текстурных выборок и упрощает материалы, но требует дисциплины именования и документирования пайплайна.
Текстурирование поверх запечённых карт
Запечённые карты обычно становятся “интеллектуальными масками” для процедурного текстурирования.
Практический подход к PBR-текстурированию пропса:
Задать базовые материалы по зонам: металл, пластик, резина, краска.
Использовать Curvature для износа по рёбрам.
Использовать AO и Position для пыли и грязи в углублениях и снизу.
Добавить микровариации roughness, чтобы поверхность не была “пластиковой”.
Проверять материал в освещении, близком к игровому: HDRI, контрастный свет.Документация по PBR-материалам в Unreal: Unreal Engine Documentation: Physically Based Materials
Проверка качества: как понять, что результат готов для движка
Тест в нейтральном освещении
Чтобы не обманываться красивой сценой, проверяйте ассет:
в нейтральном HDRI
с простым направленным светом
на разных углах обзораТиповые красные флаги
| Симптом | Частая причина | Что сделать |
|---|---|---|
| Шов на normal | разные тангенты или неверные UV-разрезы | проверить MikkTSpace, согласовать hard edges и seams |
| Грязные пятна на AO | пересечения, неверный cage | разнести детали, настроить cage, запекать по частям |
| Рябь на плоскости | плохой шейдинг low-poly или нестабильная триангуляция | исправить нормали, зафиксировать триангуляцию |
| Материал “пластиковый” | roughness слишком ровный | добавить вариации roughness и микродетали |
| Металл выглядит как пластик | metallic не соответствует материалу | metallic близко к 0 или 1 по зонам, корректные маски |
Рекомендованные форматы и практические настройки
Эти ориентиры зависят от движка и платформы, но как стартовые практики подходят часто:
Normal map: без sRGB, корректный тип normal в движке.
Roughness, Metallic, AO: без sRGB, можно паковать по каналам.
Разрешение: выбирать по важности ассета и расстоянию (геро-объекты получают больше).
Паддинг при бейке: достаточно, чтобы на мип-уровнях не было протекания.Для финального решения всегда сверяйтесь с ограничениями проекта: бюджет текстур, целевая платформа, требования команды.
Итоги
Запекание и PBR-текстурирование превращают ваш low-poly меш в полноценный игровой ассет.
Baking переносит форму и вспомогательные маски с high-poly на low-poly через UV.
Качество бейка зависит от подготовки: шейдинг, UV-разрезы, триангуляция, cage и согласованность тангентов.
PBR требует дисциплины карт: Base Color без “нарисованного света”, корректные metallic и roughness, правильный режим sRGB или linear.
Оптимизация на уровне текстур часто делается через channel packing и разумные разрешения.Следующий логичный шаг пайплайна после этого блока это сборка ассета в движке: импорт, настройка материалов, проверка под освещением сцены, а также подготовка LOD и коллизии по требованиям проекта.