Как запечь карту нормалей в Blender с high-poly на low-poly
В Cycles выберите Normal → Tangent, включите Selected to Active и запеките детали high-poly в текстуру low-poly. Подключите её через узел Normal Map и проверьте рельеф под боковым светом.
Подготовьте high-poly, low-poly и UV
- Совместите модели. Наложите high-poly на low-poly и проверьте совпадение масштаба и силуэта. Чтобы увидеть зазоры, переключитесь на каркасное отображение. При необходимости примените масштаб через Ctrl+A → Scale и снова проверьте форму.
- Проверьте low-poly в UV Editor. Для первого теста разместите уникальные острова с зазорами внутри квадрата 0–1. Включите шахматку и проверьте растяжение на поверхностях с мелкими деталями. Убедитесь, что для запекания выбрана нужная UV-карта.
- Зафиксируйте затенение и диагонали. Проверьте ориентацию граней через Face Orientation. Если сетка пойдёт в движок, используйте одинаковые нормали вершин и триангуляцию при запекании и экспорте. На жёстких рёбрах с разрывом нормалей обычно нужен разрез UV и отступ между островами.
Если low-poly всё ещё меняется, пройдите проверку сетки перед UV и запеканием. Форма сетки и направление её нормалей влияют на траектории лучей.
Запеките normal map в Cycles
- Переключите Render Engine на Cycles. В Shader Editor на low-poly добавьте узел Image Texture, создайте изображение и установите Color Space → Non-Color. Оставьте новый узел свободным и щёлкните по его заголовку, чтобы сделать активным. Посмотреть, какой узел выбрать. При нескольких материалах проверьте целевой узел в каждом используемом материале.
- Выберите объекты в Object Mode. Сначала выделите high-poly, затем добавьте low-poly щелчком с Shift в 3D Viewport или с Ctrl в Outliner. Low-poly должна стать активным объектом. При запекании используйте совмещённую пару, а сравнительные копии держите вне выделения.
- Откройте Render Properties → Bake. Выберите Bake Type → Normal, затем Influence → Space → Tangent. Отметьте Selected to Active и раскройте его стрелкой слева. В Output выберите Target → Image Textures и включите Clear Image для теста в отдельное изображение.
- Настройте проекцию и поля. В режиме без Cage параметр Extrusion выносит начало луча наружу от поверхности low-poly, а Max Ray Distance задаёт предельное расстояние поиска попадания от этой точки. Подберите их по геометрии на проблемном участке. Margin продолжает пиксели карты за краями островов. Оставьте место для полей в UV и проверьте швы после уменьшения текстуры.
- Нажмите Bake и сохраните карту. В Image Editor откройте полученное изображение и выберите Image → Save As. PNG подходит для передачи карты без потерь. Если хотите перенести сцену одним файлом, упакуйте изображение в .blend.
Подключите карту и проверьте рельеф
В Shader Editor соедините выход Color узла Image Texture со входом Color узла Normal Map. Выход Normal подключите ко входу Normal в Principled BSDF. В узле Normal Map выберите Tangent Space и используйте ту же UV-карту, в которую запекали. Начните со Strength = 1.
Сравните low-poly при Strength 0 и 1 с одной камерой и материалом. Поверните источник света, проверьте углубления, длинные фаски и границы UV. Если ошибка видна только после экспорта, сравните триангуляцию, нормали вершин, касательный базис и направление зелёного канала, которое ожидает движок.
Артефакты запекания и как найти их причину
Откройте карту рядом с моделью. Сначала выясните, есть ли дефект в самой карте или он появляется при её чтении материалом. Затем изолируйте участок и повторите тест.
| Что видно | Что проверить | Что попробовать |
|---|---|---|
| Пустые участки внутри 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, и обе стороны не перезаписывают одни пиксели.
- Убедитесь, что острова зеркальной половины полностью вышли из плитки 0–1, и выполните тестовый bake.
- Верните эти острова обратно на −1 по U для финальной развёртки и проверьте обе стороны и центральный шов под боковым светом.
Такой способ подходит для симметричных деталей, которые делят одни пиксели. Для уникальных деталей каждой стороны оставьте отдельные острова. В проекте с UDIM соседняя плитка может быть самостоятельной целью запекания, поэтому сверяйте настройку изображения и целевые плитки.
Повторите запекание в учебной сцене
В сцене корпус панели размером 120 × 76 × 12 мм. У Panel_high 4264 треугольника, у Panel_low — 44.
Скачать учебную сцену (.blend, 162 КиБ)
- Откройте .blend и сохраните рабочую копию. В Outliner покажите
Panel_highчерез значок глаза. ВыделитеPanel_high, затем добавьтеPanel_lowчерез Ctrl и щелчок по имени. Активным должен бытьPanel_low. - В Shader Editor у
Panel_lowвыберите узел BAKE TARGET с пустым изображениемBake_Target_1024. Готовая картаPanel_Normal_1024упакована в .blend и подключена к материалу через узел PACKED NORMAL. - Запеките с параметрами ниже. Откройте
Bake_Target_1024в Image Editor и сравните сPanel_Normal_1024. Чтобы увидеть пропуски, повторите тест с Max Ray Distance 2,1 мм. Верните 6 мм и запеките ещё раз. - Для проверки на модели выберите
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