Создание кинжала: от ZBrush до Unreal Engine

Пошаговый курс по созданию игрового ассета оружия. Вы пройдете путь от высокополигонального скульптинга в ZBrush до финальной интеграции и настройки модели в движке Unreal Engine.

1. Скульптинг кинжала в ZBrush: работа с формой и деталями

Скульптинг кинжала в ZBrush: работа с формой и деталями

Создание игрового ассета для Unreal Engine начинается задолго до экспорта файла в движок. Первый и самый творческий этап — создание высокополигональной модели (High Poly) в ZBrush. Именно эта модель станет источником информации о форме, фасках и деталях поверхности, которые мы позже «запечем» в текстурные карты.

Этапы пайплайна: от ZBrush до Unreal Engine

Чтобы «воткнуть» кинжал в Unreal Engine, нельзя просто экспортировать скульпт из ZBrush. Игровые движки не могут обрабатывать модели с миллионами полигонов в реальном времени. Полный цикл выглядит так:

  • High Poly (ZBrush): Скульптинг формы и максимальной детализации.
  • Low Poly (Maya/Blender): Создание оптимизированной сетки поверх скульпта.
  • UV-развертка: Подготовка модели к наложению текстур.
  • Запекание (Baking): Перенос деталей с High Poly на Low Poly через карты нормалей (Normal Map).
  • Текстурирование (Substance Painter): Покраска и создание материалов.
  • Интеграция в Unreal Engine: Импорт и настройка.
  • В этой статье мы фокусируемся на первом пункте — создании идеального исходника.

    Блокинг: фундамент формы

    Любой сложный объект начинается с простых примитивов. Этот этап называется блокингом (Blockout). Ваша задача — набрать общую массу и силуэт кинжала, не отвлекаясь на детали.

    Используйте функцию Append в меню SubTool, чтобы добавить примитивы: * Cube3D для лезвия. * Cylinder3D для рукояти. * Sphere3D или Cylinder3D для навершия и гарды.

    На этом этапе важно настроить правильные пропорции. Используйте кисть Move (горячая клавиша B -> M -> V) и Гизмо (клавиша W) для масштабирования и перемещения частей.

    !Блокинг основных форм: лезвие, гарда и рукоять разделены на отдельные сабтулы

    Dynamesh

    Для комфортной работы с формой включите Dynamesh (вкладка Geometry -> Dynamesh). Этот алгоритм автоматически перестраивает топологию модели, равномерно распределяя полигоны. Это позволяет растягивать и деформировать глину без артефактов.

    Рекомендуемое разрешение (Resolution) для начала — 128 или 256. Не повышайте разрешение слишком рано, иначе поверхность станет бугристой и сложной для выравнивания.

    Hard Surface скульптинг клинка

    Кинжал — это сочетание металла (твердая поверхность) и, возможно, кожи или дерева (органика). Скульптинг металла требует специфического подхода, называемого Hard Surface.

    Для создания острых граней и ровных плоскостей используйте следующий набор кистей:

  • TrimDynamic (B -> T -> D): «Срезает» углы и выравнивает плоскости. Основная кисть для формирования фасок лезвия.
  • HPolish (B -> H): Полирует поверхность, делая её идеально плоской. Работает агрессивнее, чем TrimDynamic.
  • DamStandard (B -> D -> S): Создает четкие углубления (кровостоки) или острые грани, если использовать с зажатым Alt (режим добавления объема).
  • Pinch (B -> P -> I): Стягивает геометрию в одну линию, делая углы бритвенно-острыми.
  • !Формирование режущей кромки с помощью Hard Surface кистей

    Техника работы с лезвием

    Включите симметрию по нужной оси (клавиша X). Начните с грубой формы лезвия. Затем используйте TrimDynamic, чтобы «срезать» лишнюю глину под углом, формируя режущую кромку. Финализируйте плоскость кистью HPolish, проводя ею вдоль лезвия длинными уверенными штрихами. В конце пройдитесь кистью Pinch по самому краю лезвия, чтобы сделать его максимально тонким визуально.

    Детализация рукояти и гарды

    Рукоять часто делается из материалов, отличных от металла: кожа, дерево, кость. Здесь уместны более мягкие, органические кисти.

    * ClayBuildup: Отлично подходит для набора объема и создания фактуры дерева или грубой кожи. * Standard: Базовая кисть для мягких переходов. * Orb_Cracks (кастомная кисть, аналог DamStandard): Идеальна для создания трещин на дереве или швов на коже.

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

    Работа с микродеталями (Alpha и Noise)

    Когда первичные и вторичные формы готовы, можно переходить к детализации. Это царапины, поры материала, узоры. Для этого этапа нужно значительно повысить количество полигонов (Subdivide, Ctrl + D), чтобы сетка могла передать мелкий рельеф.

    Использование Альф (Alphas)

    Альфы — это черно-белые изображения, которые выдавливают рельеф на поверхности.

  • Выберите кисть Standard.
  • В меню Stroke выберите DragRect (позволяет растягивать альфу в нужном месте).
  • В меню Alpha выберите нужный узор (или импортируйте свой).
  • Растяните деталь на модели.
  • !Нанесение детализированного узора через Alpha

    Surface Noise

    Для создания общей фактуры (например, шума металла или пор кожи) используйте Surface Noise во вкладке Tool. Это процедурный шум, который накладывается на всю модель. После настройки параметров нажмите Apply to Mesh, чтобы превратить шум в реальную геометрию.

    > Важно: Не делайте детали слишком мелкими. В игровом движке (Unreal Engine) объект часто будет виден издалека. Слишком мелкий шум превратится в визуальную «кашу» (aliasing). Детали должны быть читаемыми.

    Подготовка к экспорту (Decimation)

    Модель High Poly, которую вы создали, весит миллионы полигонов. Она не пойдет в Unreal Engine напрямую. Она нужна только для снятия карт нормалей.

    Однако, чтобы перенести её в программу для ретопологии (например, Maya или Blender) и она не «тормозила» вьюпорт, можно использовать Decimation Master (Zplugin -> Decimation Master). Этот плагин оптимизирует сетку, сохраняя детали, но убивая топологию (делает треугольную сетку).

  • Нажмите Pre-process Current (программа просчитает модель).
  • Установите % of decimation (обычно 10-20% достаточно).
  • Нажмите Decimate Current.
  • Теперь ваша модель выглядит так же, но весит в 5-10 раз меньше. Это идеальный референс для создания Low Poly модели.

    Итоги

    * Создание кинжала начинается с блокинга примитивами для поиска пропорций. * Dynamesh позволяет свободно менять форму без искажения сетки на ранних этапах. * Для металла используйте кисти TrimDynamic, HPolish и Pinch (Hard Surface техники). * Микродетали наносятся с помощью Alphas и режима DragRect только после утверждения основной формы. * High Poly модель из ZBrush не загружается в Unreal Engine напрямую, она служит основой для запекания текстур.

    2. Ретопология и UV-развертка: подготовка Low Poly модели

    Ретопология и UV-развертка: подготовка Low Poly модели

    После завершения скульптинга в ZBrush у вас на руках находится модель, состоящая из миллионов полигонов. Она выглядит отлично, но совершенно непригодна для игрового движка. Unreal Engine должен просчитывать геометрию, освещение и физику в реальном времени (60+ кадров в секунду), поэтому нам необходимо превратить «тяжелую» High Poly модель в оптимизированную Low Poly версию.

    Этот этап состоит из двух ключевых процессов: ретопологии (создание новой сетки) и UV-развертки (подготовка координат для текстур).

    Ретопология: принципы построения сетки

    Ретопология — это процесс создания низкополигональной сетки поверх высокополигональной модели. Вы буквально обводите контуры вашего скульпта, создавая новые полигоны. Для этого обычно используются такие инструменты, как Quad Draw в Maya, Retopoflow или стандартные инструменты привязки в Blender.

    Главная цель — сохранить силуэт объекта, используя минимально возможное количество треугольников.

    !Слева: плотная сетка High Poly из ZBrush (Dynamesh). Справа: чистая сетка Low Poly с правильной топологией

    Три правила оптимизации для оружия

  • Силуэт — это приоритет. Полигоны должны находиться там, где форма меняет свой изгиб. На прямых участках (например, плоскость лезвия) дополнительные ребра не нужны. Если удаление ребра не меняет силуэт модели при просмотре с любого ракурса — удаляйте его.
  • Топология под деформацию. Кинжал — это статичный объект (Static Mesh), он не будет сгибаться как локоть персонажа. Это значит, что нам не нужно соблюдать строгие правила квад-топологии (четырехугольных полигонов) везде. Треугольники допустимы, особенно на плоских поверхностях и навершиях.
  • Цилиндрические формы. Рукоять кинжала требует достаточного количества граней, чтобы не выглядеть угловатой. Стандарт для игр от третьего лица — 12-16 граней на цилиндр. Для игр от первого лица (FPS), где оружие находится прямо перед камерой, можно использовать 24-32 грани.
  • Работа с лезвием (Hard Surface)

    При ретопологии острых краев лезвия важно понимать, как работают нормали. Острая грань (Hard Edge) формируется геометрией. Не пытайтесь сгладить острие фасками (bevels) на этапе Low Poly, если ваш бюджет полигонов ограничен. Ощущение фаски создаст карта нормалей, которую мы запечем позже.

    Однако, если кинжал будет рассматриваться очень близко, можно добавить поддерживающие ребра (support loops) или небольшие фаски на геометрии, чтобы силуэт не был идеально острым, как бритва, что в реальности встречается редко.

    Группы сглаживания (Smoothing Groups) и Hard Edges

    Перед тем как переходить к развертке, необходимо настроить жесткость ребер. В Maya это называется Soft/Hard Edges, в 3ds Max — Smoothing Groups, в Blender — Shade Smooth/Auto Smooth.

    * Soft Edge (Мягкое ребро): Движок пытается сгладить переход света между полигонами. Используется на цилиндрических поверхностях (рукоять). * Hard Edge (Жесткое ребро): Движок четко разделяет полигоны, создавая видимый угол. Используется на лезвии, гарде и местах стыка материалов.

    > Золотое правило запекания: Если ребро на модели обозначено как Hard Edge, оно обязательно должно быть разрезано на UV-развертке (UV Seam). В противном случае при запекании Normal Map вы получите черные артефакты на швах.

    UV-развертка: перенос 3D в 2D

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

    Координаты U и V соответствуют осям X и Y на текстуре (от 0 до 1).

    Где делать швы (Seams)?

    Разрезание модели на «островки» (UV Shells/Islands) необходимо, чтобы развернуть объемную фигуру без сильных искажений (distortions).

  • Скрытые места. Прячьте швы там, где игрок их вряд ли увидит: внутренняя сторона гарды, нижняя часть рукояти.
  • Острые углы. Как упоминалось выше, любой угол близкий к 90 градусам (Hard Edge) должен быть разрезан.
  • Смена материалов. Если рукоять переходит в навершие, имеет смысл сделать разрез на стыке.
  • !Разложенные UV-островки: лезвие, две половины рукояти, гарда. Швы отмечены красным цветом

    Тексельная плотность (Texel Density)

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

    Если лезвие занимает 10% места на текстуре, а маленькая заклепка — 50%, то заклепка будет выглядеть супер-четкой, а лезвие — размытым (пиксельным). Это ошибка.

    Для проверки используйте «шахматную» текстуру (Checker Map). Клетки на всех частях кинжала должны быть примерно одного размера и квадратной формы. Если клетки растянуты — у вас потяжки (stretching), нужно править развертку.

    Упаковка (Packing) и Padding

    После того как все части развернуты, их нужно упаковать в квадрат UV-пространства (0-1).

    * Эффективность: Старайтесь заполнить максимальное пространство. Пустое место на UV — это потраченная впустую видеопамять. * Padding (Отступы): Островки не должны касаться друг друга. Между ними должно быть расстояние. Это нужно для мипмаппинга (Mipmapping). Когда объект удаляется от камеры, движок уменьшает разрешение текстуры. Если отступы слишком маленькие, цвета с одного островка начнут «залезать» на другой, создавая швы.

    Для текстуры 2048x2048 рекомендуемый отступ (padding) составляет минимум 8-16 пикселей.

    Подготовка к запеканию (Pre-Baking)

    Перед экспортом Low Poly модели для запекания убедитесь в следующем:

  • Триангуляция. Перед экспортом в Substance Painter или движок рекомендуется триангулировать модель (превратить все квады в треугольники) внутри вашего 3D-редактора. Это гарантирует, что форма сетки не изменится при импорте в другую программу.
  • Нейминг (Naming). Назовите части Low Poly модели с суффиксом _low (например, Dagger_low), а части High Poly — с суффиксом _high (Dagger_high). Это критически важно для автоматического запекания «по именам» (Match by Mesh Name) в Substance Painter, чтобы детали ножен не запеклись на лезвие.
  • Pivot Point. Убедитесь, что точка опоры (Pivot) находится в одном и том же месте у Low и High версий (обычно в центре координат 0,0,0).
  • Итоги

    * Ретопология превращает скульпт в оптимизированную игровую модель, где приоритетом является сохранение силуэта. * Для игровых ассетов допустимо использование треугольников, особенно на плоских поверхностях, которые не деформируются. * Жесткие ребра (Hard Edges) всегда должны сопровождаться разрезом на UV-развертке, чтобы избежать артефактов на картах нормалей. * Тексельная плотность должна быть равномерной: используйте Checker Map для проверки искажений и масштаба. * Правильный нейминг (_low, _high) и отступы (padding) на UV-карте обязательны для качественного текстурирования.

    3. Запекание карт и текстурирование для игрового движка

    Запекание карт и текстурирование для игрового движка

    На данном этапе у вас есть две модели: детализированная High Poly из ZBrush и оптимизированная Low Poly с UV-разверткой. Теперь необходимо перенести детали с первой на вторую и раскрасить модель, используя физически корректный рендеринг (PBR). Основным инструментом для этого процесса в индустрии является Adobe Substance 3D Painter.

    Процесс запекания (Baking)

    Запекание — это процесс переноса информации о геометрических деталях с High Poly модели на текстурные карты Low Poly модели. Игровой движок не может обрабатывать миллионы полигонов, но он может считывать информацию с текстур, чтобы имитировать этот объем.

    Подготовка проекта в Substance Painter

    При создании нового проекта загрузите вашу Low Poly модель (.fbx или .obj). Убедитесь, что разрешение документа соответствует вашим целям (обычно 2048 или 4096 для портфолио, 1024-2048 для игр).

    Перейдите в режим Bake Mode (иконка круассана или через меню Texture Set Settings). Здесь происходит магия переноса деталей.

    Настройка параметров запекания

  • High Definition Meshes: Загрузите сюда вашу High Poly модель.
  • Output Size: Установите разрешение карт. Рекомендуется запекать в разрешении в два раза выше финального (например, 4096), а при экспорте уменьшать. Это дает лучший антиалиасинг.
  • Match: Выберите By Mesh Name. Это критически важно, если ваш кинжал состоит из составных частей (лезвие, гарда, рукоять), которые находятся близко друг к другу. Если вы правильно назвали меши (blade_low и blade_high), программа будет проецировать детали только между соответствующими парами, избегая артефактов пересечения.
  • Max Frontal/Rear Distance: Эти параметры определяют длину лучей, которые «стреляют» из поверхности Low Poly в поисках High Poly. Если на карте нормалей есть серые пятна или обрезанные детали — увеличьте эти значения.
  • !Принцип работы дистанции запекания (Max Frontal/Rear Distance)

    Ключевые карты для текстурирования

    Substance Painter генерирует набор карт (Mesh Maps), которые необходимы для работы процедурных генераторов:

    * Normal Map (Карта нормалей): Самая важная карта. Она меняет направление отражения света, создавая иллюзию рельефа, фасок, царапин и вмятин на плоской поверхности. * World Space Normal: Определяет ориентацию полигонов в мировом пространстве. Нужна для наложения пыли или снега (эффекты, падающие сверху). * Ambient Occlusion (AO): Карта затенения. Показывает места, куда свет проникает с трудом (щели, углы, стыки деталей). Добавляет модели объем и контраст. * Curvature (Кривизна): Определяет выпуклые и вогнутые части. Критически важна для создания потертостей на гранях (Edge Wear) и грязи в углублениях. * Position: Определяет положение пикселя относительно границ модели. Используется для создания градиентов (например, потемнение лезвия к острию). * ID Map: Если вы раскрасили High Poly модель в разные цвета (Polypaint) в ZBrush, эта карта позволит быстро создавать маски для разных материалов (металл, кожа, дерево).

    Текстурирование: PBR подход

    Unreal Engine использует модель PBR (Physically Based Rendering). Это значит, что материалы должны взаимодействовать со светом по физическим законам. Ваша задача — не просто «покрасить» кинжал, а задать физические свойства поверхности.

    Три кита PBR (Metal/Roughness workflow)

  • Base Color (Albedo): Чистый цвет поверхности без теней и бликов. Для металлов цвет должен быть ярким (почти белым для стали, желтым для золота). Для диэлектриков (кожа, дерево) — цвет самого материала. Важно избегать абсолютно черного () и абсолютно белого () цветов.
  • Metallic: Черно-белая карта. Определяет, является ли материал металлом.
  • * 1 (Белый): Металл. Отражения окрашиваются в цвет Base Color. * 0 (Черный): Диэлектрик (пластик, дерево, кожа). Отражения белые, цвет зависит от угла обзора (эффект Френеля). Промежуточные значения (серый) используются крайне редко, обычно только для переходов грязи или окисления.*
  • Roughness (Шероховатость): Самая художественная карта. Определяет микрорельеф поверхности.
  • * 0 (Черный): Идеально гладкая поверхность (зеркало). Блик четкий и яркий. * 1 (Белый): Матовая поверхность. Свет рассеивается, блик размытый и тусклый.

    !Влияние карты Roughness на восприятие материала

    Работа со слоями и масками

    Не рисуйте кистью вручную, если это не уникальный узор. Используйте мощь процедурности:

  • Fill Layers (Заливочные слои): Создайте базовый слой металла. Настройте цвет, Metallic = 1, Roughness = 0.3.
  • Smart Materials: Используйте готовые умные материалы как основу, но всегда дорабатывайте их. Стандартный материал «Steel» узнаваем и выглядит скучно.
  • Generators (Генераторы): Добавьте новый слой с цветом ржавчины или грязи. Добавьте черную маску. На маску накиньте эффект Generator -> Metal Edge Wear. Substance Painter использует запеченную карту Curvature, чтобы автоматически найти острые грани кинжала и «протереть» их до блеска или добавить сколы.
  • > Совет: История любого предмета читается через Roughness. Лезвие не может быть равномерно блестящим. Добавьте слой с отпечатками пальцев или масляными разводами, влияющий только на канал Roughness. Это оживит блик при вращении модели в движке.

    Экспорт текстур для Unreal Engine

    Unreal Engine требует специфической упаковки текстур для оптимизации памяти. Вместо того чтобы загружать три отдельные черно-белые картинки для Ambient Occlusion, Roughness и Metallic, мы упаковываем их в каналы одного RGB-изображения.

    Стандарт ORM (Occlusion, Roughness, Metallic)

    Это наиболее распространенный метод упаковки для UE:

    * Red Channel (Красный): Ambient Occlusion * Green Channel (Зеленый): Roughness * Blue Channel (Синий): Metallic

    Такая текстура часто имеет суффикс _ORM или _OcclusionRoughnessMetallic.

    !Упаковка каналов (Channel Packing) для оптимизации памяти

    Настройка пресета экспорта

    В окне Export Textures выберите пресет Unreal Engine 4 (Packed). Проверьте конфигурацию:

  • Base Color: RGB + Alpha (если есть прозрачность).
  • Normal: RGB (DirectX формат). Важно: Unreal Engine использует DirectX (Y-), в то время как OpenGL (Y+) инвертирует зеленый канал. Если карта нормалей выглядит в движке «вывернутой», инвертируйте зеленый канал в настройках текстуры внутри UE.
  • OcclusionRoughnessMetallic: R+G+B.
  • Формат файлов: Targa (.tga) или PNG. Targa предпочтительнее для профессиональной разработки, так как не использует сжатие при сохранении и всегда корректно обрабатывает альфа-канал.

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

  • Перетащите меш и текстуры в Content Browser.
  • Откройте текстуру _ORM. В настройках текстуры снимите галочку sRGB. Это критически важно! Карты данных (Roughness, Metallic, AO, Normal) должны считываться в линейном пространстве (Linear Color), иначе движок будет гамма-корректировать их, и материалы будут выглядеть неправильно (слишком блестящими или матовыми).
  • Создайте материал, перетащите туда текстуры.
  • Подключите Base Color в Base Color.
  • Подключите Normal в Normal.
  • Возьмите текстуру _ORM:
  • * Выход R подключите в Ambient Occlusion. * Выход G подключите в Roughness. * Выход B подключите в Metallic.

    Теперь ваш кинжал полностью готов к использованию в игре.

    Итоги

    * Запекание переносит детали с High Poly на Low Poly через карты (Normal, AO, Curvature). Используйте Match by Mesh Name для избежания артефактов на составных объектах. * PBR текстурирование базируется на трех параметрах: Base Color (цвет), Metallic (металл/не металл) и Roughness (микрорельеф). * Metallic должен быть либо 0, либо 1. Промежуточные значения — редкость. * История предмета создается через вариативность Roughness (пятна, царапины, следы рук). * Для Unreal Engine текстуры упаковываются в ORM (Occlusion -> Red, Roughness -> Green, Metallic -> Blue), и для этой текстуры обязательно нужно отключать sRGB при импорте.

    4. Правильный экспорт модели и импорт в Unreal Engine

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

    Финальный этап создания ассета — это сборка конструктора. У вас есть геометрия (Low Poly) и набор текстур. Теперь нужно соединить их внутри игрового движка так, чтобы кинжал выглядел и работал корректно. Ошибки на этом этапе могут привести к неправильному освещению, проблемам с физикой или искажению масштаба.

    Подготовка геометрии к экспорту (Maya / Blender / 3ds Max)

    Перед тем как нажать кнопку Export, необходимо проверить техническое состояние модели. Unreal Engine (UE) строг к стандартам.

    1. Единицы измерения и масштаб

    Unreal Engine использует сантиметры (cm) как системную единицу измерения. Если вы моделировали в метрах или дюймах, при импорте кинжал может оказаться размером с небоскреб или муравья.

    * Blender: Убедитесь, что в Scene Properties стоит Unit Scale = 1.0, а Length = Metric. Перед экспортом обязательно примените масштаб: Ctrl + A -> Apply Scale. * Maya: В Settings/Preferences -> Settings установите Working Units на Centimeter.

    2. Точка опоры (Pivot Point)

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

    * Расположение: Пивот должен находиться в центре рукояти, там, где предполагается хват руки. * Ориентация: Ось X (Forward) обычно должна смотреть вдоль лезвия (в сторону удара), а ось Z (Up) — вверх. Это стандарт для Unreal Engine, упрощающий настройку сокетов. * Координаты: При экспорте переместите модель так, чтобы её пивот (рукоять) находился в мировом центре координат .

    !Пивот (оси координат) расположен строго в центре рукояти, лезвие направлено вдоль оси X

    3. Триангуляция

    Хотя движок умеет триангулировать модели сам, лучше сделать это вручную или при экспорте. Это гарантирует, что затенение (shading) на Low Poly модели в движке будет на 100% совпадать с тем, что вы видели при запекании в Substance Painter.

    Настройки экспорта FBX

    Формат .fbx — стандарт индустрии. Используйте версию FBX 2018 или 2020.

    Ключевые галочки при экспорте: * Smoothing Groups (Группы сглаживания): Обязательно включить. Иначе модель будет выглядеть «граненой». * Tangents and Binormals: Рекомендуется включить, чтобы сохранить информацию о касательных пространствах. * Triangulate: Включить (если не сделали это модификатором ранее). * Embed Media: Выключить. Текстуры мы загрузим отдельно.

    Импорт в Unreal Engine

    Запустите проект в Unreal Engine. Создайте отдельную папку для вашего ассета (например, Content/Weapons/Dagger).

  • Перетащите файл .fbx в Content Browser.
  • Откроется окно FBX Import Options. Это самый важный момент.
  • Разбор настроек импорта

    * Mesh -> Skeletal Mesh: Оставьте пустым (снятым). Кинжал — это статический объект (Static Mesh), у него нет костей (если только вы не делали анимацию раскладывания). * Mesh -> Build Nanite: Для мелких объектов типа оружия Nanite часто избыточен, но в UE5 это стандарт. Можно включить, если планируете рассыпать тысячи кинжалов по уровню. * Mesh -> Generate Lightmap UVs: Включите, если хотите запекать статический свет. Движок создаст второй UV-канал для теней, разложив островки с отступами. * Mesh -> Normal Import Method: Выберите Import Normals and Tangents. Это заставит движок использовать именно те нормали, которые были в файле экспорта, а не пересчитывать их заново. Это критично для сохранения чистого шейдинга на фасках.

    Нажмите Import All.

    Настройка текстур

    Перетащите ваши текстуры (BaseColor, Normal, ORM) в ту же папку. Теперь нужно настроить их компрессию и цветовое пространство.

    sRGB и Linear Space

    Это самая частая ошибка новичков. Текстуры, содержащие информацию о цвете (BaseColor), должны быть в sRGB. Текстуры, содержащие математические данные (Normal, Roughness, Metallic, AO), должны быть в линейном пространстве (Linear).

  • Откройте текстуру BaseColor. Убедитесь, что галочка sRGB включена.
  • Откройте текстуру Normal. Движок обычно сам распознает её и ставит Compression Settings на Normalmap (sRGB при этом игнорируется/выключается).
  • Откройте текстуру ORM (Occlusion-Roughness-Metallic). Снимите галочку sRGB! Это обязательно. Если этого не сделать, значения шероховатости будут искажены гамма-коррекцией, и материал будет выглядеть неправильно (слишком блестящим или матовым).
  • Создание Материала

    В Unreal Engine не рекомендуется создавать уникальный материал для каждого объекта. Правильный подход — создать Master Material, а для кинжала использовать Material Instance.

    Шаг 1: Master Material

    Создайте новый материал M_Master_Weapon. Откройте его.

  • Зажмите клавишу T и кликните левой кнопкой мыши 3 раза, чтобы создать три ноды Texture Sample.
  • Конвертируйте их в параметры (ПКМ -> Convert to Parameter). Назовите их: BaseColor_Map, Normal_Map, ORM_Map.
  • Подключите ноды:
  • * BaseColor_Map (RGB) -> вход Base Color. * Normal_Map (RGB) -> вход Normal. * ORM_Map: Здесь нам нужно разделить каналы. В предыдущей статье мы упаковали их в RGB. * Выход R (Red) -> вход Ambient Occlusion. * Выход G (Green) -> вход Roughness. * Выход B (Blue) -> вход Metallic.

    !Нода ORM текстуры разделяется на три канала: Красный идет в AO, Зеленый в Roughness, Синий в Metallic

    Сохраните материал (Apply и Save).

    Шаг 2: Material Instance

  • Найдите в браузере M_Master_Weapon.
  • Нажмите ПКМ -> Create Material Instance.
  • Назовите его MI_Dagger.
  • Откройте MI_Dagger. В блоке Parameter Groups поставьте галочки напротив ваших текстурных параметров и загрузите туда текстуры именно вашего кинжала.
  • Теперь примените этот инстанс на модель кинжала (перетащите MI_Dagger на ассет кинжала во вьюпорте или в окне настройки меша).

    Проверка коллизии (Collision)

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

  • Откройте ассет кинжала (двойной клик по Static Mesh).
  • В меню сверху выберите Collision -> Add Capsule Collision (или Box Collision). Капсула лучше подходит для рукояти.
  • Настройте размер и положение примитива так, чтобы он покрывал объект.
  • Для более точной коллизии можно использовать опцию Auto Convex Collision (панель Convex Decomposition справа внизу), которая сгенерирует более сложную форму, повторяющую силуэт лезвия.

    Итоги

    * Перед экспортом убедитесь, что Pivot Point находится в точке хвата (рукоять) и координаты модели сброшены в . * При импорте в Unreal Engine выбирайте Import Normals and Tangents, чтобы сохранить шейдинг идентичным исходнику. * Для текстур масок (ORM) обязательно отключайте галочку sRGB, иначе физические свойства материала будут искажены. * Используйте связку Master Material + Material Instance для оптимизации и удобства настройки. * Не забудьте настроить Collision, чтобы объект мог взаимодействовать с миром игры.

    5. Настройка Master Material и размещение кинжала на сцене

    Настройка Master Material и размещение кинжала на сцене

    Создание качественных текстур — это только половина успеха. Чтобы кинжал выглядел в игре или портфолио реалистично, необходимо правильно настроить шейдер (Material) в Unreal Engine и грамотно выставить освещение. В этой статье мы превратим набор текстур в гибкий инструмент с помощью Master Material и создадим финальную сцену для рендера.

    Философия Master Material

    В профессиональной разработке никогда не создают уникальный материал для каждого отдельного объекта (например, M_Dagger, M_Sword, M_Shield). Это неэффективно: если вы захотите изменить логику работы шейдера, вам придется править сотни файлов. Кроме того, компиляция шейдеров занимает время.

    Вместо этого используется подход Master Material + Material Instance:

  • Master Material (Родитель): Содержит всю логику, математику и структуру нод. Это «движок» вашего материала.
  • Material Instance (Потомок): Ссылка на мастер-материал, в которой можно менять только параметры (текстуры, цвет, числа), но нельзя менять структуру. Инстансы не требуют компиляции и работают мгновенно.
  • Создание логики шейдера

    Создайте новый материал и назовите его M_Master_Weapon. Откройте редактор материалов.

    Базовая структура текстур

    Вместо обычных нод Texture Sample, мы будем использовать параметры, чтобы в инстансах можно было менять картинки.

  • Нажмите ПКМ в пустом месте и введите TextureSampleParameter2D. Создайте три такие ноды.
  • Назовите их: BaseColor_Map, Normal_Map, ORM_Map.
  • Подключите BaseColor_Map (RGB) во вход Base Color основного блока.
  • Подключите Normal_Map (RGB) во вход Normal.
  • Распаковка ORM (Occlusion, Roughness, Metallic)

    Как мы помним из этапа текстурирования, мы упаковали три черно-белые карты в каналы одного изображения. Теперь их нужно разделить.

    Возьмите ноду ORM_Map: * Красный канал (R): Подключите во вход Ambient Occlusion. * Зеленый канал (G): Подключите во вход Roughness. * Синий канал (B): Подключите во вход Metallic.

    !Ноды TextureSampleParameter2D подключены к соответствующим входам: BaseColor к BaseColor, Normal к Normal, а каналы ORM разделены на AO, Roughness и Metallic

    Добавление контроля (Parameters)

    Хороший мастер-материал позволяет подстраивать вид модели прямо в движке, не возвращаясь в Substance Painter. Добавим возможность регулировать силу нормали и шероховатость.

    Контроль шероховатости (Roughness): Иногда в движке материал кажется слишком мокрым или слишком сухим. Мы можем умножить значения карты Roughness на число.

  • Создайте ноду ScalarParameter (зажмите S + ЛКМ). Назовите её Roughness_Mult. Установите Default Value = 1.0.
  • Создайте ноду Multiply (зажмите M + ЛКМ).
  • Соедините Зеленый канал (G) от ORM_Map во вход A, а Roughness_Mult во вход B.
  • Результат умножения подключите во вход Roughness основного блока.
  • Теперь, если в инстансе поставить Roughness_Mult = 0.8, кинжал станет более блестящим. Если 1.2 — более матовым.

    Контроль нормали (Normal Intensity):

  • Создайте ноду FlattenNormal.
  • Подключите Normal_Map (RGB) во вход Normal ноды FlattenNormal.
  • Создайте ScalarParameter, назовите Normal_Intensity. Default Value = 0 (в этой ноде 0 означает «без изменений», а 1 — «полностью плоский»).
  • Подключите параметр во вход Flatness.
  • Выход FlattenNormal подключите в Normal основного блока.
  • Сохраните материал (Apply -> Save).

    Настройка Material Instance

  • Найдите M_Master_Weapon в Content Browser.
  • Нажмите ПКМ -> Create Material Instance. Назовите файл MI_Dagger.
  • Откройте MI_Dagger. Справа в панели Details вы увидите группу Global Scalar Parameter Values (наши числа) и Global Texture Parameter Values (наши текстуры).
  • Поставьте галочки напротив параметров текстур и перетащите туда ваши карты, экспортированные из Substance Painter.
  • Назначьте этот инстанс на модель кинжала.
  • Теперь, двигая ползунок Roughness_Mult, вы увидите изменения на модели в реальном времени.

    Сцена для подачи (Lighting & Rendering)

    Просто бросить кинжал на пустой уровень недостаточно. Создадим студийное освещение.

    Подготовка уровня

  • File -> New Level -> Basic.
  • Удалите Floor (пол), если хотите создать эффект парения в пустоте, или замените его на плоскость с темным матовым материалом.
  • Перетащите ваш кинжал (Static Mesh) в центр сцены (координаты 0, 0, 0).
  • Освещение металла

    Металл выглядит хорошо только тогда, когда ему есть что отражать. Точечные источники света (Point Light) создают на металле некрасивые маленькие блики-точки. Для оружия лучше использовать RectLight (прямоугольный свет).

    Схема освещения:

  • Key Light (Рисующий): Создайте RectLight. Разместите его сбоку и сверху от кинжала под углом 45 градусов. Увеличьте Source Width и Source Height, чтобы блик на лезвии был длинным и мягким. Это подчеркнет форму клинка.
  • Rim Light (Контровой): Разместите яркий источник света позади кинжала. Он должен подсветить силуэт рукояти и гарды, отделяя объект от фона.
  • Fill Light (Заполняющий): Слабый источник света с противоположной стороны от Key Light, чтобы тени не были абсолютно черными.
  • !Кинжал в центре. Key Light (RectLight) слева-спереди, Rim Light сзади, Fill Light справа. Стрелки показывают направление света

    Камера и фокусное расстояние

    Стандартная камера в играх имеет широкий угол обзора (FOV 90), что сильно искажает пропорции предмета при приближении (перспективные искажения).

  • В меню создания актеров выберите Cinematic -> Cine Camera Actor.
  • В настройках камеры (Current Camera Settings) найдите Current Focal Length.
  • Установите значение 50mm или 85mm. Это «портретные» объективы. Они делают изображение более плоским и кинематографичным, убирая эффект «рыбьего глаза».
  • Настройте Focus Settings. Поставьте галочку Draw Debug Focus Plane, чтобы видеть плоскость фокуса. Пипеткой кликните по гарде кинжала, чтобы сфокусироваться на ней.
  • Уменьшите Current Aperture, чтобы размыть задний план (эффект Боке).
  • Post Process Volume

    Чтобы картинка стала сочной, нужно настроить постобработку.

  • Добавьте PostProcessVolume на сцену.
  • В настройках поставьте галочку Infinite Extent (Unbound). Теперь эффекты работают везде, даже если вы не внутри куба объема.
  • Exposure (Экспозиция): В разделе Exposure установите Min Brightness и Max Brightness на 1.0. Это отключит автоматическую адаптацию глаза (Eye Adaptation), и яркость сцены перестанет «скакать» при повороте камеры.
  • Bloom: Немного усильте свечение бликов (Intensity 0.5–1.0).
  • Vignette: Добавьте затемнение по краям (0.4), чтобы сфокусировать внимание на центре.
  • Итоги

    * Используйте связку Master Material и Material Instance для оптимизации и быстрой настройки параметров без перекомпиляции шейдеров. * Ноды TextureSampleParameter2D позволяют подменять текстуры в инстансах. * Математические операции (например, умножение Roughness) внутри мастера дают гибкий контроль над визуалом. * Для освещения металла лучше всего подходят источники RectLight, создающие красивые вытянутые блики. * Для рендера используйте Cine Camera Actor с фокусным расстоянием 50mm+ и зафиксированную экспозицию в PostProcessVolume.