В Three.js объект SpotLight
представляет собой источник света с направленным конусом. В отличие от
PointLight, который освещает пространство во всех
направлениях, SpotLight позволяет создавать сцены с
направленным освещением, подчеркивая определённые объекты и создавая
реалистичные эффекты света и тени. Основные параметры, влияющие на форму
и интенсивность конуса света, включают angle,
penumbra и decay.
Свойство angle определяет ширину конуса
света. Значение измеряется в радианах и задаёт угол между осью
света и границей его конуса.
const spotlight = new THREE.SpotLight(0xffffff, 1);
spotlight.angle = Math.PI / 6; // 30 градусов
Важно учитывать, что angle ограничен сверху значением Math.PI/2, иначе конус света не будет корректно рендериться.
Полутень создаёт эффект мягкого края конуса света,
где интенсивность постепенно уменьшается к границе. Свойство
penumbra принимает значение от 0 до 1:
spotlight.penumbra = 0.5; // Полумягкая граница
Полутень особенно важна при визуализации реалистичных сцен, где жёсткие тени выглядят ненатурально. Комбинация angle и penumbra позволяет точно регулировать, насколько свет рассеивается по объектам и окружению.
Свойство decay задаёт экспоненциальное затухание
света с расстоянием:
spotlight.decay = 2; // Реалистичное затухание по физическим законам
spotlight.distance = 50; // Максимальная дальность действия света
Свойство distance ограничивает радиус действия света. За
пределами этого значения интенсивность светового потока будет равна
нулю.
Для включения теней у SpotLight необходимо:
spotlight.castShadow = true;
spotlight.shadow.mapSize.width = 1024;
spotlight.shadow.mapSize.height = 1024;
spotlight.shadow.camera.near = 0.5;
spotlight.shadow.camera.far = 50;
spotlight.shadow.focus = 1;
penumbra создаёт естественные полутона.Для отладки можно визуализировать конус света с помощью
THREE.SpotLightHelper:
const helper = new THREE.SpotLightHelper(spotlight);
scene.add(helper);
Это помогает точно настроить угол конуса, позицию источника и распределение света по сцене.
angle и низким
penumbra идеально подходит для сцен с акцентом на объект,
например, для театрального освещения.penumbra создаёт естественное
рассеянное освещение, подходящее для интерьерных сцен.decay и distance помогает
избежать слишком резких контрастов и нереалистичных падений света.SpotLightHelper
после изменения позиции или угла света:helper.update();
angle и
penumbra позволяет моделировать сложные сценарии освещения
и создавать глубокие полутени.Эти параметры обеспечивают полный контроль над формой и качеством конуса света, позволяя создавать сцены с высокой степенью реализма и выразительности, где свет и тень взаимодействуют гармонично.