Пользовательский материал на основе нод.
Этот материал используется для описания пользовательских настроек материалов, экспортируемых из «Блендера», «3дс Макса» или «Майи». Может быть физически основанным или нефизическими в зависимости от используемых нод.
Изменение цвета материала, указанного в ноде "RGB"
:
const obj = app.scene.getObjectByName('MyObj');
const mat = obj.material;
const index = mat.nodeRGBMap['RGB']; // 'RGB' — имя ноды RGB
mat.nodeRGB[index] = new v3d.Vector4(1, 0, 0, 1); // новый цвет в формате RGBA (красный)
Изменение значения, указанного в ноде "Value"
:
const obj = app.scene.getObjectByName('MyObj');
const mat = obj.material;
const index = mat.nodeValueMap['Value'];
mat.nodeValue[index] = 0.5; // новое значение
parameters — (необ.) объект с одним или несколькими свойствами, определяющими внешний вид материала. Сюда можно передать любое свойство материала (включая любое свойство, унаследованное от Material).
Исключением является свойство color (по умолчанию 0xffffff
, белый цвет). В случае, если параметр nodeGraph не подан на вход конструктора, свойство цвета используется для генерации альтернативного нодового графа, который будет рендерить данный цвет.
// nodeGraph не подан, материал отображает красный цвет
const mat = new MeshNodeMaterial({color: 'red'});
Разработка нодовых материалов с помощью «Ява Скрипта» может стать нетривиальной задачей. Намного эффективнее использовать пакет моделирования, в котором данные материалы отображаются прямо во вьюпорте.
Смотрите свойства базового класса Material.
Дополнительные графы, представляющие нодовые группы в составе главного графа нодового материала.
Карта окружения. Для обеспечения физически корректного рендеринга следует добавлять только те карты окружения, которые были предварительно обработаны PMREMGenerator. Назначается автоматически из соответствующего объекта CubeReflectionProbe, если Material.envMapAutoAssign имеет значение true
. По умолчанию — null
.
Устанавливает интенсивность карты окружения путем умножения ее цвета. По умолчанию 1
.
Матрица, используемая для применения эффекта параллакса к .envMap материала. Эта матрица переносит преобразование из мирового пространства в пространство конкретного зонда отражения, карту окружения которого этот материал использует для рендеринга. Вычисляется автоматически, если Material.envMapAutoAssign равен true
. По умолчанию используется единичная матрица.
Матрица, обратная к .envMapParallaxMatrix. Используется для применения эффекта параллакса к .envMap материала. Вычисляется автоматически, если Material.envMapAutoAssign равен true
. По умолчанию используется единичная матрица.
Определяет тип объема параллакса. Такой же, как CubeReflectionProbe.parallaxType. Назначается автоматически из соответствующего CubeReflectionProbe, если Material.envMapAutoAssign равен true
. По умолчанию используется ReflectionProbeTypeInfinite.
Определяет, будет ли материал использовать плоское освещение. По умолчанию false
.
Определяет, будет ли туман влиять на данный материал. По умолчанию true
.
Используется для проверки того, представляет ли данный экземпляр класса нодовый материал. Вы не должны изменять этот параметр, так как он используется для оптимизации внутри движка.
Индекс материала. Используется для определения соответствующего выхода блендеровской ноды object info.
Граф, содержащий ноды материала.
Массив значений Vector4, который содержит значения цветов "RGB"-нод материала. Обратите внимание, что эти цвета представлены 4-мерным вектором, а не классом Color.
Сопоставляет имя "RGB"-ноды с индексом в массиве .nodeRGB. Используется для определения того, какое значение цвета должно быть обновлено, см. пример выше.
Объект с текстурами материалов. Он сопоставляет имена текстур с textures. Вы можете использовать его для динамического назначения новых текстур материалу.
Массив числовых значений, которые содержат значения "Value"-нод материала.
Сопоставляет имя "Value"-ноды с индексом в массиве .nodeValue. Используется для определения значения, которое должно быть обновлено, см. пример выше.
Профиль материала ноды, может быть "blender"
, "max"
или "maya"
.
Смотрите методы базового класса Material.
Проверяет, содержит ли материал ноды, использующие эффект GTAO.
Подключает текстуру ко входу указанной ноды. И нода и её вход определяются по имени.
Проверяет, является ли данный материал неосвещаемым (основан на эмиссивных нодах).
Ищет и возвращает ноду по заданному имени.
Определяет цвет, подданный на вход указанной ноды.
Определяет текстуру, подданную на вход указанной ноды.
Определяет числовое значение, поданное на вход указанной ноды.
Анализирует материал и возвращает главную шейдерную ноду.
Анализирует материал и возвращает значение «стандартного» параметра. Если данный параметр не может быть установлен, возвращает значение по умолчанию.
Поддерживаемые параметры:
0xffffff
(белый).null
(текстура отсутствует).1.0
(непрозрачный).0.5
(полуметалличный).null
(текстура отсутствует)0.5
.null
(текстура отсутствует)null
(текстура отсутствует)1.0
.null
(текстура отсутствует)(1.0, 1.0)
.0x000000
(чёрный).null
(текстура отсутствует)0.0
.
Проверяет, содержит ли нодовый материал ноду указанного типа (nodeType
).
Проверяет, содержит ли материал ноды Light Path, Ray Switch, либо ноды OSL.
Пробегает все ноды материала и вызывает указанную функцию для каждой.
Генерирует шейдеры и обновляет другие параметры материала на основе указанного .nodeGraph.
Проверяет, использует ли материал аддитивную прозрачность.
Проверят, может ли мировой материал быть упрощён до одного цвета и возвращает этот цвет. Метод используется внутри движка для оптимизации.
Генерирует имя текстурного юниформа на основе типа и произвольного индекса (например текстурного индекса внутри ресурса glTF).
Осуществляет преобразование нодового графа GLTF в формат, используемый свойством .nodeGraph материала.
Пробегает все ноды материала и вызывает указанную функцию для каждой.
Используйте пазлы материалов для управления материалами без программирования.
О том как получить исходный код этого модуля читайте тут.