Как открыть файл obj в substance

Обновлено: 04.07.2024

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

Художнику доступно множество разных софтов, которые поддерживают запекание карт нормалей. Мы рассмотрим Substance Painter и Marmoset — два самых популярных софта с современным инструментарием.

Substance Painter — программа для процедурного текстурирования от Allegorithmic. Кроме текстуринга, в ней можно запекать карты: Ambient Occlusion, Normal map, Curvature, ID, World Space Normal, Position и Thickness.

Чтобы начать работу с моделью в Substance Painter, нужно создать новый проект, выбрать подходящий «Document Resolution», назначить подходящий «Normal Map Format» и найти файл с лоуполи, который мы предварительно экспортировали из 3D редактора, в графе File — Select.

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

Также не стоит забывать про графу Template. В ней нужно выбрать основные параметры проекта. Именно там можно переключаться между Metall/Rough и Spec/Gloss.

Когда объект находится во вьюпорте — переходим в Texture Set Settings — Bake Mesh Maps. В этом окне находятся все настройки запекания.

Первый параметр — Output Size. Это разрешение, в котором карты будут запекаться.

Dilation Width или паддинг. Параметр отвечающий за создание «буферных зон» вокруг UV шелла, которые копируют пиксели на его границах. Он используется, чтобы избегать артефактных линий на UV швах. Его значения нужно менять, если возникли подобные проблемы.

Apply diffusion по сути повторяет функции Dilation Width, но закрашивает полностью все пустое пространство на UV, а не только зоны вокруг UV шеллов.

Use Low Poly Mesh as High Poly Mesh. Позволяет запекать лоуполи меш сам на себя. Игнорирует хайполи геометрию.

High Definition Meshes. В эту область нужно загружать High poly геометрию, с которой будет запекаться карта нормалей.

Use Cage дает возможность запекать карту нормалей с помощью Cage, о котором мы говорили в прошлых статьях цикла.

Cage File — графа для загрузки файла с Cage, который можно экспортировать из 3ds Max или другого 3D редактора.

Max Frontal Distance регулирует, насколько далеко полетят лучи над геометрией, чтобы захватить элементы с хайполи.

Max Rear Distance регулирует, насколько далеко полетят лучи вглубь геометрии, чтобы захватить элементы с хайполи.

Relative Bounding Box чаще всего не трогают. Он изменяет единицы измерения, которые используются при запекании.

Average Normals — усреднение нормалей, о которых мы говорили в прошлых статьях.

Ignore Backface — включает игнорирование объектов с суффиксом, указанным в графе «Ignore backfaces suffix».

Antialiasing настраивает силу антиалайзинга. Антиалайзинг — технология для устранения эффекта «зубчатости». Этот эффект возникает на линиях, расположенных под углом.

Match — переключает режим запекания между двумя опциями. Always — запекание всех объектов без ограничений. Если два объекта находятся слишком близко друг к другу, они начнут «делиться» информацией с хайполи и создает артефакты. Чтобы избежать этого, нужно разнести отдельные элементы друг от друга. Но это долго и неудобно.

Поэтому есть второй вариант — режим «By Mesh Name». В нем лоуполи и хайполи запекаются, только если их имена совпадают.

Low poly mesh / High poly mesh / Ignore backfaces suffix — суффиксы в именах мешей, которые нужно задавать каждому элементу в 3D редакторе перед экспортом. Эти суффиксы помогают определять пейнтеру где лоуполи, где хайполи, и какую геометрию нужно игнорировать при запекании.

Если в имени хайполи и лоуполи версии одного элемента есть разница или неправильно прописан суффикс — карта нормалей не запечется.

Настройки запекания карты нормалей для лоуполи бокса Настройки запекания карты нормалей для лоуполи сложного элемента

На примере видно, что летающая геометрия начинает «плыть».

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

Решений существует несколько, но самое быстрое при работе с Substance Painter — запечь две версии карты нормалей со включенной и выключенной галочкой Average Normal, и объединить их в Photoshop.

На детализированных объектах процесс комбинирования карт в фотошопе забирает много драгоценного времени. К тому же, у Substance Painter есть проблемы с качеством запекания других карт. Из-за этого многие художники предпочитают печь в Marmoset.

Главное преимущество SP — карты уже находятся в проекте, и их не нужно загружать отдельно. Это означает, что после запекания можно сразу же приступить к текстурированию, или накинуть генератор и увидеть, как они работают.

Marmoset Toolbag 3 изначально она был рассчитан на работу с real-time рендером, освещением и бейкингом. Недавно разработчики выпустили Marmoset 4, но по части запекания практически ничего не изменилось, поэтому разбираться будем на примере третьей версии.

Для начала, в левом верхнем окне создаем «New Baker».

Загружаем ассет через кнопку Load. Важное примечание: в отличие от Substance Painter, в здесь можно загрузить один FBX/OBJ, в котором будет находиться и лоуполи, и хайполи. Он сам разносит их по нужным папкам на основе имен и суффиксов.

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

Use hidden Meshes — использовать геометрию из спрятанных слоев;

Ignore Transform — игнорировать трансформации объекта, проведенные в Marmoset;

Smooth Cage — сгладить Cage;

Ignore Back Faces — игнорировать заднюю сторону полигонов;

Tangent Space — выбор между DirectX и OpenGL;

Галочка Auto-Reload напротив кнопки Load — автоматически подгружать новые версии загруженного ранее файла FBX/OBJ.

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

Samples — качество запекания. Чем выше значение — тем лучше качество и дольше процесс бейкинга.

Soften — сглаживает результат запекания. Может быть полезен, чтобы лучше сгладить углы или скрыть границы Float geometry.

Format — настройки битности.

Multi-Layered PSD позволяет записать все запеченные карты в разные слои одного файла для Photoshop.

Padding — аналог Dilation Width из Substance Painter. Зарисовывает области вокруг UV шеллов, чтобы избежать швов при работе мипмаппинг.

Padding size определяет размер паддинга.

Multiple Texture Sets дает возможность запекать несколько текстурных сетов. Текстурные сеты пекутся в таком случае основываясь на назначенных материалах. Каждый материал — это отдельный текстурный сет.

Resolution — разрешение, в котором будут запекаться карты.

Кнопка Configure позволяет добавить/убрать все доступные для запекания карты из списка быстрого доступа.

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

На сложной геометрии видно те же проблемы с плывущими деталями, которые мы видели в Substance Painter. Но Marmoset позволяет локально редактировать направленность нормалей и размер Cage. Для этого нужно перейти в слой Low и выбрать Paint Offset и изменять размер Cage, либо Paint Skew для редактирования направленности нормалей.

Теперь на исправление поплывших элементов будет уходить пара минут.

Мы не говорили о запекании в 3ds Max, Maya, Xnormal и других подобных программах, так как их инструментарий заметно устарел и отстает по удобству от Substance Painter и Marmoset. Это не значит, что в них нельзя запечь нужные карты — просто на это уйдет больше времени.

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

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

Мы рассказали, как работать с обеими программами, про их плюсы и минусы. Твоя задача — решить, какая программа лучше подходит под твой пайплайн. А с этим мы поможем тебе разобраться на нашем курсе 3D PRO. Переходи по ссылке, чтобы получить бесплатный пробный урок.

Здесь я опишу свой опыт работы с моделью когда готовлю её для текстурирования в Substance Painter. И покажу начало работы в самом Сабстенсе.
Я сам только пару месяцев назад впервые открыл Substance Painter. Очень понравилось как быстро и интуитивно там происходит процесс текстурирования. Но вначале были проблемы с пониманием импорта 3D моделей и тем, какие модели Сабстенс от вас ожидает. Сразу оговорюсь, что вариантов подготовки модели и импорта существует несколько. Я остановлюсь только на одном — на самом простом и быстром, на мой взгляд.

Основной принцип

При запекании текстур в Substance Painter вы можете запечь такой канал как ID. Канал содержит уникальный цвет (маску) для каждой части модели, которые вы сами определите. Один цвет — один уникальный идентификатор. В последствии, когда вы будете перетягивать материалы Сабстенса на модель, то будете выбирать к какой именно части модели применится эта текстура:

Собственно, к этому процессу мы и будем готовить 3Д модель.

Разрезаем модель на куски

Вы закончили вашу модель и, допустим, она выглядит как-то так:

Теперь нам нужно разделить (или наоборот, сгруппировать) её на отдельные меши, каждому из которых Substance Painter присвоит уникальный ID (маску).

Я знаю, что моя модель должна содержать 5–6 уникальных материалов. Можно сгруппировать меши таким образом, чтобы их осталось 6 — по одному на каждый материал (перед этим лучше сохранить копию оригинальной несгруппированной модели).

На картинке выше видно что я уменьшил количество объектов. Я разукрасил модель только для того чтобы вы видели как сгруппированы меши. Раскрашивать модель не нужно.

Но если вам, например, нужно не сгруппировать, а, наоборот, раскрасить один цельный объект несколькими разными материалами, то смело разрезайте его на отдельные меши. Для этого удобно использовать команду Split. Пример с вентилем:

разделяем меш на отдельные объекты с помощью Split

Выше я написал, что сделаю 6 отдельных мешей (объектов) для каждого материала. Но это не обязательно. Делайте на своё усмотрение. Я всегда группирую объекты так, как мне кажется модель могла бы быть текстурирована в принципе, даже если я это не планирую сейчас. Руководсвуюсь простой логикой и интуицией. Например, имеет смысл сделать все 3 вентиля в моём объекте как 3 разных меша. Потому что может быть такое, что придут правки от клиента, который скажет, что хотел бы видеть эти три вентиля не одного цвета, а трёх разных цветов.

В итоге я остановился на такой группировке мешей, которая самая оптимальная, на мой взгляд. Потому что тут не слишком много отдельных объектов (будущих ID). Но также учтены все части модели, которые могли бы быть текстурированы отдельным материалом в будущем:

Повторюсь: такую раскраску модели в Синеме делать не нужно. Я это делаю только для наглядности.

Экспортируем лоу-поли модель в FBX

При импорте FBX файла Substance Painter не учитывает иерархию мешей в вашей сцене. Все Null объекты игнорируются, как и Subdivision:

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

  1. Открываем настройки экспорта: меню «File > Export > FBX».
  2. В выпадающем списке File Format выбираем последнюю доступную версию FBX. В моём случае это версия 7.7. Хотя я не знаю на что это влияет. Никогда не видел разницы между разными версиями (напишите в комментариях если знаете).
  3. Снимите все галочки и оставьте только Normals.
  4. Кликайте OK

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

Экспортируем хай-поли модель в FBX

Теперь возвращаемся к модели, включаем Subdivision и запекаем его, нажав «C». Это создаст высокополигональную модель, которая нужна Сабстенсу для того, чтобы сгененировать красивые карты нормалей, Ambient Occlusion и другие — без угловатостей.

запекание высокополигональной модели

И опять экспортируем её с теми же настройками с которыми экспортировали лоу-поли. Как всегда, рекомендуется сохранить копию лоу-поли модели перед тем как делать хай-поли.

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

Начало работы в Substance Painter

Импортируем 3Д модель в Substance Painter

Открываем Сабстенс и перетаскиваем в его окно лоу-поли модель (FBX). Можно пойти через меню File > New, то тогда ещё нужно будет вручную указать путь к файлу (кнопка Select. ).

Откроется окно New Project. В нём выбираем шаблон (1) на своё усмотрение и разрешение текстуры (2) для работы во вьюпорте Сабстенса, также, на своё усмотрение. Ниже, если ваша модель, вдруг, не имеет UV развёртки, поставьте галочку Auto-unwrap (3):

создание нового проекта в Substance Painter

Запекаем текстурные карты

В панели «Texture Set Settings» нажмите кнопку «Bake Mesh Maps».

Если панель Texture Set Settings не видна, то открывается через меню «Window > Views > Texture Set Settings».

Bake Mesh Maps

В открывшемся окне выбираем разрешение текустуры (1) и добавляем нашу высокополигональную (хай-поли) модель (2):

разрешение текустуры и хай-поли

Затем, слева переключаемся на вкладку ID (1) и в выпадающем списке выбираем «Mesh ID / Polygroup» (2):

ID и Mesh ID / Polygroup

И это как раз то, ради чего мы группировали меши нашей модели. Потому что если посмотрите на другие пункты списка, то увидите другие варианты «получения» ID из вашей модели. Mesh ID / Polygroup, в данном случае, генерирует маски для материалов на основе того количества отдельных мешей, которые мы сделали в Синеме.

В тех туториалах, которые мне попадались, люди часто используют Vertex Color или Material Color для генерации ID. Но, как по мне, то разбить/сгруппировать модель на отдельные меши легче, чем возиться с тегами Vertex Color в Синеме или создавать уникальные материалы для каждого будущего ID.

Теперь кликаем кнопку «Bake selected textures» и ждём.

Начинаем текстурировать

После окончания запечки вы не увидите почти никакой разницы во вьюпорте. Чтобы посмотреть какие каналы и как запеклись последовательно нажимайте кнопку «B» (латинскую) для переключения между картами.

Среди запечённых карт вы увидите и карту с ID. Вот так она выглядит в моём случае:

Для возврата к стандартному рендеру вьюпорта нажмите «M».

А теперь, чтобы начать накладывать материалы, перетаскивайте их из панели «Shelf» на объект с зажатой кнопкой Ctrl. Без Ctrl материал наложится на весь объект. С Ctrl — только на выбранный ID (маску):

😊

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

@Aleksei Леш!!спасибо тебе огромное!!Ты молодец за такое развернутое объяснение!!Очень полезно при начале иметь подобный алгоритм!Только один вопрос: фактически если мы хотим текстурировать ОДНУ 3Д модель с сабдивом нам нужно:1.Лоу поли модель,которую сохраняем bla-bla-bla_low_poly.fbx и 2.Вторая версия этой же модели:c накинутым сабдивом и сохраненым current state to object и поделенным на то количество мешей что и материалов bla-bla-bla_high_poly.fbx. где хай и лоу чтобы тупо мы сами не путались для себя

si vis pacem-para bellum

Да, всё правильно.
Только хай-поли делать не обязательно. Может устраивать даже просто лоу-поли запечка, без хай-поли. Например, если нужно сделать несколько десятков второплановых ассетов, то лишние 10 кликов на каждую модель — это уже очень много времени. При том, что разницы никто не заметит.
Две версии — это как рекомендация, которую вы используете на своё усмотрение.

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

На заметку:
Обратите внимание, что параметры в меню «Настройки» в разделе Использовать в Cinema 4D . Там вы можете значительно ускорить вычисление текстуры с вашей видеокартой через OpenGL или Direct 3D.

Как функционируют в Cinema 4D составляющие Substance?

Составляющая Substance создаётся с помощью Substance Designer и как правило состоит из числа узлов с различными параметрами. В рамках Substance Designer вы можете определить, какие из этих параметров должны быть «выведены». Эти параметры затем могут быть отображены и изменены в Cinema 4D. Substance Engine просчитает каждое изменение и соответственно адаптирует текстуры вывода.


Все настройки и выводы, которые можно найти в составляющей, были установлены в Substance Designer (Substance: авторские права принадлежат Kay Vriend).

В поле «Выводы» находятся текстуры вывода, которые предоставляют составляющую материалам Cinema 4D. По умолчанию они будут соединенны с соответственными каналами материала с помощью специального шейдера Substance.

В Cinema 4D существуют следующие элементы Substance:

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

В Substance Designer можно задать количество каналов вывода, которые затем будут применяться в Cinema 4D в качестве текстуры.

При передаче проекта (или при использовании Team Render), необходимо на ряду с файлом *.c4d, также передать используемые проектом файлы Substance. Команда поможет вам собрать используемые составляющие.

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

Если это было определенно в Substance Designer, текстуры можно загрузить в Cinema 4D в пределах составляющих и задать им узлы (вам необходимо в Substance Designer лишь применить узел «Color Image Input», который будет отображён в качестве загружаемой текстуры в составляющей), что позволит вам добиться многочисленных эффектов.

Если при использовании Substance анимация во вьюпорте проигрывается слишком медленно, можно принять следующие меры:

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

На заметку:
Обратите внимание, что параметры в меню «Настройки» в разделе Использовать в Cinema 4D . Там вы можете значительно ускорить вычисление текстуры с вашей видеокартой через OpenGL или Direct 3D.

Как функционируют в Cinema 4D составляющие Substance?

Составляющая Substance создаётся с помощью Substance Designer и как правило состоит из числа узлов с различными параметрами. В рамках Substance Designer вы можете определить, какие из этих параметров должны быть «выведены». Эти параметры затем могут быть отображены и изменены в Cinema 4D. Substance Engine просчитает каждое изменение и соответственно адаптирует текстуры вывода.


Все настройки и выводы, которые можно найти в составляющей, были установлены в Substance Designer (Substance: авторские права принадлежат Kay Vriend).

В поле «Выводы» находятся текстуры вывода, которые предоставляют составляющую материалам Cinema 4D. По умолчанию они будут соединенны с соответственными каналами материала с помощью специального шейдера Substance.

В Cinema 4D существуют следующие элементы Substance:

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

В Substance Designer можно задать количество каналов вывода, которые затем будут применяться в Cinema 4D в качестве текстуры.

При передаче проекта (или при использовании Team Render), необходимо на ряду с файлом *.c4d, также передать используемые проектом файлы Substance. Команда поможет вам собрать используемые составляющие.

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

Если это было определенно в Substance Designer, текстуры можно загрузить в Cinema 4D в пределах составляющих и задать им узлы (вам необходимо в Substance Designer лишь применить узел «Color Image Input», который будет отображён в качестве загружаемой текстуры в составляющей), что позволит вам добиться многочисленных эффектов.

Если при использовании Substance анимация во вьюпорте проигрывается слишком медленно, можно принять следующие меры:

Читайте также: