Directional light

Directional Light в A-Frame представляет собой световой источник, который освещает сцену равномерно в одном направлении, как солнечные лучи. В отличие от точечных источников (Point Light) или прожекторов (Spot Light), он не имеет позиции, влияющей на интенсивность света, а только направление, определяемое ориентацией объекта. Это делает его идеальным для имитации дневного света или освещения больших сцен без затенённых углов.


Создание Directional 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 сохраняет отсутствие скручивания.

Тени (Shadows)

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 часто комбинируется с:

  • Ambient Light — обеспечивает базовое равномерное освещение, чтобы тени не были полностью чёрными.
  • Point Light — акцентное освещение конкретных объектов.
  • Spot 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.