3D-моделирование для геймдева

Курс охватывает полный пайплайн создания игровых 3D-ассетов: от базового моделинга и оптимизации до UV, текстурирования и интеграции в движок. Вы научитесь делать модели, готовые для реального времени, с учетом производительности, качества и требований игровых проектов.

1. Роль 3D-ассетов в геймдеве и подготовка рабочего пайплайна

Роль 3D-ассетов в геймдеве и подготовка рабочего пайплайна

Что такое 3D-ассет и почему он важен

3D-ассет — это любой трёхмерный ресурс, который попадает в игру: модель, материал, текстуры, анимации, коллизия, варианты уровней детализации и метаданные для движка. В геймдеве ассет ценен не сам по себе, а как готовый к использованию в движке элемент.

Роль 3D-ассетов в проекте обычно сводится к трём вещам:

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

    Из чего состоит «игровой» 3D-ассет

    В разных командах состав может отличаться, но базовый набор обычно такой:

  • Меш: геометрия объекта (вершины, рёбра, полигоны).
  • UV-развёртка: способ разложить поверхность модели на 2D-плоскость для текстур.
  • Текстуры: 2D-изображения, описывающие материал объекта.
  • Материал: набор настроек, который говорит движку, как использовать текстуры и как объект отражает свет.
  • Коллизия: упрощённая форма для физики и столкновений.
  • LOD: несколько версий модели разной детализации для экономии ресурсов на расстоянии.
  • Пивот: точка опоры объекта (например, в центре или у основания), важна для размещения и анимации.
  • Коротко о PBR

    В большинстве современных проектов используется PBR (Physically Based Rendering, физически корректное освещение). Важно понимать принцип: материал описывается так, чтобы движок предсказуемо реагировал на свет.

    Часто применяются такие карты:

  • Base Color: базовый цвет без теней и бликов.
  • Metallic: где поверхность металл, а где нет.
  • Roughness: насколько поверхность шероховатая (влияет на «размытость» отражений).
  • Normal: мелкие детали поверхности без добавления геометрии.
  • Полезная база по glTF и PBR (как один из стандартов обмена ассетами): Khronos glTF

    Типы ассетов в играх и их особенности

    Ассеты удобно группировать по назначению — так проще выбирать подход к моделированию и оптимизации:

  • Hero-объекты: ключевые элементы, которые игрок видит крупно (персонаж, оружие, важный предмет).
  • Окружение: здания, скалы, деревья, интерьер, пропсы.
  • Модульные наборы: детали, из которых собирают уровни (стены, углы, балки, плитка).
  • Декали и мелкие детали: граффити, потёртости, следы, наклейки.
  • Подход к качеству и бюджету зависит от дистанции просмотра и частоты повторения. Повторяющиеся объекты особенно чувствительны к размеру текстур и числу материалов.

    !Инфографика помогает запомнить основные категории ассетов и приоритеты качества

    Что такое пайплайн и зачем его готовить заранее

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

    Без пайплайна неизбежны типовые проблемы:

  • объект «встал не туда» из-за разного пивота и ориентации осей;
  • масштабы не совпадают между ассетами;
  • текстуры разного стандарта, материалы выглядят непредсказуемо;
  • меши слишком тяжёлые, фпс падает;
  • файлы теряются, версии конфликтуют.
  • Хороший пайплайн делает результат повторяемым: любой ассет проходит те же шаги и одинаково импортируется в движок.

    Базовый рабочий пайплайн 3D-ассета

    Ниже — универсальная схема, подходящая для большинства проектов (от инди до AA), даже если инструменты отличаются.

  • Техническое задание и референсы
  • Блокинг: грубая форма для проверки масштаба и композиции
  • Моделирование: финальная геометрия
  • UV-развёртка
  • Запекание карт: например, normal и другие вспомогательные карты
  • Текстурирование и материалы (PBR)
  • LOD и коллизия
  • Экспорт в обменный формат
  • Импорт в движок и настройка (материалы, коллизия, LOD)
  • Проверка в сцене: свет, расстояния, производительность
  • !Схема показывает порядок работ и места, где чаще всего возникают проблемы

    Подготовка рабочего места и файловой структуры

    Выбор инструментов

    Пайплайн не привязан к одной программе, но в игре чаще всего встречается связка:

  • DCC для моделинга: Blender, Maya, 3ds Max
  • Текстуринг: Substance 3D Painter или аналоги
  • Движок: Unity или Unreal Engine
  • Документация по импорту полезна как «истина в последней инстанции», потому что правила часто зависят от движка:

  • Unity Manual: Importing a model
  • Unreal Engine Documentation
  • Файловая структура проекта

    Важно договориться о структуре до массового производства ассетов. Пример логики папок:

  • /References: референсы, скриншоты, гайды по стилю
  • /Source: исходники (файлы DCC, highpoly, рабочие сцены)
  • /Exports: экспортированные меши (FBX/glTF)
  • /Textures: финальные текстуры
  • /Engine: импортированные ассеты и префабы в проекте движка
  • Смысл разделения простой: Source может быть тяжёлым и не всегда нужен в билде, а Exports и Textures — то, что должно стабильно попадать в движок.

    Именование и версии

    Договоритесь о правилах:

  • единый язык (обычно английский) и единый стиль (snake_case или PascalCase);
  • префиксы по типу (например, SM_ для статических мешей, T_ для текстур);
  • суффиксы для карт (_BC, _N, _R, _M), если это принято в команде;
  • версия в имени файла только при необходимости, лучше опираться на систему контроля версий.
  • Для контроля версий в командах часто используют Git, но для больших бинарных файлов может понадобиться Git LFS. Официальная справка: Git LFS

    Технические стандарты: масштаб, оси, пивот

    Эти настройки чаще всего ломают импорт, особенно у новичков.

  • Единицы измерения: выберите стандарт (например, 1 unit = 1 метр) и придерживайтесь его во всех сценах.
  • Оси мира: у разных программ разные ориентации (где-то Z вверх, где-то Y). Важно проверить, как ваш движок ожидает оси, и настроить экспорт.
  • Пивот: для пропсов часто удобно ставить пивот на основание, для вращающихся объектов — в центре вращения.
  • Практическое правило: перед тем как делать много ассетов, создайте тестовый куб правильного размера, прогоните его через экспорт и импорт и зафиксируйте настройки.

    Оптимизация: что важно учесть заранее

    Оптимизация — это не «урезать в конце», а проектировать ассет так, чтобы он был эффективным.

    Геометрия

  • Делайте силуэт читаемым: лишние полигоны внутри плоских областей почти не видны.
  • Избегайте мелких деталей геометрией там, где их можно передать normal-картой.
  • Не используйте слишком много отдельных материалов на одном объекте: каждый материал повышает стоимость отрисовки.
  • Текстуры

  • Выбирайте размер текстур под расстояние просмотра (4K не всегда лучше).
  • По возможности используйте единый набор карт и одинаковую логику упаковки каналов (если команда так делает).
  • Следите за повторяемостью: тайловые материалы (повторяющиеся) экономят память.
  • LOD и коллизия

  • LOD снижает детализацию на расстоянии и помогает держать стабильный фпс.
  • Коллизия обычно проще визуальной модели: игре важнее быстрые вычисления, чем точность каждого выступа.
  • Экспорт и импорт: контрольная точка пайплайна

    Форматы

    Чаще всего встречаются:

  • FBX: распространённый формат обмена между DCC и движками.
  • glTF: современный формат, удобный для передачи материалов PBR и ассетов.
  • Выбор зависит от движка и требований проекта. В любом случае полезно придерживаться принципа: экспорт — это отдельный воспроизводимый шаг, а не «как получилось».

    Чек-лист перед экспортом

  • применены трансформации (масштаб/поворот) так, как ожидает движок;
  • корректный пивот;
  • нет лишней геометрии (скрытых объектов, дубликатов, невидимых деталей);
  • проверена UV-развёртка;
  • текстуры имеют понятные имена и правильные типы (например, normal не сохранён как обычная цветовая карта);
  • есть коллизия и LOD, если это требуется.
  • Минимальный набор договорённостей для команды или личного проекта

    Даже если вы работаете в одиночку, зафиксируйте правила в отдельном документе проекта. Минимум:

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

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

    2. Базовый и продвинутый моделинг: формы, топология, hard-surface и organic

    Базовый и продвинутый моделинг: формы, топология, hard-surface и organic

    Зачем 3D-художнику разбираться в моделинге глубже «сделал красиво»

    В предыдущей статье мы зафиксировали важную мысль: в геймдеве ассет ценен не как «картинка», а как предсказуемо работающий элемент пайплайна (масштаб, импорт, материалы, оптимизация). Моделинг — это этап, где закладываются почти все будущие проблемы или, наоборот, стабильность:

  • читаемость формы и стилистика;
  • корректное освещение и шейдинг;
  • удобство UV, запекания и текстурирования;
  • бюджет полигонов и поведение LOD;
  • деформация (для персонажей) и корректная коллизия.
  • Эта статья даст практические принципы моделинга, которые одинаково важны в Blender/Maya/3ds Max: работа с формой, правила топологии и разные подходы для hard-surface и organic.

    !Иллюстрация показывает, что форма и силуэт важнее мелкой детализации

    Базовый моделинг: форма как главный приоритет

    Как думать формами: первичные, вторичные, третичные

    Чтобы модель читалась в игре при разном освещении и на разных дистанциях, детали добавляют по уровням:

  • Первичные формы: крупные массы, пропорции, силуэт.
  • Вторичные формы: основные выступы/впадины, разделение на части, функциональные элементы.
  • Третичные формы: мелкие фаски, царапины, микрорельеф (часто лучше через normal/roughness, а не геометрией).
  • Практическое правило: если первичные формы слабые, третичные детали не спасут — объект останется «нечитабельным».

    Силуэт, пропорции и «читаемость»

    Силуэт — это форма объекта в контуре. В геймдеве силуэт важен, потому что:

  • игрок часто видит объект издалека;
  • детали «съедаются» постобработкой, освещением, разрешением;
  • в динамике мозг быстрее распознаёт крупные формы.
  • Проверки, которые стоит делать прямо в DCC:

  • смотреть модель в полностью чёрном материале (без текстур);
  • сравнивать с примитивами (куб, цилиндр) для контроля пропорций;
  • переключаться на «далёкую камеру» (имитация игрового расстояния).
  • Блокинг как часть моделинга, а не отдельная «черновая стадия»

    Блокинг — это ранняя версия модели из простых примитивов. Он нужен не только новичкам:

  • быстрее выявляет ошибки масштаба и пропорций;
  • упрощает согласование с геймдизайном (проходит ли персонаж, не мешает ли пропс);
  • позволяет раньше начать тест в движке.
  • Связь с пайплайном из прошлой статьи простая: блокинг — это самый дешёвый момент, чтобы исправить масштаб, пивот и габариты до того, как вы вложились в детализацию.

    Топология: как геометрия влияет на качество и производительность

    Топология — это структура сетки: как расположены рёбра и полигоны, как они «текут» по поверхности. В играх топология важна по двум причинам:

  • визуальная: влияет на шейдинг, отражения, качество normal map и наличие артефактов;
  • техническая: влияет на деформацию (скиннинг), оптимизацию и предсказуемость экспорта.
  • Полигоны: треугольники, квады и N-gon

  • Треугольники (triangles): конечный формат, в котором GPU всё равно рисует геометрию. В игровых мешах треугольники нормальны и неизбежны.
  • Квады (quads): удобнее для моделинга и особенно для сабдив-моделинга и ретопологии.
  • N-gon (полигон с 5+ сторонами): может быть допустим на плоских участках, но часто создаёт непредсказуемую триангуляцию и артефакты при запекании/шейдинге.
  • Практический ориентир:

  • для hard-surface важны контролируемые ребра, фаски и стабильный шейдинг;
  • для organic важен «поток» лупов вокруг суставов и мимики.
  • Edge flow и лупы

    Edge flow — это логика направления рёбер по форме. Loop — замкнутый ряд рёбер, который можно удобно выделять и поддерживать.

    Хороший edge flow:

  • поддерживает форму без лишних полигонов;
  • помогает деформироваться (если объект будет анимироваться);
  • уменьшает «ломаные» блики на гладких поверхностях.
  • Полюса (poles) и где их прятать

    Pole — вершина, в которой сходится много рёбер (обычно 5+). Полюса не являются «ошибкой», но они часто дают:

  • локальные артефакты сглаживания;
  • сложность при деформации.
  • Правило размещения:

  • избегайте полюсов на областях сильных бликов (глянцевые детали hard-surface);
  • избегайте полюсов на участках, которые будут сильно гнуться (локти, колени, плечи);
  • прячьте полюса на менее заметных плоскостях или в местах естественных изломов формы.
  • Шейдинг: почему «геометрия нормальная, но выглядит плохо»

    Даже при правильной форме модель может давать «грязные» переливы. Частые причины:

  • неверные нормали (перевёрнутые или «сломанные»);
  • слишком резкие переходы без фаски;
  • непоследовательное сглаживание (hard/soft edges, smoothing groups);
  • неконтролируемая триангуляция.
  • Для геймдева важна привычка: смотреть модель в условиях, близких к игровым — с HDRI/направленным светом, на контрастном материале, с включёнными отражениями.

    !Поясняет, почему фаски критичны для красивого шейдинга в игре

    Hard-surface моделинг: техника и контроль поверхности

    Hard-surface — это твёрдые объекты: оружие, техника, мебель, механизмы, архитектурные элементы. Их особенности:

  • много плоскостей и чётких граней;
  • важны аккуратные фаски (bevel/chamfer) и качество бликов;
  • часто используется запекание с highpoly на lowpoly.
  • Базовые подходы в hard-surface

  • Box modeling: построение формы из примитивов (куб/цилиндр) с постепенным уточнением.
  • Subdivision modeling: моделинг под сглаживание (SubD), где форму удерживают поддерживающие рёбра.
  • Boolean workflow: вырезы/вставки через булевы операции с последующей чисткой/ретопологией.
  • Обычно в продакшене эти подходы смешиваются: например, highpoly делают через SubD+booleans, а lowpoly — вручную под запекание.

    Фаски (bevel) как «обязательная физика»

    В реальном мире почти нет идеально острых граней: даже микрофаска меняет блик. В играх фаски нужны по двум причинам:

  • делают объект реалистичнее и «дороже» визуально;
  • стабилизируют нормали и блики (особенно на металле).
  • Типовая ошибка новичка: оставить острые 90° углы на модели и пытаться «вытянуть» вид текстурами.

    Highpoly/Lowpoly и запекание в контексте hard-surface

    Термины:

  • Highpoly: детальная модель для получения карты нормалей и других запекаемых карт.
  • Lowpoly: игровая модель с оптимальным числом полигонов, на которую «переносят» детали через normal map.
  • Что важно для качества запекания:

  • lowpoly должен хорошо описывать силуэт и ключевые плоскости;
  • резкие углы часто требуют либо фаски на lowpoly, либо корректной настройки жёстких рёбер и UV-разрезов;
  • триангуляция должна быть контролируемой (лучше зафиксировать до запекания и экспорта, чтобы результат не «поплыл»).
  • «Плавающие» детали (floaters) и где они уместны

    Floaters — отдельные элементы highpoly (болты, надписи, панели), которые не соединены с основной геометрией. Это ускоряет работу, но требует аккуратности:

  • floaters хороши для мелкой механической детализации;
  • они плохо подходят там, где деталь влияет на силуэт;
  • при запекании важно следить за пересечениями и расстоянием до поверхности.
  • Organic моделинг: анатомия, скульпт и ретопология

    Organic — это персонажи, существа, органические формы (ткань, кожа, растения с плавными переходами). Особенности:

  • главная сложность — правдоподобные объёмы;
  • детали часто делаются скульптом;
  • почти всегда требуется ретопология под анимацию.
  • От формы к деталям: почему анатомия важнее «мышц кисточкой»

    Даже в стилизации анатомия помогает:

  • правильно распределить массы (грудная клетка, таз, конечности);
  • удерживать пропорции при позинге;
  • избежать «резиновой» формы.
  • Практика: сначала добейтесь убедительных первичных форм (голова, торс, руки/ноги), и только потом переходите к вторичным и третичным.

    Скульпт vs полигональный моделинг

    Частый рабочий путь для персонажа:

  • блокинг силуэта;
  • скульпт крупной формы;
  • уточнение вторичных форм;
  • детализация (поры, складки, шрамы) — по необходимости;
  • ретопология под lowpoly;
  • UV и запекание.
  • Скульпт удобен тем, что не «держит» вас топологией на раннем этапе. Но он почти всегда требует ретопологии для игрового меша.

    Ретопология: зачем и что считать «хорошей»

    Ретопология — создание новой, чистой низкополигональной сетки поверх скульпта/высокодетальной модели.

    Критерии хорошей ретопологии:

  • правильные лупы вокруг суставов (локти, колени, плечи);
  • лупы вокруг рта и глаз (для мимики);
  • плотность сетки там, где нужна деформация, и экономия там, где форма почти не меняется;
  • ровный размер полигонов без «тонких длинных» треугольников на деформируемых местах.
  • !Показывает базовую логику топологии лица для анимации

    Продвинутые практики, которые повышают качество и скорость

    Модульность и повторное использование

    Даже на уровне моделинга полезно думать как геймдев:

  • повторяемые элементы (панели, болты, сегменты архитектуры) лучше делать модульно;
  • симметрию используйте, пока она не мешает уникальности;
  • одинаковые детали должны иметь одинаковые правила фасок и шейдинга, иначе набор «рассыпается» визуально.
  • Детализация: где геометрия, а где текстура

    Общее правило оптимизации:

  • силуэт и крупные изломы — геометрия;
  • мелкий рельеф и микроцарапины — normal/roughness;
  • повторяющиеся паттерны — тайловые материалы, где возможно.
  • Контроль «экспортной стабильности»

    Чтобы модель не ломалась при экспорте/импорте (логика из предыдущей статьи про пайплайн), держите привычку:

  • фиксировать трансформации и масштаб в сцене до экспорта;
  • проверять нормали и сглаживание;
  • не оставлять скрытые дубликаты и мусор;
  • тестировать импорт на ранних версиях, а не в конце.
  • Мини-чек-листы по итогам (для ежедневной работы)

    Чек-лист формы

  • силуэт читается на расстоянии;
  • первичные формы убедительны без текстур;
  • вторичные формы добавляют функциональность, а не шум;
  • детали не ломают пропорции.
  • Чек-лист топологии

  • нет проблемных N-gon на изогнутых/важных участках;
  • полюса не стоят в местах бликов и сильной деформации;
  • триангуляция предсказуема (особенно перед запеканием);
  • шейдинг чистый при контрастном освещении.
  • Чек-лист hard-surface

  • есть фаски там, где должен быть блик;
  • highpoly и lowpoly логично разделены;
  • плоскости ровные, отражения не «плывут»;
  • мелкие элементы по возможности вынесены в текстуру.
  • Чек-лист organic

  • формы читаются без микродетали;
  • топология поддерживает деформацию (суставы/мимика);
  • плотность сетки распределена по задачам;
  • ретопология сделана под будущую анимацию/LOD.
  • Полезные официальные источники

  • Blender Manual: Modeling
  • Blender Manual: Retopology
  • Blender Manual: Subdivision Surface Modifier
  • Итоги

    Моделинг для геймдева — это баланс формы, топологии и производственных ограничений. Форма отвечает за читаемость, топология — за шейдинг, деформацию и предсказуемость пайплайна, а различие hard-surface и organic диктует разные техники: контроль плоскостей и фасок против анатомии, скульпта и ретопологии. Дальше по курсу эти принципы будут напрямую использоваться в UV, запекании и текстурировании: чем чище моделинг, тем меньше “магии” нужно на следующих этапах.

    3. High-poly и Low-poly: детализация, ретопология и оптимизация

    High-poly и Low-poly: детализация, ретопология и оптимизация

    Зачем разделять модель на High-poly и Low-poly

    В прошлых темах мы говорили о пайплайне ассета и о том, как форма и топология влияют на качество. Теперь соберём это в одну практическую связку: детализация без лишней геометрии.

    High-poly и Low-poly — это не «две версии на всякий случай», а производственный приём:

  • High-polyдетальная модель, на которой вы делаете фаски, вырезы, мелкие панели, штампы, скульпт-детали.
  • Low-polyигровая модель, которая хорошо держит силуэт, имеет чистый шейдинг и оптимальное число треугольников.
  • Связующий мост между ними — запекание карт: перенос визуальных деталей с high-poly на low-poly через текстуры (чаще всего normal map и вспомогательные карты).

    Ключевая идея: игра рендерит low-poly, но выглядит он так, будто детальнее — за счёт карт и материалов.

    !Схема показывает связь high-poly, запекания и low-poly

    Что именно считается high-poly и low-poly

    High-poly

    High-poly может быть получен разными способами:

  • hard-surface: SubD, bevel, booleans, floaters (отдельные «накладные» детали)
  • organic: скульпт с деталями кожи, складок, пор
  • Для high-poly важнее всего качество формы и фасок, а не «правильная» игровая топология.

    Low-poly

    Low-poly — это уже инженерная часть ассета:

  • контролируемый силуэт
  • предсказуемый шейдинг (нормали, сглаживание)
  • правильные UV
  • допустимый вес по треугольникам и материалам
  • Важно: low-poly почти всегда в итоге триангулируется при рендере, поэтому задача художника — сделать так, чтобы эта триангуляция не ломала шейдинг и запекание (то есть она должна быть стабильной и ожидаемой).

    Какие карты обычно запекают и зачем

    Запекание — это вычисление текстур по отношению между high-poly и low-poly. Набор карт зависит от проекта, но базовый список встречается очень часто.

    | Карта | Что хранит | Зачем нужна в геймдеве | |---|---|---| | Normal | Направления микрорельефа | Имитирует мелкие формы без геометрии | | AO (Ambient Occlusion) | Самозатенение в углублениях | Добавляет глубину, часто как маска для текстурирования | | Curvature | Выпуклости/впадины по форме | Быстрое создание потёртостей и акцентов | | Position/Thickness | Позиция/толщина (если запекается) | Полезно для масок, грязи, износа, SSS в некоторых стилях |

    На практике для старта достаточно уверенно освоить normal и AO, а curvature — как ускоритель текстурирования.

    Официальная база по нормалям и многим связанным терминам: Blender Manual: Normals

    Ретопология: что это такое и когда она нужна

    Ретопология — создание новой, чистой low-poly сетки поверх high-poly (или скульпта), чтобы модель:

  • корректно освещалась
  • адекватно деформировалась (если это персонаж)
  • хорошо разворачивалась в UV
  • давала стабильное запекание
  • Ретопология почти обязательна в двух случаях:

  • organic-персонажи и существа: нужен правильный edge flow под анимацию
  • скульпт или «грязный» high-poly: скульпт-сетка непригодна как игровой меш
  • В hard-surface ретопология может быть как обязательной, так и нет — зависит от того, насколько «чистый» low-poly вы можете получить сразу при моделинге.

    Полезный раздел документации: Blender Manual: Retopology

    Два рабочих подхода: hard-surface и organic

    Hard-surface: типовой путь

    У hard-surface основная цель — красивые блики и чистые плоскости.

    Частый пайплайн:

  • High-poly: фаски, булевы вырезы, панели, гравировки, винты (в том числе floaters)
  • Low-poly: сохранение силуэта, упрощение мелочи, контроль жёстких/мягких граней
  • UV: разрезы там, где нужны жёсткие грани и где логичны швы
  • Bake: normal/AO/curvature
  • Проверка шейдинга и результата в движке
  • В hard-surface типичная ошибка — пытаться сохранить все «пазики и панельки» геометрией на low-poly. Чаще выгоднее перенести это в normal.

    Organic: типовой путь

    У organic главная цель — правдоподобные объёмы + деформация.

    Частый пайплайн:

  • Блокинг и скульпт первичных форм
  • Скульпт вторичных форм (мышечные массы, складки)
  • Ретопология под анимацию
  • UV
  • Bake деталей скульпта в normal (и иногда displacement для неигровых задач)
  • Для organic критично, чтобы low-poly имел лупы вокруг суставов и мимики, иначе даже хороший normal не спасёт «резиновую» анимацию.

    Что чаще всего ломает запекание

    Запекание выглядит «магией», пока не понять, что оно очень чувствительно к базовой дисциплине моделинга из прошлой статьи: нормали, фаски, чистая топология и предсказуемая триангуляция.

    Несовпадение шейдинга: hard edges и UV-разрезы

    В игровых ассетах есть практическое правило:

  • если грань жёсткая (резкий переход нормали), то на этом месте чаще всего нужен UV-разрез
  • Почему: normal map хранит детали в рамках UV-острова. Если вы оставите жёсткий угол внутри одного острова, вы получите артефакты из-за того, как движок интерпретирует сглаживание и нормали.

    Это не «закон природы», но очень надёжный ориентир для стабильного результата.

    «Взрывы» и пересечения

    Если части модели находятся слишком близко или пересекаются, лучи при запекании могут попадать «не туда», и появляются грязные пятна.

    Типовые решения:

  • разнести детали на high-poly (или использовать floaters аккуратнее)
  • запекать по частям
  • использовать корректно настроенный cage (оболочку лучей)
  • Нестабильная триангуляция

    Если low-poly по-разному триангулируется в DCC, в бейкере и в движке, normal map может «поплыть».

    Практический подход:

  • зафиксировать триангуляцию low-poly перед финальным бейком и экспортом
  • не менять топологию после запекания
  • Плохой low-poly силуэт

    Normal не меняет силуэт. Если объект должен читаться по контуру, контур обязан быть геометрией.

    Пример: круглую ручку нельзя сделать «квадратом с normal» так, чтобы она выглядела круглой в контуре — в профиль будет видно упрощение.

    Оптимизация low-poly: что реально важно в игре

    Оптимизация — это не только «меньше треугольников». На финальный FPS влияют и материалы, и количество объектов, и размер текстур. Но 3D-художник чаще всего контролирует три зоны: геометрию, UV/текстуры и подготовку под LOD/коллизии.

    Геометрия: тратьте полигоны там, где они дают результат

    Полезные ориентиры:

  • полигоны тратятся на силуэт, крупные изломы формы и зоны бликов
  • плоские участки и скрытые области упрощаются первыми
  • повторяющиеся мелкие детали лучше переносить в normal (или делать модульно)
  • Материалы и количество draw calls

    Каждый отдельный материал на меше может увеличивать стоимость отрисовки (зависит от движка и батчинга). Поэтому часто выгоднее:

  • объединять материалы там, где это возможно
  • использовать текстурные атласы или trim sheets (если стиль и пайплайн проекта это поддерживают)
  • Официальные руководства по импортам и настройкам полезны как контрольная точка:

  • Unity Manual: Importing a model
  • Unreal Engine Documentation
  • UV и «плотность» деталей

    Тексельная плотность — это простыми словами, насколько много пикселей текстуры приходится на единицу площади модели. Важно не число, а консистентность:

  • одинаковые по важности детали должны иметь похожую детализацию
  • геро-объекты получают больше плотности, фоновые — меньше
  • не тратьте UV-площадь на невидимые днища, внутренности, закрытые части
  • LOD и коллизия: заранее думайте о будущем

    Из первой статьи: игровой ассет часто включает LOD и коллизию. High/low подход помогает и здесь:

  • low-poly уже проще адаптировать под LOD-цепочку
  • если силуэт и логика форм адекватны, LOD будет «плавно» деградировать
  • коллизия почти всегда строится как отдельные простые примитивы или упрощённые меши
  • !Иллюстрация показывает логику упрощения LOD

    Практический мини-чек-лист перед запеканием

  • high-poly и low-poly совпадают по форме там, где это влияет на нормали
  • low-poly имеет чистые нормали и понятное сглаживание
  • жёсткие грани согласованы с UV-разрезами
  • нет критических пересечений и «слипшихся» деталей
  • триангуляция low-poly зафиксирована и не будет меняться
  • UV без сильных растяжений на видимых местах
  • Итоги

    High-poly/Low-poly — это центральная техника геймдев-моделинга, которая соединяет принципы формы и топологии с требованиями производительности. High-poly отвечает за качество деталей и фасок, low-poly — за силуэт, шейдинг, UV и предсказуемый импорт. Ретопология делает low-poly пригодным для игры, а грамотное запекание переносит детализацию в карты без лишней геометрии. Освоив этот блок, вы будете готовы к следующим этапам пайплайна: UV, запеканию в конкретных инструментах и текстурированию PBR.

    4. UV-развертка и подготовка к запеканию карт

    UV-развертка и подготовка к запеканию карт

    Зачем UV в геймдеве и почему это часть качества, а не формальность

    В прошлых статьях курса мы разобрали пайплайн ассета, принципы формы и топологии, а также связку high-poly → запекание → low-poly. UV-развёртка — это шаг, который переводит 3D-поверхность в 2D-координаты, по которым работают текстуры и запекание.

    В геймдеве UV решает сразу несколько задач:

  • Качество текстур: где на модели будет высокая детализация, а где можно сэкономить.
  • Стабильность запекания: корректная normal map без швов и артефактов.
  • Производительность: разумные размеры текстур, меньше материалов, предсказуемая упаковка.
  • Если UV сделаны плохо, вы получите типичные симптомы:

  • заметные швы на normal map и на цвете;
  • растяжения узоров (дерево, ткань, камень);
  • «грязь» и полосы после запекания;
  • лишний расход текстурной площади и памяти.
  • Базовые понятия UV простыми словами

    Что такое UV-координаты

    UV — это координаты точки на поверхности модели в 2D-пространстве текстуры:

  • U — горизонтальная ось текстуры;
  • V — вертикальная ось текстуры.
  • Каждая вершина меша в UV-канале получает пару координат (U,V), и по ним движок понимает, какой пиксель текстуры использовать.

    UV-острова, швы и разрезы

  • UV-остров — отдельный кусок развертки на 2D-плоскости.
  • Шов (seam) — место, где поверхность «разрезана», чтобы развернуться без сильных искажений.
  • Разрез UV — результат применения шва: ребро/граница между островами.
  • Практическая цель швов — спрятать неизбежные разрывы в наименее заметных местах.

    Несколько UV-каналов

    У одной модели может быть несколько наборов UV:

  • UV0 (первый канал) — почти всегда для материалов и запекания (albedo/normal/roughness и т.д.).
  • UV1 (второй канал) — часто для lightmap (статическое освещение), если проект это использует.
  • В Unity, например, отдельный UV-канал под лайтмапы является типовой практикой: Unity Manual: Lightmapping

    Требования геймдева к хорошей UV-развёртке

    Минимум растяжений и предсказуемая форма островов

    Растяжение означает, что равные участки поверхности получают неравную площадь на текстуре. Это даёт:

  • «плывущий» масштаб текстуры;
  • ухудшение читаемости деталей;
  • проблемы при procedural-текстурировании и масках.
  • Допустимо немного растяжения на скрытых областях, но на видимых поверхностях стремитесь к ровной развертке.

    Контроль швов

    Швы неизбежны. Важно сделать их логичными:

  • прячьте швы в стыках деталей, под выступами, на нижних/задних частях;
  • ориентируйте швы по реальным линиям конструкции (панели, стыки, швы ткани);
  • не делайте множество мелких островов без необходимости: ими сложно управлять при текстурировании.
  • Единая детализация через тексельную плотность

    Тексельная плотность — это согласованность детализации: чтобы одинаково важные части модели имели похожую «резкость» текстур.

    Практические правила:

  • геро-части (куда смотрит игрок) получают больше UV-площади;
  • низ, внутренности, редко видимые зоны получают меньше;
  • если две детали стоят рядом в кадре и сделаны из одного материала, их плотность должна быть близкой.
  • Паддинг (отступы) между островами

    Паддинг — пустое пространство вокруг острова при упаковке. Он нужен, чтобы при мипмаппинге и фильтрации не «затекали» пиксели соседних островов.

    Ориентиры:

  • чем меньше текстура и чем дальше объект будет виден, тем важнее паддинг;
  • при запекании обычно добавляют отступ в пикселях (часто 8–16 px для 2K как стартовый ориентир), но финальное значение зависит от проекта.
  • Связь UV и запекания: почему швы появляются именно на normal map

    Запекание (bake) переносит информацию с high-poly на low-poly через UV. Любой разрыв UV — потенциальный разрыв в запечённых данных.

    Ключевая связка из предыдущей темы про high/low:

  • normal map кодирует мелкие формы;
  • она чувствительна к сглаживанию, тангентам и UV-разрывам;
  • поэтому UV должны соответствовать тому, как меш будет освещаться.
  • !Иллюстрация связи жёстких граней, UV-разрезов и артефактов normal map

    Жёсткие грани, сглаживание и UV-разрезы

    Что такое жёсткие и мягкие грани

    На low-poly вы задаёте, где поверхность сглаживается, а где должна быть «ломаная» грань:

  • мягкая грань — плавный переход нормалей (гладкий блик);
  • жёсткая грань — резкий переход нормалей (чёткий перелом блика).
  • Разные DCC называют это по-разному (smoothing groups, hard/soft edges), но смысл один.

    Практическое правило для стабильного бейка

    Часто работает правило:

  • жёсткая грань на low-poly обычно требует UV-разреза на том же ребре
  • Это снижает риск швов и «ломаных» бликов на normal map, потому что внутри одного UV-острова движок ожидает непрерывное сглаживание.

    Возможны исключения, но как базовый стандарт для большинства игровых пайплайнов это правило очень надёжно.

    Почему важны одинаковые тангенты

    Normal map в играх обычно работает в tangent space, где важна согласованность вычисления тангентного базиса между:

  • программой, где вы запекаете;
  • движком, где вы рендерите.
  • Распространённый стандарт — MikkTSpace: MikkTSpace (репозиторий)

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

    Как планировать UV: подходы для hard-surface и organic

    Hard-surface

    Цели:

  • контролируемые швы по конструктивным линиям;
  • минимизация заметных разрывов на больших глянцевых плоскостях;
  • предсказуемость запекания панелей и фасок.
  • Практика разметки швов:

  • разрезайте по естественным границам: панели, стыки, кромки деталей;
  • на цилиндрах и трубах делайте один продольный шов в менее видимом месте;
  • большие плоскости старайтесь держать одним островом, если нет сильного искажения.
  • Organic

    Цели:

  • минимальные искажения на лице и открытых участках;
  • швы прячутся в местах естественных переходов (за ушами, по линии волос, под одеждой);
  • удобство текстурирования кожи/тканей.
  • Практика:

  • лицо часто разворачивают отдельным островом или группой островов с приоритетом качества;
  • швы у органики лучше вести по менее заметным «теневым» зонам, а не по центру крупных форм.
  • Упаковка UV: как использовать текстуру эффективно

    Ориентация и выравнивание

  • острова можно выравнивать по осям, если это помогает текстурированию (например, дерево, ткань, полосы);
  • избегайте хаотичных поворотов, если художнику нужно рисовать направленные детали;
  • не жертвуйте качеством ради идеальной «ровности»: важнее отсутствие сильных искажений.
  • Перекрытие (overlap) и зеркальные UV

    Перекрытие островов экономит место, но имеет ограничения.

    Разрешённые сценарии:

  • симметрия (левая и правая часть одинаковые) для экономии текстуры;
  • стек одинаковых деталей (одинаковые болты/винты), если они действительно должны выглядеть одинаково.
  • Запрещающие факторы:

  • уникальные повреждения и грязь (если нужно различать стороны);
  • запекание AO/curvature в уникальном виде (перекрытие может дать неверные карты);
  • лайтмапы (для них overlap обычно недопустим).
  • Атласы и trim sheets

    В оптимизации геймдева UV часто подчиняются материалам:

  • текстурный атлас — несколько объектов или деталей в одной текстуре ради уменьшения материалов и draw calls;
  • trim sheet — текстура-полосы для повторяемых кромок/панелей (часто для окружения).
  • Это отдельная большая тема, но важно понимать: UV — это не только «разложить красиво», но и поддержать стратегию материалов проекта.

    Подготовка low-poly к запеканию: пошаговый чек-лист

    Ниже — порядок, который помогает избежать большинства проблем. Он связан с предыдущими темами курса: топология, шейдинг, high/low и экспорт.

  • Проверить масштаб и соответствие high-poly и low-poly по форме в ключевых местах.
  • Привести low-poly к чистому шейдингу: нормали, сглаживание, отсутствие мусорной геометрии.
  • Настроить жёсткие грани и сделать UV-разрезы в согласованных местах.
  • Сделать UV-развёртку без критических растяжений на видимых участках.
  • Упаковать острова с паддингом.
  • Зафиксировать то, что влияет на бейк: не менять топологию после финального запекания.
  • Технические детали запекания, которые стоит знать до старта

    Triangulation

    Движок рендерит треугольниками. Если триангуляция меняется между:

  • DCC,
  • бейкером,
  • движком,
  • то normal map может выглядеть иначе.

    Практика:

  • контролируйте триангуляцию на финальном low-poly до запекания и экспорта;
  • не перестраивайте сетку после финального бейка.
  • Cage и расстояние проекции

    При запекании лучи «проецируют» детали high-poly на low-poly. Чтобы они попадали правильно:

  • используют cage (оболочку) или настройку расстояния;
  • слишком маленькое расстояние даст пропуски;
  • слишком большое — «захватит» соседние детали.
  • Если появляются грязные пятна, часто причина в пересечениях или неверном cage.

    Взрывной бейк (exploded bake)

    Если у вас много деталей рядом и лучи цепляют соседние части, применяют приём:

  • временно раздвинуть части модели в стороны,
  • запечь карты,
  • вернуть на место.
  • Это особенно полезно для hard-surface со сложной сборкой.

    Сопоставление по именам

    В большинстве бейкеров можно запекать по соответствию имён (например, отдельные high/low части). Это снижает пересечения лучей между деталями.

    Смысл правила простой: бейкер должен понимать, какая high-деталь относится к какой low-детали.

    Типовые ошибки UV и быстрые способы диагностики

    | Симптом | Частая причина | Что проверить в первую очередь | |---|---|---| | Видимый шов на normal map | жёсткая грань без UV-разреза, различие тангентов | соответствие hard edges и seams, MikkTSpace | | «Волны» и рябь на плоскости | плохие нормали, лишние ребра, искажения UV | шейдинг low-poly, растяжение UV | | Пиксели «затекают» на границе острова | мало паддинга, неверный dilation | padding при паковке, параметры dilate/bleed | | AO грязнит там, где не должно | пересечения, неверный cage | пересечения деталей, exploded bake | | Текстура кажется разного масштаба на частях модели | разная тексельная плотность | сравнение площади островов на важных деталях |

    Практические источники

  • Blender Manual: UV Unwrapping
  • Blender Manual: UV Editing
  • Unity Manual: Normal maps
  • MikkTSpace (репозиторий)
  • Итоги

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

  • минимизирует растяжения и прячет швы;
  • держит согласованную тексельную плотность;
  • учитывает жёсткие грани, сглаживание и требования normal map;
  • упакована с достаточным паддингом;
  • подготовлена так, чтобы запекание было стабильным (триангуляция, cage, отсутствие пересечений).
  • Дальше по курсу логичный следующий шаг — практика запекания конкретных карт и последующее текстурирование PBR, где качество UV сразу станет заметно в результате.

    5. Запекание (baking) и PBR-текстурирование: материалы и карты

    Запекание (baking) и PBR-текстурирование: материалы и карты

    Как эта тема связана с предыдущими шагами пайплайна

    Ранее в курсе мы собрали базовый пайплайн ассета, разобрали форму и топологию, затем связку high-poly → low-poly, ретопологию и UV-развёртку. Теперь мы закрываем ключевой производственный мост между геометрией и финальным видом в движке: запекание карт (baking) и PBR-текстурирование.

    Логика простая:

  • Low-poly отвечает за силуэт, шейдинг и производительность.
  • High-poly хранит всю мелкую форму, фаски и микродетали.
  • Baking переносит часть информации с high-poly на текстуры.
  • PBR превращает набор текстур в материал, который предсказуемо реагирует на свет в Unity или Unreal.
  • !Схема связывает high/low, запекание, PBR-текстуры и итог в движке

    Что такое запекание и что именно мы запекаем

    Запекание (baking) это вычисление текстур по отношению между двумя моделями или между моделью и её UV.

    Самые частые варианты:

  • Запекание с high-poly на low-poly для переноса формы.
  • Запекание внутренних карт low-poly (например, curvature по самой low-poly) для ускорения текстурирования.
  • Базовые карты запекания

    | Карта | Что хранит | Зачем используется | |---|---|---| | Normal (tangent space) | Направление микрорельефа поверхности | Имитирует фаски, гравировки и мелкую форму без геометрии | | AO (Ambient Occlusion) | Самозатенение в углублениях | Маска для грязи, пыли, усиления глубины | | Curvature | Выпуклости и впадины по форме | Быстрое создание потёртостей по рёбрам и акцентов | | World Space Normal | Нормали в мировом пространстве | Вспомогательная карта для масок и процедурных эффектов | | Position | Позиция пикселя (обычно в 3 каналах) | Маски по высоте, градиенты, эффекты загрязнения | | Thickness | Приблизительная толщина | Маски для воска, тонких материалов, некоторых стилизаций | | ID map | Цветовые зоны материалов | Быстрое выделение частей модели по материалам |

    В большинстве игровых пропсов стартового уровня достаточно уверенно делать Normal + AO + Curvature, а остальное подключать по задаче.

    Основа качества: тангентное пространство и MikkTSpace

    В играх normal map чаще всего работает в tangent space. Это означает, что normal-карта интерпретируется через локальный базис поверхности: tangent, bitangent, normal.

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

    Самый распространённый стандарт вычисления тангентов в пайплайнах для игр это MikkTSpace.

  • Описание и реализация стандарта: MikkTSpace (GitHub)
  • Практический ориентир: старайтесь, чтобы и бейкер, и движок, и DCC были согласованы по тангентам.
  • Подготовка low-poly к запеканию

    Качество запекания почти всегда упирается не в настройки, а в дисциплину подготовки low-poly, которую мы обсуждали в теме про UV.

    Минимальный чек-лист перед бейком

  • Силуэт и форма: low-poly совпадает с high-poly в ключевых плоскостях и по контуру.
  • Шейдинг: нормали корректны, нет случайных переломов блика.
  • Жёсткие грани и UV: где есть жёсткая грань, там обычно есть UV-разрез.
  • Триангуляция: low-poly триангулирован предсказуемо и не будет меняться после финального бейка.
  • UV-паддинг: между островами достаточно отступа, чтобы не было протекания при мипмаппинге.
  • Официальная справка по нормалям в Blender: Blender Manual: Normals

    Cage, расстояние проекции и типовые режимы бейка

    Что такое cage

    При запекании лучи обычно идут от low-poly к high-poly. Cage это специальная оболочка, которая задаёт направление и дистанцию проекции.

  • Слишком маленькая дистанция даёт пропуски деталей.
  • Слишком большая дистанция ловит соседние элементы и даёт грязь.
  • Взрывной бейк

    Если объект состоит из плотной сборки, детали могут мешать друг другу при проекции. Тогда применяют приём exploded bake:

  • Временно раздвинуть части меша так, чтобы они не перекрывали друг друга.
  • Запечь карты.
  • Вернуть части на место.
  • Этот приём особенно полезен для hard-surface (оружие, техника, гаджеты).

    Сопоставление по именам

    Многие бейкеры поддерживают соответствие high/low по именам, чтобы лучи не перескакивали на соседние детали. Это снижает количество артефактов в сложных ассетах.

    Практический порядок запекания

    Ниже порядок, который работает в большинстве связок инструментов и хорошо согласуется с нашим пайплайном.

  • Финализировать low-poly: шейдинг, сглаживание, жёсткие грани, UV, паддинг, триангуляция.
  • Подготовить high-poly: фаски, floaters, чистая форма, отсутствие случайных пересечений.
  • Настроить бейк: выбор карт, разрешение, антиалиасинг, cage или расстояние.
  • Сделать тестовый бейк на небольшом разрешении и проверить проблемные места.
  • Сделать финальный бейк в целевом размере.
  • Проверить карты в рендере: минимум в том же тангентном стандарте, что и движок.
  • Официальная справка Blender по запеканию: Blender Manual: Render Baking

    PBR-текстурирование: что такое материал и какие карты нужны

    PBR (Physically Based Rendering) это подход, где материал описывается параметрами, которые предсказуемо реагируют на освещение.

    Самый распространённый набор карт в играх:

  • Base Color: цвет без теней и бликов.
  • Metallic: где поверхность металл.
  • Roughness: насколько размытые отражения.
  • Normal: микрорельеф.
  • Иногда встречаются:

  • Emissive: самосвечение.
  • Opacity или Alpha: прозрачность.
  • Height: высота для параллакса или специфических шейдеров.
  • Metallic-Roughness и Specular-Glossiness

    Есть две основные схемы описания материалов:

  • Metallic-Roughness: чаще в современных пайплайнах и движках.
  • Specular-Glossiness: встречается в старых пайплайнах и некоторых стилях.
  • Для курса и большинства игровых задач ориентируйтесь на Metallic-Roughness, потому что она проще и распространённее.

    Как читать PBR-карты и не путать физику материала

    Base Color

    Правило: не рисуйте в Base Color запечённые тени и яркие блики. Тени и блики появляются от света, а не от цвета.

    Исключение: стилизованные проекты могут сознательно нарушать это, но тогда это художественное решение, а не PBR-дисциплина.

    Metallic

    Обычно это почти бинарная карта:

  • диэлектрики (дерево, пластик, камень) близко к 0
  • металлы близко к 1
  • Переходные значения используют для грязи, окислов, окрашенных металлов, но не как способ сделать материал просто “посильнее блестящим”.

    Roughness

    Roughness отвечает за ширину и размытость отражений:

  • низкая roughness даёт чёткие отражения
  • высокая roughness даёт матовую поверхность
  • Важно: roughness это не “грязь”, а свойство микрорельефа. Грязь часто меняет roughness, но это следствие, а не причина.

    Normal

    Normal-карта добавляет детали, но не меняет силуэт. Если у объекта плохой контур, normal это не исправит.

    Официальные заметки Unity по normal map и импорту: Unity Manual: Normal maps

    Линейное и sRGB: почему текстуры могут выглядеть неправильно

    В движках разные карты должны интерпретироваться по-разному:

  • Base Color обычно хранится в sRGB (перцептивное пространство).
  • Roughness, Metallic, AO, Normal обычно должны быть в linear (без sRGB-коррекции).
  • Если поставить неправильный режим импорта, roughness или metallic будут “не теми числами”, и материал начнёт выглядеть неадекватно.

    В Unity это задаётся в настройках импорта текстуры. В Unreal многие карты по умолчанию считаются линейными, но Base Color обычно в sRGB.

    Упаковка каналов и оптимизация текстур

    Чтобы экономить память и ускорять рендер, часто делают channel packing, когда разные чёрно-белые карты кладут в разные каналы одной текстуры.

    Типичный пример (варианты зависят от проекта):

  • R = AO
  • G = Roughness
  • B = Metallic
  • Это уменьшает число текстурных выборок и упрощает материалы, но требует дисциплины именования и документирования пайплайна.

    Текстурирование поверх запечённых карт

    Запечённые карты обычно становятся “интеллектуальными масками” для процедурного текстурирования.

    Практический подход к PBR-текстурированию пропса:

  • Задать базовые материалы по зонам: металл, пластик, резина, краска.
  • Использовать Curvature для износа по рёбрам.
  • Использовать AO и Position для пыли и грязи в углублениях и снизу.
  • Добавить микровариации roughness, чтобы поверхность не была “пластиковой”.
  • Проверять материал в освещении, близком к игровому: HDRI, контрастный свет.
  • Документация по PBR-материалам в Unreal: Unreal Engine Documentation: Physically Based Materials

    Проверка качества: как понять, что результат готов для движка

    Тест в нейтральном освещении

    Чтобы не обманываться красивой сценой, проверяйте ассет:

  • в нейтральном HDRI
  • с простым направленным светом
  • на разных углах обзора
  • Типовые красные флаги

    | Симптом | Частая причина | Что сделать | |---|---|---| | Шов на normal | разные тангенты или неверные UV-разрезы | проверить MikkTSpace, согласовать hard edges и seams | | Грязные пятна на AO | пересечения, неверный cage | разнести детали, настроить cage, запекать по частям | | Рябь на плоскости | плохой шейдинг low-poly или нестабильная триангуляция | исправить нормали, зафиксировать триангуляцию | | Материал “пластиковый” | roughness слишком ровный | добавить вариации roughness и микродетали | | Металл выглядит как пластик | metallic не соответствует материалу | metallic близко к 0 или 1 по зонам, корректные маски |

    Рекомендованные форматы и практические настройки

    Эти ориентиры зависят от движка и платформы, но как стартовые практики подходят часто:

  • Normal map: без sRGB, корректный тип normal в движке.
  • Roughness, Metallic, AO: без sRGB, можно паковать по каналам.
  • Разрешение: выбирать по важности ассета и расстоянию (геро-объекты получают больше).
  • Паддинг при бейке: достаточно, чтобы на мип-уровнях не было протекания.
  • Для финального решения всегда сверяйтесь с ограничениями проекта: бюджет текстур, целевая платформа, требования команды.

    Итоги

    Запекание и PBR-текстурирование превращают ваш low-poly меш в полноценный игровой ассет.

  • Baking переносит форму и вспомогательные маски с high-poly на low-poly через UV.
  • Качество бейка зависит от подготовки: шейдинг, UV-разрезы, триангуляция, cage и согласованность тангентов.
  • PBR требует дисциплины карт: Base Color без “нарисованного света”, корректные metallic и roughness, правильный режим sRGB или linear.
  • Оптимизация на уровне текстур часто делается через channel packing и разумные разрешения.
  • Следующий логичный шаг пайплайна после этого блока это сборка ассета в движке: импорт, настройка материалов, проверка под освещением сцены, а также подготовка LOD и коллизии по требованиям проекта.

    6. Шейдинг, LOD, коллизии и проверка ассетов под реальное время

    Шейдинг, LOD, коллизии и проверка ассетов под реальное время

    Как эта тема продолжает пайплайн курса

    В прошлой теме мы довели ассет до состояния low-poly + UV + запечённые карты + PBR-текстуры. Но в геймдеве ассет считается готовым только тогда, когда он:

  • корректно шейдится в реальном времени (без «грязных» бликов, швов и артефактов);
  • имеет LOD (если требуется по дистанции и бюджету);
  • имеет корректные коллизии (физика, навигация, триггеры);
  • проходит проверку в движке: освещение, мипмапы, компрессия, производительность.
  • Эта статья про то, как довести ассет до стадии production-ready.

    !Общая карта, где шейдинг, LOD и коллизии стоят в пайплайне

    Шейдинг в реальном времени: что это и почему он ломается

    Шейдинг в контексте ассетов для игр это то, как меш взаимодействует со светом в движке: как выглядят блики, градиенты, отражения, и насколько правдоподобно читается форма.

    Чаще всего проблемы проявляются так:

  • на ровной плоскости появляется «волна» или «рябь» в бликах;
  • на ребре виден неожиданный перелом света;
  • normal map выглядит хорошо в бейкере, но плохо в движке;
  • швы UV становятся заметны на нормалях или roughness.
  • Почти всегда причина в сочетании трёх вещей:

  • вершинные нормали (как меш сглаживается);
  • тангенты (как интерпретируется normal map);
  • правила жёстких/мягких граней и соответствие UV-разрезам.
  • Вершинные нормали: основа чистого блика

    Что такое вершинная нормаль

    Нормаль — это направление, которое используется для расчёта освещения. В играх свет считается не «по полигону», а интерполируется по вершинам, поэтому качество вершинных нормалей напрямую влияет на то, насколько ровно и красиво ложится блик.

    Мягкие и жёсткие грани

    На low-poly вы задаёте, где поверхность должна выглядеть гладкой, а где должна быть «ломаной»:

  • мягкая грань даёт плавный переход света;
  • жёсткая грань даёт резкий перелом.
  • Практическая связка из предыдущих тем остаётся критичной:

  • жёсткая грань обычно требует UV-разреза на том же ребре.
  • Это снижает риск швов на normal map и делает поведение меша предсказуемым.

    Почему «ровная плоскость» может бликовать криво

    Типовые причины:

  • лишние диагонали и неудачная триангуляция на плоскости;
  • смешение сглаживания там, где нужны жёсткие грани;
  • некорректные пользовательские нормали после булевых операций;
  • слишком острые углы без фаски, где движок ожидает хоть минимальную геометрию.
  • Полезная справка по редактированию нормалей: Blender Manual: Normals

    Weighted normals и «игровой» трюк для hard-surface

    Weighted normals это приём, когда нормали «подтягиваются» так, чтобы большие плоскости выглядели более ровными, а блик на фаске читался аккуратнее. Это особенно полезно для hard-surface пропсов (ящики, панели, оружие), где хочется «дорогой» ровной поверхности без лишней геометрии.

    Важные ограничения:

  • после изменения нормалей нельзя произвольно менять топологию, иначе шейдинг может поплыть;
  • при запекании normal map важно, чтобы бейкер и движок работали согласованно по тангентам.
  • Тангентное пространство и normal map: почему в движке может быть хуже

    Normal map в играх чаще всего работает в tangent space. Это значит, что движок интерпретирует normal map через базис поверхности: нормаль, тангент и битангент.

    Если тангенты считаются по-разному в разных местах пайплайна, появляются:

  • швы на нормалях;
  • «переломы» на местах, где в DCC было гладко;
  • различия между предпросмотром и движком.
  • Практический стандарт, к которому стремятся многие пайплайны, это MikkTSpace. Если вы запекали карты с расчётом под MikkTSpace, стоит убедиться, что движок и импорт используют совместимый расчёт.

    Справка по стандарту: MikkTSpace (GitHub)

    Частая ловушка: OpenGL vs DirectX normal

    Разные инструменты могут ожидать разную ориентацию канала Y (зелёный канал). Симптом: все вдавленные детали выглядят выпуклыми или наоборот.

    Правило работы:

  • фиксируйте в проекте, какой стандарт normal map используется;
  • проверяйте это на тестовом ассете в движке до массового производства.
  • Справка по normal map и импорту в Unity: Unity Manual: Normal maps

    LOD: как снижать детализацию без потери качества

    Что такое LOD

    LOD (Level of Detail) — это набор версий меша разной детализации. Движок переключает их в зависимости от размера объекта на экране или расстояния.

    Зачем это нужно:

  • экономия треугольников и времени рендера на дальних дистанциях;
  • снижение нагрузки на видеопамять и шейдеры, если LOD включает упрощение материалов;
  • стабильный FPS в сценах с большим количеством объектов.
  • Где LOD реально нужен

    Ориентиры:

  • повторяющиеся пропсы окружения почти всегда выигрывают от LOD;
  • герой-объекты иногда можно оставить без LOD, если они всегда близко к камере;
  • деревья, скалы, архитектура и крупные декоры почти всегда требуют LOD в реальных проектах.
  • Принципы хорошего LOD

  • LOD снижает внутреннюю детализацию сильнее, чем силуэт.
  • Чем дальше объект, тем менее важны мелкие фаски и небольшие вырезы.
  • LOD не должен «прыгать» по шейдингу: лучше плавная деградация формы и нормалей.
  • По возможности сохраняйте одинаковую ориентацию и логику UV, если это важно для материалов.
  • !Как LOD деградирует по деталям, но держит силуэт

    Ручной LOD vs автоматический

    Оба подхода используются:

  • ручной LOD лучше контролирует силуэт, швы, шейдинг и проблемные места;
  • автоматический LOD быстрее, но может ломать плоскости, UV и нормали.
  • Практика продакшена часто такая:

  • для критичных ассетов делают LOD вручную;
  • для массовых фоновых объектов используют автоматизацию, но с ручной проверкой.
  • Как LOD связан с материалами

    LOD может оптимизировать не только геометрию:

  • на дальних LOD можно убрать дорогие детали шейдера;
  • можно снизить детализацию normal map или использовать более простой материал;
  • можно перейти на атлас или упрощённый набор текстур, если пайплайн это поддерживает.
  • Документация по LOD в Unity: Unity Manual: LOD Group

    Документация по LOD в Unreal Engine: Unreal Engine Documentation: Creating and Using LODs

    Коллизии: чтобы объект работал как игровой

    Что такое коллизия

    Коллизия — это упрощённое представление формы для физики, столкновений и иногда для логики (триггеры, взаимодействие). Коллизия почти никогда не должна повторять визуальную сетку один-в-один.

    В играх обычно различают:

  • простую коллизию из примитивов (box, sphere, capsule) или упрощённых выпуклых мешей;
  • сложную коллизию (почти по визуальной сетке), которая дороже и используется ограниченно.
  • Почему нельзя «всегда ставить Mesh Collider по визуалу»

    Потому что это часто приводит к:

  • дорогим вычислениям физики;
  • нестабильным контактам на мелких деталях;
  • неожиданным зацепам персонажа за микрогеометрию.
  • Практика:

  • делайте коллизию максимально простой и функциональной;
  • мелкие выступы чаще игнорируются коллизией, если это не геймплейный элемент.
  • Документация Unity по коллайдерам меша: Unity Manual: Mesh Collider

    Коллизия для модульного окружения

    Для модульных стен, пола, архитектуры полезны правила:

  • коллизия должна стыковаться без щелей;
  • не должно быть микрозазоров, куда «проваливается» капсула персонажа;
  • проще несколько больших боксов, чем много мелких.
  • Коллизия в Unreal и именование

    В Unreal часто используют импорт коллизии из DCC по соглашениям именования (например, наборы UCX_ для выпуклых коллизий). Точные правила и ограничения зависят от версии движка и пайплайна импорта.

    Справка по пайплайну статических мешей и коллизии: Unreal Engine Documentation: FBX Static Mesh Pipeline

    !Понятно показывает, почему коллизия должна быть проще визуала

    Проверка ассета под реальное время: что тестировать в движке

    Проверка импорта как отдельный этап качества

    Даже если в DCC всё выглядит идеально, финальная истина — это движок. После импорта проверьте:

  • масштаб и ориентацию;
  • пивот (удобство размещения, вращения, снап к сетке);
  • наличие и корректность LOD;
  • корректность коллизии;
  • корректность материалов и режимов sRGB/linear для карт.
  • Для общей опоры по импорту моделей в Unity: Unity Manual: Importing a model

    Проверка шейдинга в нейтральных условиях

    Чтобы не обмануться красивым светом сцены, тестируйте ассет:

  • в нейтральном HDRI или простом тестовом освещении;
  • с выключенными «киношными» постэффектами на время проверки;
  • в движении камеры, потому что артефакты бликов часто видны именно в динамике.
  • Красные флаги:

  • «волны» на больших плоскостях;
  • заметные швы normal map;
  • слишком зеркальный или слишком матовый материал из-за неверного импорта roughness/metallic;
  • различие вида normal map между DCC и движком.
  • Проверка текстур: мипмапы, паддинг, компрессия

    В реальном времени текстуры почти всегда используют мипмапы. Поэтому важно смотреть ассет на дистанции:

  • если паддинг UV был мал, на дистанции появятся «затёки» соседних островов;
  • если roughness или normal сильно компрессируются, могут появиться шум и артефакты;
  • если texel density сильно разнится, рядом стоящие детали будут «разной резкости».
  • Производительность: что реально может испортить FPS

    На уровне ассета чаще всего критичны:

  • слишком много материалов на одном объекте;
  • слишком высокая детализация там, где объект почти всегда далеко;
  • отсутствие LOD у повторяющихся объектов;
  • дорогой шейдер без необходимости.
  • Важно понимать терминологию:

  • draw call это упрощённо «команда на отрисовку»; больше материалов и разбиений меша обычно повышают их количество;
  • треугольники напрямую влияют на нагрузку геометрии, но не всегда являются главным узким местом;
  • шейдер и текстуры могут быть дороже геометрии на современных сценах.
  • Финальный чек-лист ассета перед сдачей в проект

    Шейдинг и геометрия

  • нормали корректны, нет артефактов на плоскостях;
  • жёсткие грани согласованы с UV-разрезами;
  • normal map корректно интерпретируется в движке (включая ориентацию каналов);
  • триангуляция low-poly не менялась после финального бейка.
  • LOD

  • LOD переключаются незаметно и без резких «прыжков» шейдинга;
  • силуэт деградирует позже, чем внутренняя детализация;
  • на массовых объектах LOD действительно даёт выигрыш.
  • Коллизии

  • коллизия простая и функциональная;
  • нет микро-«зацепов» и странных провалов;
  • для интерактивных объектов коллизия соответствует геймплейной логике.
  • Проверка в движке

  • корректные режимы импорта текстур (Base Color в sRGB, data-карты в linear);
  • нет швов из-за мипмапов и компрессии;
  • ассет выглядит правильно в нейтральном освещении и в сцене проекта.
  • Итоги

    Шейдинг, LOD, коллизии и проверка в движке — это этап, где ассет превращается из «хорошей модели» в рабочий игровой ресурс.

  • Шейдинг зависит от дисциплины нормалей, сглаживания, жёстких граней, UV и согласованности тангентов.
  • LOD даёт контролируемую производительность и обязателен для многих типов окружения.
  • Коллизии обеспечивают геймплей и физику, и должны быть проще визуала.
  • Проверка в движке выявляет проблемы, которые не видны в DCC: мипмапы, компрессия, реальные условия освещения и стоимость рендера.
  • Если вы внедрите эти проверки как привычку, ваш пайплайн станет стабильнее, а качество ассетов — предсказуемым на уровне проекта.

    7. Экспорт и интеграция в движок: Unity/Unreal, стандарты и финальная сборка

    Экспорт и интеграция в движок: Unity/Unreal, стандарты и финальная сборка

    Зачем отдельная тема про экспорт, если модель уже готова

    В предыдущих статьях вы довели ассет до состояния low-poly + UV + запечённые карты + PBR-текстуры, а затем добавили требования реального времени: шейдинг, LOD, коллизии и проверка качества.

    Экспорт и интеграция в движок — это финальная стадия, где чаще всего «всплывают» системные ошибки пайплайна:

  • неверный масштаб или ориентация осей;
  • сломанный шейдинг из-за тангентов или настроек normal map;
  • перепутанные режимы sRGB/linear у карт;
  • неправильные LOD, коллизии и пивот;
  • лишние материалы, неэффективные текстуры и лишний вес ассета.
  • Задача этой темы — сделать так, чтобы ваш ассет воспроизводимо импортировался и одинаково работал в Unity и Unreal.

    !Схема помогает запомнить, какие части ассета реально должны доехать до движка и где обычно возникают ошибки

    Форматы обмена и что выбирать

    FBX

    FBX — самый распространённый формат для передачи статических мешей, LOD и коллизий в Unity/Unreal.

  • Unity Manual: Importing a model
  • Unreal Engine Documentation: FBX Static Mesh Pipeline
  • glTF

    glTF удобен, когда важна переносимость материалов и PBR-семантики (часто для просмотра, прототипирования, веба и некоторых пайплайнов), но в production под Unity/Unreal чаще всё равно доминирует FBX.

  • Khronos glTF
  • Практическая рекомендация для курса

  • Если ваша цель — типовой геймдев-пайплайн и гарантированный импорт LOD/коллизий: используйте FBX.
  • Если вы строите пайплайн вокруг стандартизированного PBR-обмена и внешних инструментов: рассмотрите glTF, но заранее тестируйте ограничения в конкретном движке.
  • Единицы измерения, оси, пивот: три вещи, которые ломают всё

    Масштаб: Unity и Unreal ожидают разное

  • Unity обычно интерпретирует 1 unit как 1 метр (на практике это правило проекта, но так чаще всего работают уровни и геймплейные метрики).
  • Unreal Engine использует 1 unit как 1 сантиметр.
  • Если вы моделируете «в метрах» и экспортируете в Unreal без контроля, ассеты часто прилетают в 100 раз меньше или больше ожидаемого.

    Практика:

  • заранее фиксируйте стандарт проекта (например, моделинг в метрах);
  • делайте тестовый «эталонный куб» и прогоняйте его через экспорт и импорт;
  • закрепляйте настройки экспорта как часть пайплайна.
  • Оси и ориентация (forward/up)

    Проблема: разные DCC и движки по-разному трактуют «вперёд» и «вверх». Симптом — объект импортируется повернутым на 90°.

    Практика:

  • определите в проекте, какая ось считается Up и какая — Forward;
  • используйте один и тот же пресет экспорта для всех ассетов;
  • проверяйте на простом объекте с явно различимыми сторонами.
  • Пивот

    Пивот влияет на размещение, вращение, снап к сетке и иногда на поведение физики.

    Типовые решения:

  • пропсы, которые стоят на поверхности: пивот у основания;
  • вращающиеся объекты: пивот в центре вращения;
  • модульные детали окружения: пивот на углу или в точке, удобной для снапа.
  • Что именно вы экспортируете как «готовый ассет»

    Чтобы ассет считался production-ready, в составе обычно должны быть:

  • статический меш (low-poly) с корректными нормалями и сглаживанием;
  • UV0 для материалов и запекания;
  • UV1 (если проект использует lightmaps);
  • текстуры PBR (и/или упакованные data-карты);
  • LOD (если требуется);
  • коллизии;
  • предсказуемые имена файлов и материалов.
  • Важный принцип: в движок едет только то, что нужно для реального времени. High-poly и рабочие сцены остаются в Source.

    Подготовка к экспорту: чек-лист перед тем, как нажать Export

    Геометрия и шейдинг

  • применены трансформации (масштаб и поворот приведены к ожидаемому виду);
  • нормали направлены корректно;
  • сглаживание и жёсткие грани настроены осознанно;
  • триангуляция low-poly стабильна, и вы не будете менять сетку после финального запекания;
  • нет скрытого мусора, дубликатов и неиспользуемых объектов.
  • Справка по нормалям в Blender:

  • Blender Manual: Normals
  • UV и запекание

  • UV-разрезы согласованы с жёсткими гранями там, где это нужно для стабильного tangent-space normal;
  • достаточный padding между UV-островами для мипмапов;
  • при необходимости используется MikkTSpace-совместимый пайплайн тангентов.
  • Про тангенты и стандарт:

  • MikkTSpace (GitHub)
  • Именование

    Хорошая практика именования:

  • единый язык (обычно английский);
  • единый стиль (например, SM_name, T_name_type);
  • суффиксы карт: BaseColor, Normal, Roughness, Metallic, AO.
  • Это напрямую ускоряет сборку материалов и снижает шанс ошибок при импорте.

    Экспорт FBX из DCC: что важно зафиксировать

    Параметры экспорта различаются по DCC, но логика одинакова: одни и те же настройки для всех ассетов проекта.

    Официальная документация по экспорту FBX в Blender:

  • Blender Manual: FBX
  • Критичные настройки, которые нужно проверить в тестовом ассете:

  • масштаб (scale) и применение единиц;
  • forward/up оси;
  • экспорт нормалей и тангентов (если ваш пайплайн опирается на них);
  • экспорт smoothing;
  • экспорт LOD как отдельных мешей (если вы так организуете LOD-цепочку);
  • экспорт коллизии как отдельных объектов (актуально для Unreal и некоторых пайплайнов).
  • Импорт и сборка в Unity

    Импорт меша

    В Unity ключевое место — инспектор модели:

  • вкладка Model: масштаб, оси, параметры меша;
  • вкладка Rig не нужна для статических мешей;
  • вкладка Materials: генерация материалов, поиск текстур и правила назначения.
  • Документация:

  • Unity Manual: Importing a model
  • Практика:

  • избегайте автоматической генерации материалов «как попало», если в проекте есть стандарты;
  • лучше заранее понимать, сколько материалов должно быть на объекте и как называются слоты.
  • Импорт текстур: sRGB и тип карты

    В Unity важно, как интерпретируется текстура:

  • Base Color обычно sRGB;
  • Roughness/Metallic/AO/Mask карты обычно linear;
  • Normal map должен быть импортирован как Normal map, иначе шейдинг будет неверным.
  • Документация по normal map:

  • Unity Manual: Normal maps
  • Если вы используете упаковку каналов (например, ORM), зафиксируйте это как стандарт и не смешивайте разные схемы в одном проекте.

    LOD в Unity

    В Unity LOD чаще всего собирается через компонент LOD Group.

  • Unity Manual: LOD Group
  • Практика:

  • проверяйте переключения LOD в движении камеры;
  • следите, чтобы при переходах не возникали резкие «прыжки» шейдинга или силуэта;
  • для массовых пропсов LOD почти всегда оправдан.
  • Коллизии в Unity

    Типовая практика:

  • простые коллайдеры (Box, Sphere, Capsule) дешевле и стабильнее;
  • MeshCollider используйте осознанно и только там, где это оправдано.
  • Документация:

  • Unity Manual: Mesh Collider
  • Финальная сборка: Prefab

    Соберите ассет в Prefab:

  • меш;
  • материалы;
  • коллайдеры;
  • LOD Group (если есть);
  • корректный пивот и позиция относительно земли.
  • Prefab — это та единица, которую удобно размещать в сценах и переиспользовать.

    Импорт и сборка в Unreal Engine

    Импорт статического меша (Static Mesh)

    Unreal даёт много настроек при импорте FBX: сглаживание, normal/tangent, генерация коллизии, импорт LOD.

  • Unreal Engine Documentation: FBX Static Mesh Pipeline
  • Практика:

  • если в вашем пайплайне LOD подготовлены заранее, импортируйте их как LOD-цепочку;
  • всегда проверяйте масштаб, пивот и ориентацию сразу после импорта.
  • Коллизии и соглашения именования

    В Unreal распространён подход: коллизия импортируется из DCC, если объекты названы по конвенции (например, выпуклые оболочки).

  • Unreal Engine Documentation: FBX Static Mesh Pipeline
  • Важно: точные префиксы и ограничения зависят от версии движка и настроек импорта, поэтому конвенцию нужно проверить на тестовом ассете и закрепить в документе проекта.

    LOD в Unreal

    Unreal поддерживает импорт и генерацию LOD, а также настройку дистанций переключения.

  • Unreal Engine Documentation: Creating and Using LODs
  • Практика:

  • оцените LOD в реальной сцене и при реальной скорости движения камеры;
  • следите, чтобы упрощение не ломало нормали и силуэт слишком рано.
  • Материалы PBR в Unreal

    Unreal ожидает физически корректную логику материалов. Проверьте, что:

  • Base Color не содержит «нарисованного освещения»;
  • Metallic близок к 0 для диэлектриков и к 1 для металлов (кроме особых случаев загрязнения и окрашенных слоёв);
  • Roughness имеет вариативность и не выглядит как ровный серый.
  • Документация:

  • Unreal Engine Documentation: Physically Based Materials
  • Финальная сборка: Blueprint или готовый Static Mesh Asset

    Для простых пропсов достаточно статического меша с материалами и коллизией.

    Если объект интерактивный, часто делают Blueprint-обёртку, где фиксируются:

  • дополнительные компоненты (триггеры, VFX, звук);
  • настройки коллизии для геймплея;
  • варианты материалов.
  • Типовые проблемы после импорта и быстрые диагностики

    | Симптом в движке | Частая причина | Что проверить | |---|---|---| | Объект повернут или «лежит на боку» | оси forward/up при экспорте | настройки экспорта и пресет проекта | | Ассет слишком маленький или огромный | несовпадение единиц Unity/Unreal | масштаб DCC, scale при экспорте, import scale | | Швы и переломы normal, которых не было в бейкере | тангенты или hard edges без UV-разрезов | MikkTSpace-совместимость, сглаживание, seams | | Вдавленное стало выпуклым | различие ориентации Y в normal map | настройку normal map в бейкере и движке | | На расстоянии появляются «затёки» по UV | мало padding и dilation | padding при упаковке UV и dilate/bleed при бейке | | Материал выглядит «не так» | неправильный sRGB/linear режим карт | импорт Base Color как sRGB, data-карты как linear |

    Стандарты папок и финальная «сдача ассета»

    Чтобы ассеты не превращались в хаос, полезно иметь минимальный стандарт структуры:

  • Source: рабочие файлы DCC, high-poly, сцены;
  • Exports: FBX/glTF для движка;
  • Textures: финальные карты (или упакованные маски);
  • Engine: префабы/материалы/настройки в Unity или ассеты/материалы в Unreal.
  • Финальный чек-лист готовности ассета

  • меш импортируется без ошибок масштаба, осей и пивота;
  • материалы в движке используют корректные карты и режимы sRGB/linear;
  • normal map выглядит так же, как вы ожидали (без швов и инверсий);
  • LOD переключаются предсказуемо и дают экономию на дистанции;
  • коллизия функциональная и не повторяет визуальную сетку без необходимости;
  • ассет упакован как единица переиспользования (Prefab в Unity или настроенный Static Mesh/Blueprint в Unreal);
  • ассет проверен в нейтральном освещении и в реальной сцене проекта.
  • Итоги

    Экспорт и интеграция — это этап, где техническая дисциплина превращает модель в реальный игровой ассет.

  • FBX остаётся основным форматом для Unity/Unreal в большинстве production-пайплайнов.
  • Критично заранее зафиксировать масштаб, оси и пивот и прогнать тестовый объект.
  • Качество шейдинга после импорта зависит от связки нормали + тангенты + UV-разрезы + hard edges.
  • В движке нужно корректно настроить импорт карт: Base Color как sRGB, а data-карты как linear, normal — как normal.
  • Финальная цель — ассет, который можно безопасно переиспользовать: с материалами, коллизией, LOD и проверкой в реальном времени.