Как запечь карту нормалей в Blender с high-poly на low-poly

В Cycles выберите Normal → Tangent, включите Selected to Active и запеките детали high-poly в текстуру low-poly. Подключите её через узел Normal Map и проверьте рельеф под боковым светом.

Учебная сцена проверена в Blender 5.2.3 LTS · Cycles
Детализированная high-poly панель, простая low-poly панель и та же low-poly с запечённой картой нормалей
Рендеры панели с одной камерой и светом. На low-poly с картой видны пазы и винты. Форму силуэта задаёт сетка. Открыть сравнение крупнее ↗

Подготовьте high-poly, low-poly и UV

  1. Совместите модели. Наложите high-poly на low-poly и проверьте совпадение масштаба и силуэта. Чтобы увидеть зазоры, переключитесь на каркасное отображение. При необходимости примените масштаб через Ctrl+A → Scale и снова проверьте форму.
  2. Проверьте low-poly в UV Editor. Для первого теста разместите уникальные острова с зазорами внутри квадрата 0–1. Включите шахматку и проверьте растяжение на поверхностях с мелкими деталями. Убедитесь, что для запекания выбрана нужная UV-карта.
  3. Зафиксируйте затенение и диагонали. Проверьте ориентацию граней через Face Orientation. Если сетка пойдёт в движок, используйте одинаковые нормали вершин и триангуляцию при запекании и экспорте. На жёстких рёбрах с разрывом нормалей обычно нужен разрез UV и отступ между островами.

Если low-poly всё ещё меняется, пройдите проверку сетки перед UV и запеканием. Форма сетки и направление её нормалей влияют на траектории лучей.

UV-развёртка low-poly панели рядом с её картой нормалей, запечённой в Cycles
Развёртка и карта одной панели. Найдите остров лицевой стороны и соответствующие ему пазы на карте. Открыть UV и карту крупнее ↗

Запеките normal map в Cycles

  1. Переключите Render Engine на Cycles. В Shader Editor на low-poly добавьте узел Image Texture, создайте изображение и установите Color Space → Non-Color. Оставьте новый узел свободным и щёлкните по его заголовку, чтобы сделать активным. Посмотреть, какой узел выбрать. При нескольких материалах проверьте целевой узел в каждом используемом материале.
  2. Выберите объекты в Object Mode. Сначала выделите high-poly, затем добавьте low-poly щелчком с Shift в 3D Viewport или с Ctrl в Outliner. Low-poly должна стать активным объектом. При запекании используйте совмещённую пару, а сравнительные копии держите вне выделения.
  3. Откройте Render Properties → Bake. Выберите Bake Type → Normal, затем Influence → Space → Tangent. Отметьте Selected to Active и раскройте его стрелкой слева. В Output выберите Target → Image Textures и включите Clear Image для теста в отдельное изображение.
  4. Настройте проекцию и поля. В режиме без Cage параметр Extrusion выносит начало луча наружу от поверхности low-poly, а Max Ray Distance задаёт предельное расстояние поиска попадания от этой точки. Подберите их по геометрии на проблемном участке. Margin продолжает пиксели карты за краями островов. Оставьте место для полей в UV и проверьте швы после уменьшения текстуры.
  5. Нажмите Bake и сохраните карту. В Image Editor откройте полученное изображение и выберите Image → Save As. PNG подходит для передачи карты без потерь. Если хотите перенести сцену одним файлом, упакуйте изображение в .blend.
Панель Bake в Blender 5.2.3. Выбраны Normal и Tangent, раскрыт Selected to Active, Extrusion 2 мм и Max Ray Distance 6 мм
Панель Bake в Blender 5.2.3. Стрелка слева от Selected to Active открывает настройки лучей. Кнопка Bake находится вверху. Открыть настройки крупнее ↗
Начните с малого теста Запеките карту меньшего разрешения, проверьте проекцию, затем повторите с итоговым размером. Меняйте по одному параметру и сравнивайте тот же участок.

Подключите карту и проверьте рельеф

В Shader Editor соедините выход Color узла Image Texture со входом Color узла Normal Map. Выход Normal подключите ко входу Normal в Principled BSDF. В узле Normal Map выберите Tangent Space и используйте ту же UV-карту, в которую запекали. Начните со Strength = 1.

В Shader Editor выделен BAKE TARGET. Ниже PACKED NORMAL соединён через Normal Map со входом Normal в Principled BSDF
Сверху выделен BAKE TARGET для запекания. Ниже готовая карта идёт из PACKED NORMAL через узел Tangent-space normal во вход Normal материала. Открыть узлы крупнее ↗

Сравните low-poly при Strength 0 и 1 с одной камерой и материалом. Поверните источник света, проверьте углубления, длинные фаски и границы UV. Если ошибка видна только после экспорта, сравните триангуляцию, нормали вершин, касательный базис и направление зелёного канала, которое ожидает движок.

Артефакты запекания и как найти их причину

Откройте карту рядом с моделью. Сначала выясните, есть ли дефект в самой карте или он появляется при её чтении материалом. Затем изолируйте участок и повторите тест.

При Max Ray Distance 2,1 мм у трёх пазов рваные торцы. При 6 мм скосы прорисованы целиком
При Max Ray Distance 2,1 мм у трёх пазов рваные торцы и пропадает часть скосов. С дистанцией 6 мм лучи покрывают глубину пазов в этой сцене. Открыть сравнение крупнее ↗
Что видноЧто проверитьЧто попробовать
Пустые участки внутри UV-островаЛуч мог не достичь high-poly. Проверьте положение поверхностей и направление нормалей.При подтверждённом недолёте увеличьте Max Ray Distance небольшим шагом или скорректируйте оболочку.
Отпечаток соседней деталиЛуч попал в другой участок high-poly. Сравните форму пятна с деталями рядом.Уменьшите дистанцию, изолируйте нужную пару моделей или настройте локальный Cage.
Тонкий шов заметен вдалиФильтрация и mip-уровни захватывают пиксели за границей острова.Увеличьте зазор при упаковке и настройте Margin. Проверьте материал на уменьшенной карте.
Шов виден и вблизиПроверьте hard edge, соседние острова, перекрытие UV и согласованность нормалей между bake и просмотром.Исправьте UV или затенение на low-poly и повторите bake после правок.
Рельеф выглядит вывернутымПроверьте Non-Color, тип узла и соглашение по оси Y в месте просмотра.Сначала проверьте карту в Blender. При импорте меняйте ориентацию зелёного канала, только если целевой движок ожидает другую.

Когда использовать Cage

Cage задаёт поверхность, с которой Cycles начинает проекцию. Для автоматической оболочки включите Cage и подберите Cage Extrusion. Если фаски и соседние детали требуют разной дистанции, сделайте копию low-poly, сместите вершины локально и укажите копию в Cage Object. Сохраните топологию и порядок граней low-poly. Проверьте, что оболочка охватывает нужную геометрию, и сделайте короткий тест.

Как запекать модель с зеркальными UV

Оставьте симметричную low-poly целиком, чтобы сохранить затенение вдоль оси. При запекании в одно обычное изображение перенесите дублирующиеся острова зеркальной стороны на целую плитку, например на +1 по U. Уникальная сторона остаётся в 0–1, и обе стороны не перезаписывают одни пиксели.

  1. Убедитесь, что острова зеркальной половины полностью вышли из плитки 0–1, и выполните тестовый bake.
  2. Верните эти острова обратно на −1 по U для финальной развёртки и проверьте обе стороны и центральный шов под боковым светом.
Два зеркальных UV-острова совпадают в плитке 0–1. Перед запеканием один остров смещён на +1 по U в соседнюю плитку
Отдельный тест на двух зеркальных островах в Blender 5.2.3 LTS. При запекании в обычное изображение Cycles записал в карту только остров, оставленный в плитке 0–1. Открыть схему крупнее ↗

Такой способ подходит для симметричных деталей, которые делят одни пиксели. Для уникальных деталей каждой стороны оставьте отдельные острова. В проекте с UDIM соседняя плитка может быть самостоятельной целью запекания, поэтому сверяйте настройку изображения и целевые плитки.

Повторите запекание в учебной сцене

В сцене корпус панели размером 120 × 76 × 12 мм. У Panel_high 4264 треугольника, у Panel_low — 44.

Скачать учебную сцену (.blend, 162 КиБ)

  1. Откройте .blend и сохраните рабочую копию. В Outliner покажите Panel_high через значок глаза. Выделите Panel_high, затем добавьте Panel_low через Ctrl и щелчок по имени. Активным должен быть Panel_low.
  2. В Shader Editor у Panel_low выберите узел BAKE TARGET с пустым изображением Bake_Target_1024. Готовая карта Panel_Normal_1024 упакована в .blend и подключена к материалу через узел PACKED NORMAL.
  3. Запеките с параметрами ниже. Откройте Bake_Target_1024 в Image Editor и сравните с Panel_Normal_1024. Чтобы увидеть пропуски, повторите тест с Max Ray Distance 2,1 мм. Верните 6 мм и запеките ещё раз.
  4. Для проверки на модели выберите Bake_Target_1024 в узле PACKED NORMAL. Спрячьте Panel_high значком глаза и осмотрите пазы на low-poly при боковом свете.
Cycles · Normal · Tangent · Selected to Active
Image Textures · 1024 × 1024 · Non-Color · Clear Image
Cage выключен · Extrusion 2 мм · Max Ray Distance 6 мм
Margin → Size: 12 px

Документация и примеры