2K подписчиков

Смешивание текстур по Vertex Color в 3DS MAX

Vertex Color - значения от 0 до 1 (или от 0 до 255), которые могут быть добавлены к точкам полигональной сетки. VC поддерживаются большинством игровых движков, включая формат файла FBX.

Vertex Color - значения от 0 до 1 (или от 0 до 255), которые могут быть добавлены к точкам полигональной сетки. VC поддерживаются большинством игровых движков, включая формат файла FBX.

VC – может быть использован, как для драфтовой покраски модели например в ZВrush, в простые цвета, так и нести в себе информацию о цвете, для подмешивания материалов в основной – дефолтный.

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

Vertex Color - значения от 0 до 1 (или от 0 до 255), которые могут быть добавлены к точкам полигональной сетки. VC поддерживаются большинством игровых движков, включая формат файла FBX.-2

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

Важно. После создания меша необходимо сбросить VC в черный цвет, иначе по такому графу ShaderFX бленд будет работать некорректно. Это можно сделать в Editable Poly (в модификаторе Edit Poly этой секции нет) в блоке Vertex Properties или покрасить в черный цвет вертексы в модификаторе VertexPaint.

Vertex Color - значения от 0 до 1 (или от 0 до 255), которые могут быть добавлены к точкам полигональной сетки. VC поддерживаются большинством игровых движков, включая формат файла FBX.-3

Смешивание настраиваем в ShaderFX. Для этого нужно перейти в нодовый редактор материалов в Максе. В нем создать мат DirectX Shader.

Vertex Color - значения от 0 до 1 (или от 0 до 255), которые могут быть добавлены к точкам полигональной сетки. VC поддерживаются большинством игровых движков, включая формат файла FBX.-4

Появится два связанных материала. Первый Physical Material – он нам по факту не нужен. И второй DirectX Shader. Переходим в последний. В нем в блоке DirectX Shader нужно поменять в выпадающем списке HLSL File на ShaderFX. Далее открываем сам граф по кнопке Open ShaderFX.

Vertex Color - значения от 0 до 1 (или от 0 до 255), которые могут быть добавлены к точкам полигональной сетки. VC поддерживаются большинством игровых движков, включая формат файла FBX.-5

Создаем такой граф.

Vertex Color - значения от 0 до 1 (или от 0 до 255), которые могут быть добавлены к точкам полигональной сетки. VC поддерживаются большинством игровых движков, включая формат файла FBX.-6

Ноды для текстур называются Texture Map, нам нужны 4 штуки. Первый под базовую текстуру для черного VC и три под каждый основной цвет: красный (red), зеленый (green), синий (blue).

Смешивать будем через ноду LerpOp – в списке нод ее можно найти под названием Linear Interpolate Mix. Их понадобится 3 штуки. Также нужна нода Vertex Color – она будет маской для смешивания по цвету вертексов.

Добавляем все необходимые для смешивания текстуры в ноды Texture Map и подключаем наш граф на вход Diffuse Color в ноду TraditionalGameSurfaceShader. Всё, граф для смешивания по дифьюзу готов. При необходимости можно также настроить смешивание нормалки, прозрачности и других карт для каждого материала. Но если модель не будет использоваться напрямую в Максе, то это можно попустить. А все дальнейшие настройки делать уже в том движке, в котором будет использоваться меш.

Для покраски меша по VC добавляем модификатор VertexPaint. В нем окрашиваем все вертексы в черный цвет, если не сделали это ранее. Иначе смешивание будет работать не так как задумано. При этом проявится базовая текстура.

Vertex Color - значения от 0 до 1 (или от 0 до 255), которые могут быть добавлены к точкам полигональной сетки. VC поддерживаются большинством игровых движков, включая формат файла FBX.-7

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

Vertex Color - значения от 0 до 1 (или от 0 до 255), которые могут быть добавлены к точкам полигональной сетки. VC поддерживаются большинством игровых движков, включая формат файла FBX.-9

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

Vertex Color - значения от 0 до 1 (или от 0 до 255), которые могут быть добавлены к точкам полигональной сетки. VC поддерживаются большинством игровых движков, включая формат файла FBX.-10
Vertex Color - значения от 0 до 1 (или от 0 до 255), которые могут быть добавлены к точкам полигональной сетки. VC поддерживаются большинством игровых движков, включая формат файла FBX.-11
Vertex Color - значения от 0 до 1 (или от 0 до 255), которые могут быть добавлены к точкам полигональной сетки. VC поддерживаются большинством игровых движков, включая формат файла FBX.-12

Есть еще один нюанс. При лодировании меша нужно следить, чтобы не съехали маски по VC в процессе упрощения сетки.

Больше интересного в Телеграм канале "Записки 3D-шника" https://t.me/notes3drus

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

Пишите своё мнение в комментариях, задавайте вопросы, подписывайтесь на канал и обязательно поддержите лайком. Это важно для развития канала. Спасибо.

Что такое UDIM UV-развертка
Записки 3D-шника29 ноября 2022