Открыть сервис

Запекание карт нормалей

Запекание карт нормалей — это процесс переноса информации о рельефе поверхности с высокополигональной (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) и включает следующие этапы:

  1. Подготовка моделей: создание или импорт высокополигональной модели (источник детализации) и низкополигональной модели (цель). Low-poly модель должна максимально точно повторять силуэт high-poly, но иметь меньшее число полигонов.
  2. Развёртка UV: низкополигональная модель должна иметь корректную UV-развёртку с достаточным разрешением и без наложений (оверлапов) островов.
  3. Выравнивание моделей: high-poly и low-poly модели совмещаются в пространстве. Для сложных ассетов применяется cage (оболочка) — увеличенная копия low-poly модели, ограничивающая область проекции лучей.
  4. Настройка параметров: задаются разрешение текстуры (например, 2048×2048), зазор (padding) между UV-островами, максимальное расстояние проекции, сглаживание (антиалиасинг).
  5. Генерация карты: программа проецирует лучи от 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 →