Directional Light в A-Frame представляет собой световой источник, который освещает сцену равномерно в одном направлении, как солнечные лучи. В отличие от точечных источников (Point Light) или прожекторов (Spot Light), он не имеет позиции, влияющей на интенсивность света, а только направление, определяемое ориентацией объекта. Это делает его идеальным для имитации дневного света или освещения больших сцен без затенённых углов.
Directional Light создаётся с помощью тега
<a-light> с атрибутом
type="directional":
<a-scene>
<a-light type="directional" color="#ffffff" intensity="1" position="0 5 0" rotation="-45 0 0"></a-light>
<a-box position="0 0 -5" rotation="0 45 0" color="#4CC3D9"></a-box>
</a-scene>
Ключевые атрибуты:
type="directional" — определяет тип света.color — цвет излучаемого света (может быть в формате
HEX, RGB, или CSS color name).intensity — яркость света, значение от 0 до 1 или выше
(сверхяркие эффекты).position — позиция объекта-света, влияет на направление
тени, но не на интенсивность.rotation — определяет направление света; часто
используется для имитации угла падения солнечных лучей.Направление света задаётся через вращение объекта,
на котором установлен Directional Light. По умолчанию свет направлен
вдоль отрицательной оси Z сцены. Для точной настройки освещения часто
используют комбинацию rotation и position:
<a-light type="directional" rotation="-45 30 0" intensity="0.8"></a-light>
-45 по X наклоняет свет вниз.30 по Y поворачивает свет по горизонтали.0 по Z сохраняет отсутствие скручивания.Directional Light поддерживает создание тёплых и мягких теней, что критично для реалистичного освещения:
<a-light type="directional" intensity="1" castShadow="true"
shadow-mapWidth="1024" shadow-mapHeight="1024"
shadow-camera-left="-10" shadow-camera-right="10"
shadow-camera-top="10" shadow-camera-bottom="-10"
shadow-camera-near="0.1" shadow-camera-far="50"></a-light>
Основные параметры:
castShadow="true" — активирует тени.shadow-mapWidth и shadow-mapHeight —
разрешение теневой карты, влияет на резкость.shadow-camera-* — определяет границы области, в которой
генерируются тени. Чем больше зона, тем более распределёнными становятся
тени на больших объектах.shadow-camera-near и shadow-camera-far —
задают диапазон видимости теней.Реализация теней требует наличия материалов, поддерживающих
тени, например standard или
physical.
Цвет света может существенно менять атмосферу сцены:
#FFDAB9) создаёт ощущение заката.#ADD8E6) имитирует дневное
освещение.intensity) должна быть сбалансирована с
цветом фона и материалами объектов.Пример настройки дневного света:
<a-light type="directional" color="#ffffff" intensity="0.9" rotation="-60 20 0"></a-light>
Directional Light можно изменять в реальном времени через JavaScript, что полезно для анимации солнца или смены времени суток:
const light = document.querySelector('a-light');
let angle = 0;
function animateLight() {
angle += 0.1;
light.setAttribute('rotation', `${-45 + Math.sin(angle) * 30} 0 0`);
requestAnimationFrame(animateLight);
}
animateLight();
Это позволяет имитировать движение солнца по небосклону, создавая плавное изменение теней и интенсивности.
Для достижения реалистичной сцены Directional Light часто комбинируется с:
Пример:
<a-light type="ambient" color="#555555"></a-light>
<a-light type="directional" color="#ffffff" intensity="1" rotation="-45 0 0" castShadow="true"></a-light>
Это создаёт естественный световой баланс и реалистичные тени.
Directional Light является основным инструментом для создания реалистичного, направленного освещения, управляемого как статически, так и динамически, с поддержкой теней и тонкой настройки атмосферы сцены. Его интеграция с другими типами света позволяет достичь профессионального визуального результата в A-Frame.