Этап 3 · UV · Baking · PBR

Текстурирование в Blender: UV-развёртка, запекание и PBR-материалы

Текстурирование в Blender — этап, на котором модель получает цвет, материал и мелкую детализацию. Пайплайн всегда один: развернуть сетку в UV, запечь карты с high-poly, собрать PBR-материал и при необходимости докрасить вручную. Разберём каждый шаг с настройками, разбором артефактов и чек-листом финальной проверки.

Андрей ШавловскийОбновлено: 11 мин чтения
PBR-материалы: фиолетовый металл, матовая керамика и прозрачное стекло
PBR-материалы: фиолетовый металл, матовая керамика и прозрачное стекло · Концептуальная иллюстрация

Что такое PBR и как движок читает материал

PBR (Physically Based Rendering) — стандарт, при котором материал описывается физическими свойствами, а не «картинкой с бликами». Движок по картам понимает: какого цвета поверхность без освещения, насколько она шероховатая, металл ли это и как искажена её геометрия. Из этих данных освещение считается в реальном времени — поэтому материал корректно ведёт себя в любом окружении, от пустыни до пещеры.

Практический вывод для 3D-художника: вы не рисуете светотень и блики в карте Albedo — вы описываете чистые физические свойства материала, а динамическое освещение движок рассчитывает самостоятельно. Начинающие моделлеры часто ошибочно внедряют направленные тени и блики прямо в базовый цвет, из-за чего ассет превращается в неестественное пятно при смене источника света. Если вы только что завершили скульптинг в Blender, логика сохраняется: сначала чистые фундаментальные свойства, затем художественная выразительность.

Пайплайн текстурирования игровой модели

  1. UV-развёртка низкополигональной сетки (после ретопологии).
  2. Запекание normal, AO и других карт с high-poly.
  3. Сборка PBR-материала: подключение карт к Principled BSDF.
  4. Texture Paint / внешний редактор: износ, грязь, цветовые вариации.
  5. Проверка в движке (Unity / Unreal) при нейтральном освещении.
Важно Порядок не меняется: текстурировать модель без UV невозможно, а запекать карты до чистки сетки — гарантированные артефакты. Каждый этап замыкается проверкой перед следующим.

UV-развёртка в Blender

UV-развёртка — раскладка поверхности модели на плоскость текстуры, как разворачивание картонной коробки. В Blender процесс живёт в режимах Edit Mode и UV Editor:

  1. Разметка швов. Выделите рёбра и нажмите Ctrl + E → Mark Seam. Швы прячьте в невидимых зонах: внутренние стороны, стыки деталей, подмышки, линия роста волос.
  2. Развертка. Выделите всё (A) → U → Unwrap. Алгоритм разворачивает острова между швами с минимальными растяжениями.
  3. Упаковка. U → Pack Islands. Острова раскладываются по площади текстуры с заданным отступом (Margin). Отступ между островами обязателен — иначе при mip-уровнях цвета соседних островов протекут друг в друга.
  4. Проверка растяжений. В UV Editor включите отображение Stretch. Синий — хорошо, красный — остров растянут и будет «мылить».
Совет Проверяйте развертку шахматной текстурой: создайте Checker Image, подключите к Base Color через Vector → UV. Равные квадратики по всей модели означают, что плотность текстуры ровная, а значит, и детализация будет консистентной.

Отдельная тема — плотность текселей (texel density): сколько пикселей текстуры приходится на метр модели. Для консистентности сцены все ассеты выравниваются по одной плотности — например, 512 px/м для героических объектов и 256 px/м для фоновых. В Blender плотность измеряют аддоны вроде Texel Density Checker.

Шахматка на кубе и UV-острова с отступами в квадрате 0–1
Шахматка показывает растяжение и масштаб; отступы защищают края островов · Открыть схему крупнее ↗

Запекание normal map с high-poly

Запекание normal map переносит рельеф высокополигональной модели на низкополигональную: движок рендерит лёгкую сетку, а нормали «врут» о деталях, которых в геометрии нет. Пошагово в Blender:

  1. Убедитесь, что low-poly и high-poly совмещены в пространстве и у low-poly чистые трансформации (Ctrl + A → All Transforms).
  2. На low-poly создайте материал с узлом Image Texture, создайте новую текстуру нужного размера (2048×2048 — стандартный старт), цветовое пространство Non-Color.
  3. Выделите high-poly, затем low-poly (Shift + клик — активный объект целевой).
  4. Render Properties → Bake → тип Normal. В разделе Selected to Active включите привязку и задайте Extrusion / Max Ray Distance — расстояние, на котором лучи ищут high-poly (обычно 0.05–0.2 для метровой модели).
  5. Нажмите Bake. После завершения сохраните изображение: Image → Save As.
Render Properties → Bake
├─ Bake Type: Normal
├─ [x] Selected to Active
├─ Extrusion: 0.1 m
├─ Max Ray Distance: 0.05 m
└─ Margin: 16 px
Output: размер 2048×2048, Color Space: Non-Color

Тем же способом запекаются Ambient Occlusion (затенение в углублениях, используется для износа в покраске), Curvature-подобные маски и лёгкие карт в стиле цветного ID. Для цвета и деталей, которые нельзя выразить рельефом (логотипы, роспись), запекается Diffuse/Color с high-poly, окрашенного в вершинные цвета или простые материалы.

Перенос деталей high-poly в tangent-space normal map для low-poly модели
В Cycles: Normal, Selected to Active, активная low-poly модель и целевая текстура · Открыть схему крупнее ↗

Артефакты запекания и как их исправить

Артефакт Техническая причина Способ устранения
Швы и темные «обводки» по границам UV-островов Недостаточный отступ (Margin); при сжатии текстур и MIP-маппинге пиксели перетекают на соседние острова Увеличьте параметр Margin до 8–16 px в панели Bake и переупакуйте острова с достаточным зазором
Прострелы лучей и наложение геометрии (Ghosting / Ray Misses) Завышенная дистанция поиска лучей (Max Ray Distance), лучи захватывают противоположную сторону или соседние элементы Уменьшите параметр Extrusion / Max Ray Distance до толщины перепада деталей либо используйте Cage-оболочку
Некорректная цветовая гамма normal map (красно-желтые зоны, инверсия) Вывернутые нормали полигонов (Flipped Faces) или несовпадение осей (OpenGL в Blender vs DirectX в Unreal) В Edit Mode нажмите Shift + N (Recalculate Outside); при экспорте в Unreal Engine инвертируйте зеленый канал (-Y)
Черные пятна, пропуски и дыры на запеченной карте Пересечение геометрии low-poly и high-poly, несовпадение масштаба (Scale) или сдвоенные вершины Выровняйте соосность моделей, примените масштаб (Ctrl + A), слейте дубликаты вершин (M → By Distance)
Размытие и потеря резкости мелкого рельефа Низкая плотность текселей (Texel Density) на данном UV-острове или малое общее разрешение текстуры Увеличьте площадь UV-острова ключевой детали в UV Editor либо увеличьте разрешение карты (например, с 2K до 4K)
Частая ошибка Запекание в sRGB. Карта нормалей должна читать пространство Non-Color, иначе при подключении материал даёт грязь и инвертированные впадины. Проверяйте Color Space у каждого нецветового узла.

PBR-карты: таблица и логика

Карта Что описывает Color Space Куда подключать
Base Color / Albedo Цвет поверхности без света и теней sRGB Base Color
Roughness Шероховатость: 0 — зеркало, 1 — матовость Non-Color Roughness
Metallic Металл (1) или диэлектрик (0) Non-Color Metallic
Normal Микрорельеф через искажение нормалей Non-Color Normal Map узел → Normal
Height Высотная карта (для параллакса или генерации нормали) Non-Color Bump / Displacement
AO Затенение в углублениях Non-Color Микс с Base Color / маски покраски

Логика сборки: цвет рассказывает, что это за предмет; roughness рассказывает историю использования (ручки стираются, углы сколоты); normal добавляет рельеф. PBR-материалы выигрывают не детализацией карт, а согласованностью этих историй между собой.

Texture Paint: ручная покраска

Встроенный Texture Paint (режим Paint Mode) — Photoshop прямо на модели. Кисти работают по слоям UV-текстуры, а с включённой маскировкой по AO или Curvature краска ложится физически логично: потёртости появляются на выступах, грязь — в углублениях. Минимальный набор приёмов:

Проверка результата Посмотрите материал в трёх состояниях: под нейтральным студийным светом, под контрастным тёплым светом и в упрощённом EEVEE без постэффектов. Если материал «работает» только в одном — параметры уравновешены плохо.

Roughness-вариации: секрет живого материала

Если материал выглядит пластиковым, в 9 случаях из 10 виновата идеально ровная roughness. Реальные поверхности имеют микровариации шероховатости: разводы, царапины, пятна влаги. Добавьте к карте Noise Texture или мелкий Grunge через MixRGB — и материал оживёт без единого нового цвета в albedo. Именно variation roughness отличает amateur-рендер от продакшн-материала.

Проверка материала в движке

Blender и движок могут по-разному читать карты: другой коридор значений roughness, инвертированная зелёная ось normal map (Unreal), отличающееся окружение. Экспортируйте модель с текстурами в целевой движок и сравните:

Тонкости импорта в конкретные движки — отдельная тема; стартовая точка описана в гайде по экспорту рига и модели в движок.

Типичные ошибки

  1. Тени и блики в albedo. Материал ломается при смене освещения. Цвет — только про цвет.
  2. Запекание без Margin. Тонкие обводки швов на модели. Margin 8–16 px и переупаковка островов.
  3. sRGB у технических карт. Roughness, normal, metallic — всегда Non-Color.
  4. Одинаковая плотность островов не соблюдена. Лицо размером с пуговицу рядом с гигантской пряжкой: детализация плывёт. Выравнивайте texel density.
  5. 2048 текстура на фоновый проп. Память не резиновая: размер карты соответствует роли объекта в сцене.

Чек-лист готового текстуринга

Проверка результата

  • UV без растяжений (проверка Stretch и шахматкой)
  • Texel density выровнена по всем частям модели
  • Normal map запечена без швов и перескоков деталей
  • Все нецветовые карты в Non-Color
  • Roughness имеет вариации, материал не «пластиковый»
  • Материал проверен при 2–3 сценариях освещения
  • Текстуры сохранены отдельно от .blend (PNG/TGA), имена осмысленные
  • Импорт в целевой движок сверен с видом в Blender

FAQ — частые вопросы о текстурировании

Что такое PBR?

Подход, при котором материал описывается физическими свойствами поверхности — цвет, шероховатость, металличность. Освещение считается движком, поэтому материал корректно выглядит при любом свете.

Как запечь нормали в Blender?

Создайте Image Texture на low-poly, выделите сначала high-poly, потом low-poly, в Render Properties → Bake выберите тип Normal, включите Selected to Active с расстоянием лучей по масштабу модели и нажмите Bake. Пошаговый разбор с настройками — в разделе про запекание.

Почему normal map синяя?

Синий (128, 128, 255) — базовое направление нормалей «наружу». Отклонения от него кодируют рельеф. Красная карта означает вывернутые нормали или ошибку цветового пространства.

Как исправить артефакты запекания?

Проверьте три вещи: совмещение сеток и отсутствие пересечений, направление нормалей (Shift + N) и величину Ray Distance. Таблица типовых артефактов с лечением — в соответствующем разделе гайда.

Нужен ли Substance Painter, если есть Blender?

Для обучения и инди-объёмов — нет: запекание и Texture Paint в Blender закрывают тот же пайплайн. Painter экономит время на смарт-материалах в больших объёмах работы.

Что такое texel density?

Отношение пикселей текстуры к размеру модели в метрах. Единая плотность делает детализацию сцены консистентной. Измеряется аддонами, выравнивается масштабированием UV-островов.

Куда двигаться после текстурирования?

Если модель анимированная — риггинг в Blender. Для статичных ассетов следующий шаг — презентация: освещение и рендер в Blender. Общий маршрут — хаб 3D-моделирования для игр.

Официальная документация

Пояснения и названия инструментов можно сверить с руководством Blender 4.5 LTS: