Hemisphere light

Hemisphere Light — это тип источника света в библиотеке A-Frame, предназначенный для имитации окружающего освещения, создающего эффект неба и земли. В отличие от Directional или Point Light, этот свет не имеет конкретного источника, а равномерно подсвечивает объекты, создавая мягкие тени и реалистичную атмосферу.


Основные свойства

Hemisphere Light в A-Frame имеет несколько ключевых параметров:

  • skyColor (или color) — цвет верхней части света, имитирующей небесную подсветку. Обычно это светло-голубой или белый оттенок.
  • groundColor — цвет нижней части, отражающий свет от поверхности земли. Чаще используется теплый коричнево-оранжевый оттенок.
  • intensity — интенсивность света. Значение по умолчанию 1.0. Позволяет регулировать яркость освещения.
  • position — положение света в сцене. Для hemisphere light позиция не имеет критического значения, так как свет равномерно воздействует на все объекты.
  • visible — включает или отключает отображение света в сцене.

Пример создания:

<a-scene>
  <a-entity light="type: hemisphere; color: #ffffff; groundColor: #444444; intensity: 1"></a-entity>
  <a-box position="0 1 -5" rotation="0 45 0" color="#4CC3D9"></a-box>
  <a-plane rotation="-90 0 0" width="10" height="10" color="#7BC8A4"></a-plane>
</a-scene>

В этом примере верх света белый, имитирующий дневное небо, нижний — тёмно-серый, создающий мягкий контраст от земли.


Отличия от других типов света

  • Directional Light — имитирует солнце, создаёт четкие тени и направленный свет. Позиция и направление критичны.
  • Point Light — светящаяся точка, излучающая во все стороны. Эффект локализован.
  • Spot Light — световой конус с фокусом, используется для сцен с точечными эффектами.
  • Hemisphere Light — создает плавное, глобальное освещение, не создаёт резких теней и направленного света.

Hemisphere light хорошо подходит для внешних сцен, дневного освещения и визуализации открытых пространств.


Тонкости работы с цветами

  • Смешение skyColor и groundColor создаёт градиентное освещение. Например, голубое небо + оранжевая земля создают эффект заката.
  • Цвета задаются в формате HEX или именами CSS (red, white и т.д.).
  • Можно комбинировать с другими источниками света для более реалистичной сцены. Например, hemisphere light для основного освещения и directional light для акцентных теней.
<a-entity light="type: hemisphere; color: #87CEEB; groundColor: #FFA500; intensity: 0.8"></a-entity>
<a-entity light="type: directional; color: #ffffff; intensity: 0.5" position="2 4 -3"></a-entity>

Управление динамикой света

Hemisphere Light можно изменять динамически через JavaScript:

const hemiLight = document.querySelector('[light]').getObject3D('light');
hemiLight.intensity = 1.5; // увеличить яркость
hemiLight.color.set('#ffdddd'); // изменить верхний цвет
hemiLight.groundColor.set('#333300'); // изменить нижний цвет

Таким образом, можно создавать динамическое время суток, плавно изменяя оттенки skyColor и groundColor.


Влияние на материалы

  • Объекты с материалом standard или phong реагируют на hemisphere light.
  • Материалы типа basic не отображают мягкое освещение, так как не учитывают источники света.
  • Для реалистичного внешнего вида рекомендуется комбинировать hemisphere light с ambient light, чтобы подчеркнуть тени и отражения.

Рекомендации по использованию

  • Использовать для внешних ландшафтов, сцен с открытым небом и дневного освещения.
  • Для ночных сцен можно задать темные skyColor и groundColor, имитируя лунный свет.
  • Для интерактивных приложений лучше комбинировать с другими типами света для создания контраста и глубины.

Hemisphere Light в A-Frame — мощный инструмент для создания естественного глобального освещения, обеспечивающий плавные переходы и атмосферность сцены без сложных настроек теней и направленного света. Его гибкость позволяет быстро настраивать дневное и вечернее освещение, делая сцену визуально насыщенной.