Запекание карт нормалей¶
Запекание карт нормалей — это процесс переноса информации о рельефе поверхности с высокополигональной (high-poly) модели на низкополигональную (low-poly) модель посредством генерации текстурной карты нормалей (normal map). Результирующая карта кодирует отклонения нормалей (векторов, перпендикулярных поверхности) в цветовые значения RGB, что позволяет имитировать сложную геометрию (выбоины, швы, фаски, выпуклости) на упрощённой сетке без увеличения числа полигонов.
Технология широко применяется в игровой индустрии, кино, архитектурной визуализации и VR. Запекание карт нормалей является стандартным этапом пайплайна создания ассетов, позволяя значительно снизить требования к производительности рендеринга при сохранении визуальной детализации.
¶Принцип работы
Карта нормалей представляет собой растровое изображение, в котором каждый пиксель хранит вектор нормали в tangent space (пространстве касательных). Вектор нормали преобразуется в цвет: компоненты X, Y, Z линейно отображаются в каналы R, G, B соответственно. Значение 0,5 (128 в 8-битном канале) соответствует нулевому отклонению, значения выше или ниже — наклону поверхности в соответствующем направлении.
При рендеринге движок считывает карту нормалей и подменяет геометрические нормали низкополигональной модели нормалями из текстуры. Это создаёт иллюзию сложного рельефа при освещении: свет взаимодействует с поверхностью так, как если бы она была высокополигональной.
¶Процесс запекания
Запекание выполняется в 3D-редакторах (Blender, 3ds Max, Maya, Substance Painter, Marmoset Toolbag) и включает следующие этапы:
- Подготовка моделей: создание или импорт высокополигональной модели (источник детализации) и низкополигональной модели (цель). Low-poly модель должна максимально точно повторять силуэт high-poly, но иметь меньшее число полигонов.
- Развёртка UV: низкополигональная модель должна иметь корректную UV-развёртку с достаточным разрешением и без наложений (оверлапов) островов.
- Выравнивание моделей: high-poly и low-poly модели совмещаются в пространстве. Для сложных ассетов применяется cage (оболочка) — увеличенная копия low-poly модели, ограничивающая область проекции лучей.
- Настройка параметров: задаются разрешение текстуры (например, 2048×2048), зазор (padding) между UV-островами, максимальное расстояние проекции, сглаживание (антиалиасинг).
- Генерация карты: программа проецирует лучи от low-poly модели к high-poly, фиксируя разницу в нормалях, и записывает результат в текстуру.
¶Типы карт нормалей
Различают два основных типа карт нормалей в зависимости от пространства координат:
- Tangent space (объектное/тангентное пространство): векторы нормалей хранятся относительно касательной плоскости поверхности. Такой формат устойчив к деформациям модели (анимация, скелетная деформация) и является стандартом для игровых движков (Unity, Unreal Engine).
- Object space (мировое пространство): векторы нормалей хранятся в координатах объекта. Такой формат даёт лучшую точность для статичных объектов, но ломается при анимации и требует пересчёта при повороте модели.
Также существуют производные карты: карты высот (height maps), которые могут конвертироваться в карты нормалей, и карты касательных (tangent maps), используемые для коррекции артефактов.
¶Применение
- Игровая индустрия: запекание карт нормалей является обязательным этапом оптимизации игровых ассетов. Позволяет использовать модели с миллионами полигонов в играх реального времени, где бюджет полигонов ограничен (например, от 10 до 100 тысяч треугольников на персонажа).
- Кино и VFX: используется для создания детализированных персонажей и объектов при сохранении управляемости сцены.
- Архитектурная визуализация: позволяет имитировать фактуру кирпича, камня, дерева без геометрического усложнения.
- 3D-печать и CAD: применяется для проверки и оптимизации моделей перед печатью.
¶Проблемы и артефакты
При запекании могут возникать следующие артефакты:
- Швы (seams): видимые границы между UV-островами при недостаточном зазоре или неправильной настройке касательных.
- Растяжения: искажения карты при неоптимальной развёртке UV.
- Самопересечения: ошибки проекции при сложной геометрии low-poly модели, когда лучи попадают в неверные участки high-poly.
- Потеря деталей: при слишком большом расстоянии проекции или низком разрешении текстуры мелкие элементы рельефа могут быть утеряны.
Для устранения артефактов используются cage-оболочки, ручная настройка направления проекции (например, проекция по оси Z для плоских поверхностей), а также постобработка карты (сглаживание, коррекция размытия).
¶Сравнение с альтернативами
Запекание карт нормалей — не единственный способ передачи детализации. Альтернативы включают:
- Карты смещения (displacement maps): реально смещают геометрию при тесселяции, но требуют высокой производительности.
- Карты параллакса (parallax mapping): имитируют рельеф с учётом параллакса, но менее точны и требуют дополнительных вычислений.
- Ручное моделирование: создание фаски и деталей вручную, что увеличивает время работы и число полигонов.
Карты нормалей остаются оптимальным балансом между качеством, производительностью и простотой интеграции.
¶Программное обеспечение
Основные инструменты для запекания карт нормалей: Blender (бесплатный, встроенный модуль baking), Substance Painter (коммерческий, интегрирован с текстурированием), Marmoset Toolbag (специализированный инструмент для запекания), xNormal (бесплатная утилита), 3ds Max и Maya (встроенные функции Render to Texture). Большинство игровых движков поддерживают импорт карт нормалей в форматах TGA, PNG, EXR.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


