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

Что такое PBR и как движок читает материал
PBR (Physically Based Rendering) — стандарт, при котором материал описывается физическими свойствами, а не «картинкой с бликами». Движок по картам понимает: какого цвета поверхность без освещения, насколько она шероховатая, металл ли это и как искажена её геометрия. Из этих данных освещение считается в реальном времени — поэтому материал корректно ведёт себя в любом окружении, от пустыни до пещеры.
Практический вывод для 3D-художника: вы не рисуете светотень и блики в карте Albedo — вы описываете чистые физические свойства материала, а динамическое освещение движок рассчитывает самостоятельно. Начинающие моделлеры часто ошибочно внедряют направленные тени и блики прямо в базовый цвет, из-за чего ассет превращается в неестественное пятно при смене источника света. Если вы только что завершили скульптинг в Blender, логика сохраняется: сначала чистые фундаментальные свойства, затем художественная выразительность.
Пайплайн текстурирования игровой модели
- UV-развёртка низкополигональной сетки (после ретопологии).
- Запекание normal, AO и других карт с high-poly.
- Сборка PBR-материала: подключение карт к Principled BSDF.
- Texture Paint / внешний редактор: износ, грязь, цветовые вариации.
- Проверка в движке (Unity / Unreal) при нейтральном освещении.
UV-развёртка в Blender
UV-развёртка — раскладка поверхности модели на плоскость текстуры, как разворачивание картонной коробки. В Blender процесс живёт в режимах Edit Mode и UV Editor:
- Разметка швов. Выделите рёбра и нажмите Ctrl + E → Mark Seam. Швы прячьте в невидимых зонах: внутренние стороны, стыки деталей, подмышки, линия роста волос.
- Развертка. Выделите всё (A) → U → Unwrap. Алгоритм разворачивает острова между швами с минимальными растяжениями.
- Упаковка. U → Pack Islands. Острова раскладываются по площади текстуры с заданным отступом (Margin). Отступ между островами обязателен — иначе при mip-уровнях цвета соседних островов протекут друг в друга.
- Проверка растяжений. В UV Editor включите отображение Stretch. Синий — хорошо, красный — остров растянут и будет «мылить».
Отдельная тема — плотность текселей (texel density): сколько пикселей текстуры приходится на метр модели. Для консистентности сцены все ассеты выравниваются по одной плотности — например, 512 px/м для героических объектов и 256 px/м для фоновых. В Blender плотность измеряют аддоны вроде Texel Density Checker.
Запекание normal map с high-poly
Запекание normal map переносит рельеф высокополигональной модели на низкополигональную: движок рендерит лёгкую сетку, а нормали «врут» о деталях, которых в геометрии нет. Пошагово в Blender:
- Убедитесь, что low-poly и high-poly совмещены в пространстве и у low-poly чистые трансформации (Ctrl + A → All Transforms).
- На low-poly создайте материал с узлом Image Texture, создайте новую текстуру нужного размера (2048×2048 — стандартный старт), цветовое пространство Non-Color.
- Выделите high-poly, затем low-poly (Shift + клик — активный объект целевой).
- Render Properties → Bake → тип Normal. В разделе Selected to Active включите привязку и задайте Extrusion / Max Ray Distance — расстояние, на котором лучи ищут high-poly (обычно 0.05–0.2 для метровой модели).
- Нажмите 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, окрашенного в вершинные цвета или простые материалы.
Артефакты запекания и как их исправить
| Артефакт | Техническая причина | Способ устранения |
|---|---|---|
| Швы и темные «обводки» по границам 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) |
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 краска ложится физически логично: потёртости появляются на выступах, грязь — в углублениях. Минимальный набор приёмов:
- База + вариации. Залейте базовый цвет, вторым слоем с низкой прозрачностью добавьте цветовые вариации — однотонные поверхности выглядят фальшиво.
- Износ по AO/Curvature. Используйте запечённую AO как маску кисти: светлые зоны AO — там истирается краска.
- Roughness painting. Рисуйте и по карте шероховатости: отпечатки пальцев, брызги, жир — это roughness, а не цвет.
Roughness-вариации: секрет живого материала
Если материал выглядит пластиковым, в 9 случаях из 10 виновата идеально ровная roughness. Реальные поверхности имеют микровариации шероховатости: разводы, царапины, пятна влаги. Добавьте к карте Noise Texture или мелкий Grunge через MixRGB — и материал оживёт без единого нового цвета в albedo. Именно variation roughness отличает amateur-рендер от продакшн-материала.
Проверка материала в движке
Blender и движок могут по-разному читать карты: другой коридор значений roughness, инвертированная зелёная ось normal map (Unreal), отличающееся окружение. Экспортируйте модель с текстурами в целевой движок и сравните:
- базовый цвет при нейтральном освещении совпадает с Blender;
- блик на металле держит форму, а не растекается пятном;
- нормали смотрят наружу (вогнутости тёмные, выпуклости светлые);
- на mip-уровнях (вдалеке) острова не протекают цветом.
Тонкости импорта в конкретные движки — отдельная тема; стартовая точка описана в гайде по экспорту рига и модели в движок.
Типичные ошибки
- Тени и блики в albedo. Материал ломается при смене освещения. Цвет — только про цвет.
- Запекание без Margin. Тонкие обводки швов на модели. Margin 8–16 px и переупаковка островов.
- sRGB у технических карт. Roughness, normal, metallic — всегда Non-Color.
- Одинаковая плотность островов не соблюдена. Лицо размером с пуговицу рядом с гигантской пряжкой: детализация плывёт. Выравнивайте texel density.
- 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: