Меню

Нажмите ESC для закрытия

Пропсы19 января 2026 г.

Создание игрового Peugeot 403 с использованием Unreal Engine и Substance 3D

Педро Алешандре Перейра рассказал о процессе создания модели Peugeot 403, поделился, что вдохновило его на проект, как он преодолел трудности при моделировании автомобиля и как создал детали.

Создание игрового Peugeot 403 с использованием Unreal Engine и Substance 3D

Введение

Меня зовут Педро Перейра, и я 3D-артист из Португалии. Я профессионально занимаюсь 3D-искусством более 10 лет. С юных лет меня увлекали 3D-игры, поскольку я вырос в то время, когда игры переходили из 2D в 3D. Это, наряду со страстью к искусству, в конце концов привело меня к работе с некоторыми программами в подростковом возрасте.

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

Создание готового к игре Peugeot 403 с использованием Unreal Engine & Substance 3D - изображение 1
Создание готового к игре Peugeot 403 с использованием Unreal Engine & Substance 3D - изображение 2
Создание готового к игре Peugeot 403 с использованием Unreal Engine & Substance 3D - изображение 3
Создание готового к игре Peugeot 403 с использованием Unreal Engine & Substance 3D - изображение 4

Peugeot 403

Этот проект начался, потому что я изначально хотел создать мод автомобиля для Assetto Corsa, включая полностью смоделированный интерьер. Моя жена и я — большие поклонники шоу «Коломбо» 70-х, и она была той, кто предложил мне попробовать создать старый и потрёпанный Peugeot 403 лейтенанта Коломбо из шоу.

В конце концов, работая над моделированием, я решил изменить масштаб проекта, чтобы сосредоточиться исключительно на внешнем виде. Хотя я сохранил первоначальное намерение создать автомобиль в качестве готового к игре ассета, я решил превратить проект в часть портфолио и использовать Unreal Engine для рендеринга. Я хотел, чтобы автомобиль выглядел ещё более повреждённым, ржавым и грязным, чем тот, что был в шоу, и ещё больше развить свои навыки текстурирования.

Для справки, я начал с поиска хорошего чертежа автомобиля. Это важный первый шаг для моделирования чего-то столь точного, как автомобиль из реального мира, поскольку вы не можете понять реальные пропорции, используя только фотоматериалы. Затем я сделал несколько скриншотов из шоу и столько качественных фотографий этого автомобиля, сколько смог.

Поскольку я обнаружил некоторые расхождения в элементах автомобиля между эпизодами, а также в том, что некоторые фотографии автомобиля выдавались за те, что использовались в шоу, я решил смоделировать те элементы, которые нашёл в разных источниках, собранных на моей доске PureRef (особенно крупные планы). Я также смоделировал колёсный диск из другой модели, поскольку нашёл его спицевые диски более интересными.

Создание готового к игре Peugeot 403 с использованием Unreal Engine & Substance 3D - изображение 5

Моделирование

Я начал процесс моделирования, импортировав чертежи-ссылки в Maya и увеличив их до реального размера. Хорошее эмпирическое правило — всегда делать объекты в масштабе реальной жизни, поскольку это помогает со многими системами в 3D-пакетах и рендер-движках. В моём случае я изначально моделировал это как мод для Assetto Corsa, так что это было требованием.

Но даже позже, когда стало ясно, что модель будет импортирована и интегрирована в Unreal Engine, который использует физически основанный рендер-движок с реальными значениями интенсивности света и спада, это оставалось важным. Сначала я создал несколько направляющих кривых вдоль основных линий, образующих форму автомобиля, чтобы иметь представление об общей форме объекта и помочь с топологией. Затем были созданы петли рёбер, следуя этим основным линиям.

Создание готового к игре Peugeot 403 с использованием Unreal Engine & Substance 3D - изображение 6

Процесс заключался в создании всего кузова как одного объекта, следуя этим первоначальным направляющим кривым. Затем различные панели были вырезаны, скошены и выдавлены внутрь. Получить правильную форму кузова автомобиля было непростой задачей, и в какой-то момент мне пришлось начать всё сначала, поскольку я был недоволен своей первой попыткой. Даже тогда я продолжал что-то менять почти до самого конца.

Полученная в результате экструзии сетка (здесь показана красным) затем разделяется и в итоге получает чёрный материал в Unreal, создавая водонепроницаемую сетку. Поскольку я всегда люблю исследовать разные рабочие процессы и инструменты в личных проектах, я решил смоделировать колёсный диск в инструменте CAD, который я изучал, под названием Plasticity.

Создание готового к игре Peugeot 403 с использованием Unreal Engine & Substance 3D - изображение 7
Создание готового к игре Peugeot 403 с использованием Unreal Engine & Substance 3D - изображение 8

Вот высокополигональная модель колёсного диска, преобразованная из CAD и экспортированная из Plasticity:

Создание готового к игре Peugeot 403 с использованием Unreal Engine & Substance 3D - изображение 9

Вот высокополигональная модель крыши автомобиля. Сначала я смоделировал её в Maya, затем импортировал в ZBrush для детализации:

Создание готового к игре Peugeot 403 с помощью Unreal Engine & Substance 3D - изображение 10
Создание готового к игре Peugeot 403 с помощью Unreal Engine & Substance 3D - изображение 11

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

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

Некоторые высокополигональные детали (винты, фары, задние фонари и рисунок шины) были запечены в отдельные плоские сетки позже в Substance 3D Designer и размещены вместе с другими процедурными и импортированными деталями.

Создание готового к игре Peugeot 403 с помощью Unreal Engine & Substance 3D - изображение 12

Развёртка UV

Готовясь к развёртке UV, я стремился к плотности текселей около 12 пикселей на единицу. Мои наборы текстур получились такими: кузов автомобиля (4K), бамперы/металлические и резиновые детали/крыша (4K), стекло/освещение (2K), шина/колесный диск (2K). Я использовал встроенные инструменты UV в Maya для развёртки.

Обычно мой рабочий процесс начинается с простой плоской проекции для всего объекта, затем я разрезаю швы, проецирую и разворачиваю. Я назначил плоскую проекцию для X, Y и Z в качестве ярлыков, что экономит время. Я также стараюсь выпрямить как можно больше оболочек, что экономит пространство UV. Хороший совет — выбрать среднюю петлю рёбер и перейти в «Модификация» > «Выпрямить оболочку».

Для раскладки в основном я использую инструмент Layout UVs для автоматической упаковки. Я устанавливаю размер карты текстуры на свой собственный и экспериментирую с разрешением упаковки, итерациями и отступами оболочки. Я постоянно проверяю плотность текселей, пока не получу хороший результат. При необходимости я перемещаю некоторые оболочки вручную, но, как правило, делаю это в крайнем случае.

Вот части набора кузова автомобиля, которые занимают одно и то же пространство UV, например, дублированные боковые панели и двери (выделены зелёным). Я перемещаю оболочки на следующую плитку. Таким образом, Substance 3D Painter не будет накладывать запечённые текстуры, но я всё равно могу импортировать всю сетку.

Создание готового к игре Peugeot 403 с помощью Unreal Engine & Substance 3D - изображение 13

Я часто использую разные наборы UV, в том числе и в этом проекте. Я использую скрипт, который автоматически переименовывает наборы UV на всех выбранных объектах. Это предотвращает проблемы, когда объединённые сетки, которые не имеют одинаковых имён в наборах UV, создают дополнительные нежелательные наборы. Скрипт также выбирает набор UV из всех выбранных объектов по заданному имени. Это гарантирует, что я не упакую случайно не те оболочки.

Создание готового к игре Peugeot 403 с помощью Unreal Engine & Substance 3D - изображение 14

Текстурирование

После развёртки UV я присвоил материалам их окончательные имена, чтобы они были согласованы в Substance 3D и затем в Unreal. Разные части анимированы как в их окончательном положении, так и со смещением. Я выбирал в зависимости от того, экспортировал ли я в Unreal или Substance 3D, соответственно, поскольку размещение их в окончательном положении в Substance 3D Painter привело бы к нежелательным теням и нормалям во время запекания.

Для экспорта из Maya я использовал Game Exporter (Файл > Game Exporter). Я выбрал «Экспорт выделения» и «Экспорт во множество файлов», отметив «Переместить в начало координат». Чтобы ускорить процесс экспорта, я создал набор быстрого выбора со всеми моими объектами для экспорта, сетками и группами, дал им имя, которое будет указано в файле, и убедился, что точка поворота находится в правильном положении.

Таким образом, всё, что мне нужно было сделать, это нажать на сохранённый набор на моей полке и экспортировать. Maya переместит все объекты в начало координат и экспортирует в нужный каталог со всеми правильными именами сеток.

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

Создание готового к игре Peugeot 403 с помощью Unreal Engine & Substance 3D - изображение 15

Плавающие геометрические объекты (жёлтого цвета), которые позже будут использовать материал декали. На зеркале проецируются отверстия для винтов, а на шине — все её детали.

Создание готового к игре Peugeot 403 с помощью Unreal Engine & Substance 3D - изображение 16
Создание готового к игре Peugeot 403 с помощью Unreal Engine & Substance 3D - изображение 17

Материал передней решётки использует простую чередующуюся текстуру нормалей и непрозрачности размером 128x128.

Создание готовой к игре модели Peugeot 403 с использованием Unreal Engine и Substance 3D - изображение 18

Чтобы создать атлас нормалей, используемый в декалях и во втором наборе UV, используемом по всему автомобилю, я использовал Substance 3D Designer. Я часто использую Designer, даже если не обязательно создаю с его помощью процедурные материалы, а компоную текстуры из разных источников, таких как запекание, Painter или Photoshop.

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

Вот окончательный граф Substance 3D для атласа нормалей и окончательный атлас текстур:

Создание готовой к игре модели Peugeot 403 с использованием Unreal Engine и Substance 3D - изображение 19

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

Вот крупные планы в Unreal Engine, показывающие различное использование атласа нормалей на декалях и в качестве вторичных смешанных нормалей.

Для основных текстур я использовал Substance 3D Painter. Я не буду разбирать каждый набор текстур, поскольку процесс текстурирования основного материала, повреждений, ржавчины и пыли одинаков для каждого набора. Мы сосредоточимся на текстурировании кузова автомобиля. Я начал с придания ему основного цвета и некоторой шероховатости.

Я также создал слой заливки, который обесцвечивает основной цвет в верхней части кузова, чтобы придать ему неравномерный оттенок. Для вариации шероховатости я создал слой заливки с фильтром MatFinish Rough, замаскированный несколькими картами Grunge. Эти слои шероховатости также учитывают повреждения и ржавчину, используя точки привязки, о которых я расскажу далее.

Вот основной цвет и шероховатость со слоем обесцвечивания поверх и слоем вариации шероховатости, а также слои основного цвета и шероховатости:

Создание готовой к игре модели Peugeot 403 с использованием Unreal Engine и Substance 3D - изображение 20
Создание готовой к игре модели Peugeot 403 с использованием Unreal Engine и Substance 3D - изображение 21

Для деталей повреждений я создал папку перед базовыми слоями, содержащую слои заливки высоты с различной информацией о высоте. Затем в верхней части этой папки я создал слой заливки, у которого все каналы были отключены, установленный в режиме наложения «Проход» в канале высоты.

Это эффективно делает так, что этот слой содержит всю информацию о высоте из слоёв в папке, а добавление точки привязки даёт мне всю стопку деталей повреждения для ссылки в любом месте проекта. Я использовал этот подход для ржавчины и пыли, как мы увидим далее.

Создание готовой к игре модели Peugeot 403 с использованием Unreal Engine и Substance 3D - изображение 22
Создание готовой к игре модели Peugeot 403 с использованием Unreal Engine и Substance 3D - изображение 23

Некоторые повреждения нарисованы вручную с помощью простой кисти и размыты. В других случаях, как здесь, я использую Cell Noise, отфильтрованный с помощью Anisotropic Kuwahara и Blur, затем маскирую только те части, которые хочу.

Создание готовой к игре модели Peugeot 403 с использованием Unreal Engine и Substance 3D - изображение 24
Создание готовой к игре модели Peugeot 403 с использованием Unreal Engine и Substance 3D - изображение 25

Для ржавчины я использовал аналогичный подход. Я создал стопку слоёв заливки высоты для рисования масок участков ржавчины. Эта группа, называемая Rust Stack, установлена в режим смешивания «Отключить» и используется в качестве точки привязки. Затем точка привязки этой группы используется другой группой, Rust Height, где я создал эффект отслаивания и пузырьков ржавчины.

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

Создание готовой к игре модели Peugeot 403 с использованием Unreal Engine и Substance 3D - изображение 26

Внизу я создал слой Height Hole, который, используя Levels, ссылается на определённое значение из маски Rust Stack и создаёт точку отсечения между краской и ржавчиной. Эта маска точки привязки используется много раз после, но сам слой отключён.

Создание готовой к игре модели Peugeot 403 с использованием Unreal Engine и Substance 3D - изображение 27

Маска слоёв, содержащих эффект пузырьков, основана на шуме ячеек. Обратите внимание, что используется маска отсечения для вычитания, что влияет только на окружающую краску автомобиля, а не на область ржавчины. Меньшие пузырьки на втором изображении используют первое изображение в качестве маски вычитания, потому что они обычно окружают более крупные пузырьки.

Создание готового к игре Peugeot 403 с использованием Unreal Engine & Substance 3D - изображение 28
Создание готового к игре Peugeot 403 с использованием Unreal Engine & Substance 3D - изображение 29

Эффект отслаивания — это снова маска отсечения, размытая и вычитаемая сама из себя, создавая эффект затухания.

Создание готового к игре Peugeot 403 с использованием Unreal Engine & Substance 3D - изображение 30

Группа слоёв, содержащих цвет ржавчины, использует опорные точки предыдущей группы Rust Height. Некоторое разнообразие цветов достигается с помощью масок grunge и фильтров градиента. Фильтр High-pass используется для создания затухания между ржавчиной и краской. Аналогичный подход также используется для создания полупрозрачного чёрного слоя заливки, установленного на Multiply, что создаёт дополнительный эффект контактной тени от слоя краски до ржавчины.

Создание готового к игре Peugeot 403 с использованием Unreal Engine & Substance 3D - изображение 31

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

Создание готового к игре Peugeot 403 с использованием Unreal Engine & Substance 3D - изображение 32

Пыль следует тому же принципу создания папки, установленной в режим смешивания Disabled, содержащей стек слоёв и верхний слой заливки, служащий опорной точкой. Затем один слой заливки, содержащий значение цвета и шероховатости пыли, маскируется опорной точкой стека пыли с некоторыми дополнительными настройками уровней.

Поскольку, как видно на примере, пыль оседает в основном сверху, я сначала использовал маски Position и Light generator. Я также создал маски на основе масок запечённой кривизны для щелей, а также для стеков ржавчины и повреждений. Затем последовал длительный процесс использования процедурных шумов, реальных фотографий пыли и различных кистей, чтобы пыль выглядела реалистично осевшей на автомобиле, но также как будто бы на ней остались следы от пальцев и других внешних воздействий.

Создание готового к игре Peugeot 403 с использованием Unreal Engine & Substance 3D - изображение 33
Создание готового к игре Peugeot 403 с использованием Unreal Engine & Substance 3D - изображение 34

Слой заливки пылью и частичное представление некоторых масок внутри группы Dust Stack:

Создание готового к игре Peugeot 403 с использованием Unreal Engine & Substance 3D - изображение 35

Чтобы настроить материалы в Unreal, я использовал материалы Megascans Master в качестве отправной точки, а именно MS Base для большинства поверхностей и MS Glass для окон и источников света. Я также создал вариацию материала MS Base для кузова автомобиля, используя модель шейдера Clear Coat. Затем я добавил дополнительные параметры и входные данные, необходимые для этих материалов.

Я добавил вторичную карту нормалей, смешанную с основной, чтобы использовать свой атлас нормалей. Также добавлен дополнительный ввод текстуры для RGB-текстуры с разной картой Grunge в каждом канале, с контролируемой плиткой и минимальными и максимальными значениями.

Это смешано с основной картой шероховатости и параметрами значения, чтобы добавить некоторую микронеровность при детальном рассмотрении автомобиля. Крупные планы в Unreal Engine и текстура размером 512 x 512, показывающая, как эта настройка микрошероховатости помогает создать иллюзию дополнительной плотности текселей.

Создание готового к игре Peugeot 403 с использованием Unreal Engine & Substance 3D - изображение 36

Я изменил исходный материал MS Glass, чтобы использовать свою собственную текстуру, полученную из Substance 3D Painter. Я также изменил том постобработки, чтобы использовать трассировку лучей для рефракции для таких материалов.

Создание готового к игре Peugeot 403 с использованием Unreal Engine & Substance 3D - изображение 37

Рендеринг

Когда я впервые создал проект Unreal, у меня не было конкретной настройки освещения, поэтому я не ограничивал себя настройками качества. В конце концов, цель — продемонстрировать реквизит, а не создавать оптимизированную сцену.

Я начал с уровня Advanced Lighting из Starter Content, потому что там уже есть все объекты сцены и хорошие начальные значения для высококачественного рендеринга. Я настроил том постобработки, чтобы максимально увеличить все возможные значения до максимально возможного качества, включая тени, отражения и GI с трассировкой лучей максимального качества.

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

Создание готового к игре Peugeot 403 с помощью Unreal Engine & Substance 3D — изображение 38
Создание готового к игре Peugeot 403 с помощью Unreal Engine & Substance 3D — изображение 39

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

Когда я настраивал новый студийный HDR-свет, я почувствовал себя гораздо увереннее в том, что это правильный подход. Я разместил направленный свет, совпадающий с местом, где был самый сильный свет HDR, и площадной свет с тёмной стороны, чтобы убедиться, что некоторые детали не потерялись в тенях.

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

Создание готового к игре Peugeot 403 с помощью Unreal Engine & Substance 3D — изображение 40

Наконец, я визуализировал финальные кадры и поворотную таблицу, используя плагин Movie Render Queue. Я установил консольные переменные, чтобы убедиться, что финальные кадры имеют наилучшее возможное качество. Для поворотной таблицы у меня возникла проблема с призраками между кадрами из-за временного сглаживания, поэтому я остановился на 32 выборках в счётчике прогрева рендеринга и количестве временных выборок.

Создание готового к игре Peugeot 403 с помощью Unreal Engine & Substance 3D — изображение 41

Заключение

Я считаю, что создание хороших, реалистичных объектов-декораций, по крайней мере для меня, сводится к нескольким принципам:

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

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

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

Работа с моделированием автомобилей — это то, в чём я теперь чувствую себя гораздо увереннее. Изучение этого среднеполигонального подхода к моделированию и текстурированию также стало ценным уроком, применимым ко многим проектам по созданию декораций и окружающей среды. Что касается советов для начинающих, я бы указал не только то, что я сказал выше о том, как создавать реалистичные декорации, но я бы добавил, что в начале лучше всего работать с более простыми объектами, с меньшим количеством материалов.

Даже сделать так, чтобы простой объект выглядел реальным, — это достаточно сложная задача. Кроме того, я бы сказал, никогда не привязывайтесь слишком сильно ни к чему. Если внутреннее чутьё подсказывает, что что-то не совсем получается, доверьтесь этому чувству и сделайте это снова или попробуйте другой подход. И, наконец, я считаю, что важно быть эффективным. Устранение повторяющихся задач и трений из рабочего процесса путём поиска скриптов, инструментов или утилит, которые могут помочь.

Поддержание порядка и структурированности также сэкономит время и избавит от головной боли в долгосрочной перспективе. Время лучше потратить на решение художественных задач. Я хотел бы поблагодарить 80 Level за возможность поделиться этим разбором моей работы. Я надеюсь, что я предложил некоторую помощь, так же как я многому научился у многих художников на этой платформе!

Педро Алешандре Перейра, старший 3D-художник

Интервью проведено Эммой Коллинз

Автор: Pedro Alexandre Pereira

Материал подготовлен на основе статьи 80.lv. Перевод — Skills Up.