В этом уроке мы рассмотрим способ быстро изменить оттенок Texture на объекте, чтобы создать несколько копий с разными цветами.
Видеоверсия этого руководства в настоящее время недоступна на этом языке, но доступна на английском языке при выборе соответствующего языка в верхней части страницы.
Текстовая расшифровка видео
Привет всем!
В этом уроке мы рассмотрим способ быстро изменить оттенок Texture на объекте, чтобы создать несколько копий с разными цветами.
Мы сделаем это без изменения исходного изображения Texture и без создания дополнительных Materials, используя только один Material и поле Object Index у разных копий.
Этот урок был записан в Blender 3.6.
Итак, начнем! На экране вы видите сцену Blender, в которой я импортировал свою 3D-модель в том виде, в каком она выглядит сразу после загрузки.

Здесь есть два объекта, которые используют один и тот же Material и один и тот же набор PBR Textures.
В частности, Texture Base Color окрашивает основной корпус и кончик маркера в желтый цвет с помощью UV mapping. Если я дублирую эти объекты, чтобы получить больше маркеров, то, очевидно, получаю больше желтых маркеров.

Чтобы изменить цвета копий, существует много способов, некоторые подходят лучше других в зависимости от ситуации. В данном случае изменяемый цвет является однородным, и что особенно важно, остальная часть объекта черная, поэтому мы можем использовать узел Hue Saturation Value, чтобы изменить оттенок Texture Base Color. Давайте посмотрим, как это сделать.
В Shader Editor я добавляю узел Color HSV между Texture Base Color и её входом в PBR node. Этот узел представляет собой простой PBR node, который я использовал во многих своих 3D-моделях, и его легко можно заменить узлом Principled BSDF. Не обращайте внимания на его присутствие здесь.

Изменяя значение поля Hue в диапазоне от 0.0 до 1.0, мы можем менять оттенок Texture в окрашенных областях, оставляя черные части без изменений.

Однако таким образом мы изменим цвет всех объектов, созданных путем дублирования оригинала, так как эти копии используют один и тот же material.
Для каждой копии мы можем задать числовое значение, называемое Object Index или Pass Index. Для этого нужно выбрать корпус маркера, открыть вкладку Object в Properties editor, затем изменить значение поля Pass Index в разделе Relations.

Я выполняю это действие и для других копий. Очевидно, что объекты с одинаковым числовым индексом будут иметь одинаковый цвет. Нет необходимости менять Pass Index для колпачков маркера, так как эти объекты полностью черные.
Значение Pass Index объекта можно получить в Shader Editor, используя выход Object Index узла Input Object Info.

Однако значение, получаемое из Object Info, будет целым числом, большим или равным 0, тогда как нам нужно значение в диапазоне от 0 до 1 для входа Hue узла HSV.
Ничего страшного! Blender предоставляет несколько узлов, позволяющих преобразовать значения в диапазон от 0 до 1.
Например, можно использовать узел Converter Math в режиме Divide, разделив значение Object Index на максимальное значение, заданное для Pass Index.

Также можно использовать узел Converter Map Range и задать максимальное значение Pass Index в поле From Max. Результат будет таким же, как при использовании Math Divide.

Разумеется, можно использовать и другие значения для деления или отображения, получая заметно разные цвета.
В этом плане узел Map Range имеет преимущество, так как позволяет ограничить отображение более узким диапазоном значений. Посмотрите, что происходит, если установить поля To Min и To Max в 0.0 и 0.5, или в 0.5 и 1.0.

В итоге: мы можем изменить оттенок одной Texture, примененной к нескольким объектам, используя числовое значение Pass Index, которое свободно назначается копиям исходного объекта. Таким образом можно получить объекты с разным внешним видом, используя всего один Material и один набор Textures.
Надеюсь, этот урок был полезен! До скорой встречи!