Babylon.js предоставляет набор встроенных процедурных текстур, которые позволяют создавать реалистичные поверхности без необходимости использования внешних изображений. Процедурные текстуры вычисляются динамически на основе математических алгоритмов, что обеспечивает гибкость и экономию памяти. Среди наиболее часто используемых процедурных текстур — Fire, Wood, Marble, Grass. Каждая из них обладает уникальными свойствами и методами настройки.
FireProceduralTexture моделирует динамическое пламя. Текстура обновляется в реальном времени, создавая эффект движения огня на объектах сцены.
Создание и настройка:
const fireTexture = new BABYLON.FireProceduralTexture("fireTexture", 256, scene);
fireTexture.position = new BABYLON.Vector2(0, 0);
fireTexture.speed = 1.5; // скорость анимации
fireTexture.diffuse = new BABYLON.Color3(1, 0.5, 0); // основной цвет огня
Ключевые свойства:
speed — регулирует скорость движения текстуры.diffuse — задаёт основной цвет пламени.time — позволяет вручную контролировать фазу анимации
для синхронизации с другими эффектами.level — степень детализации огня, влияет на визуальную
сложность.Применение:
FireProceduralTexture часто используется для эффекта горящих факелов, магических заклинаний или анимированных источников света. Для усиления реализма рекомендуется комбинировать с particle systems.
WoodProceduralTexture создаёт текстуру древесины с естественными кольцами и вариациями оттенка.
Пример создания:
const woodTexture = new BABYLON.WoodProceduralTexture("woodTexture", 512, scene);
woodTexture.ampScale = 50; // амплитуда колебаний текстуры
woodTexture.woodColor = new BABYLON.Color3(0.6, 0.3, 0.1); // основной цвет древесины
Основные свойства:
ampScale — регулирует размер колец древесины.woodColor — задаёт базовый цвет дерева.numberOfWaves — количество колебаний, определяющих узор
кольцевой структуры.noiseScale — степень случайной текстурной
вариативности, придающая натуральность.WoodProceduralTexture особенно эффективна для создания мебели, деревянных панелей, пола и других объектов с натуральной древесной поверхностью. Комбинация с нормалями позволяет добиться визуальной глубины.
MarbleProceduralTexture имитирует мрамор с мягкими прожилками и естественными цветными переходами.
Пример создания:
const marbleTexture = new BABYLON.MarbleProceduralTexture("marbleTexture", 512, scene);
marbleTexture.numberOfTilesHeight = 5;
marbleTexture.numberOfTilesWidth = 5;
marbleTexture.amplitude = 0.8;
marbleTexture.octaves = 4; // количество уровней фрактальной детализации
Основные свойства:
amplitude — интенсивность цветовых переходов.numberOfTilesHeight и numberOfTilesWidth —
задают масштаб и плотность узора.marbleColor — основной цвет мрамора.octaves — количество уровней шумовой детализации,
влияет на реалистичность прожилок.Процедурная мраморная текстура полезна для архитектурных сцен, статуй, каменных плит и декоративных элементов, создавая богатый визуальный эффект без тяжёлых изображений.
GrassProceduralTexture формирует имитацию травяного покрова с вариативностью цветовых оттенков.
Создание текстуры:
const grassTexture = new BABYLON.GrassProceduralTexture("grassTexture", 1024, scene);
grassTexture.GrassColor = new BABYLON.Color3(0.1, 0.6, 0.2);
grassTexture.GrassHeight = 1.5; // высота травы в условных единицах
grassTexture.GrassDensity = 0.8; // плотность травяного покрова
Основные свойства:
GrassColor — основной оттенок травы.GrassHeight — регулирует высоту травинок.GrassDensity — плотность травяного покрова.bendingSpeed — скорость анимации колебаний под
воздействием ветра.bendingAmount — сила изгиба травы.GrassProceduralTexture оптимальна для ландшафтного дизайна, полей и парковых зон. В сочетании с динамическим освещением и эффектами тумана текстура создаёт реалистичный природный вид.
Использование встроенных процедурных текстур значительно упрощает создание разнообразных поверхностей, экономит память и позволяет легко изменять визуальные характеристики объектов через параметры текстуры.