Node Material Editor (NME) — это визуальный инструмент для создания шейдеров с помощью нодов (узлов). Основное преимущество подхода на основе нодов — наглядность и возможность строить сложные материалы без написания кода шейдера вручную. Каждый узел выполняет определённую функцию: генерацию значений, математические операции, управление текстурами или освещением.
Рабочая область (Workspace) Центральная панель редактора, где размещаются узлы. Можно перетаскивать узлы, соединять их между собой проводами, настраивать их параметры через контекстное меню. Для удобства предусмотрено масштабирование и панорамирование сцены.
Панель узлов (Node Palette) Содержит все доступные типы узлов, разделённые по категориям:
Inspector (Инспектор) Отображает свойства выбранного узла. Позволяет менять параметры напрямую, настраивать значения по умолчанию, выбирать тип данных и подключать внешние ресурсы, такие как текстуры.
Панель экспорта и сохранения Предоставляет возможности экспортировать материал в формате JSON, который можно загрузить в проект Babylon.js, или сгенерировать код шейдера GLSL/HLSL для интеграции в существующие сцены.
Добавление узла: перетаскивание из панели Node Palette в рабочую область.
Соединение узлов: щелчок на выходе одного узла и перетаскивание к входу другого. Провода автоматически визуализируют поток данных.
Типы соединений:
Особое внимание уделяется совместимости типов. Babylon.js автоматически проверяет тип данных при соединении узлов, предотвращая ошибки на этапе визуального проектирования.
TextureNode Подключение текстур для diffuse, normal, emissive и других карт. Позволяет управлять координатами UV, фильтрацией и повторением текстуры.
Multiply / Add / Subtract Основные арифметические узлы. Используются для комбинации значений цветов, световоздействий и других числовых данных.
Lerp Линейная интерполяция между двумя значениями. Часто используется для смешивания текстур или цветовых эффектов.
Normal / WorldPosition / ViewDirection Специальные узлы, предоставляющие информацию о положении объекта в пространстве, нормалях и направлении камеры, что необходимо для сложного освещения и эффектов отражения.
Output Nodes
Каждый узел имеет свой набор параметров, доступный в Inspector:
Node Material Editor поддерживает живое обновление сцены, что позволяет видеть изменения в реальном времени без необходимости пересборки сцены.
Node Material Editor предоставляет несколько способов экспорта:
BABYLON.NodeMaterial.Parse в любой проект Babylon.js.Пример использования экспортированного материала:
BABYLON.NodeMaterial.Parse(JSONData, scene, true);
Этот метод создаёт материал, полностью соответствующий структуре узлов из редактора, включая все текстуры и вычисления.
Node Material Editor полностью совместим с программной частью Babylon.js. Экспортированные материалы можно комбинировать с другими материалами, изменять параметры узлов через скрипт:
material.getInputBlockByName("diffuseColor").value = new BABYLON.Color3(1, 0, 0);
Это позволяет динамически управлять шейдерами во время выполнения сцены, создавая интерактивные эффекты без изменения исходного материала в редакторе.