В A-Frame компонент light используется
для добавления источников освещения в сцену. Тип
point представляет собой точечный источник
света, распространяющийся во всех направлениях от заданной позиции,
подобно лампочке или свечке. В отличие от
directional или
spot света, point light не имеет
направления и освещает объекты с радиусом действия, который можно
контролировать.
Пример базового объявления:
<a-entity light="type: point; color: #ffffff; intensity: 1; distance: 10; decay: 2" position="0 2 0"></a-entity>
Разбор атрибутов:
type: point — указывает, что источник света
точечный.color — цвет излучаемого света. Поддерживаются HEX,
CSS-цвета и rgb.intensity — сила света. Значения >1 делают свет
ярче, <1 — слабее.distance — радиус, на котором свет оказывает влияние.
По умолчанию свет бесконечен.decay — коэффициент затухания с расстоянием. 1 означает
линейное ослабление, 2 — квадратичное (реалистичное).Point light зависит от координат в пространстве. Его положение
определяется атрибутом position у сущности
<a-entity>. Для достижения реалистичного эффекта
следует учитывать высоту и ориентацию объектов, чтобы свет падал
естественно.
<a-entity light="type: point; intensity: 0.8; distance: 15; decay: 2" position="2 5 -3"></a-entity>
В этом примере свет расположен над сценой и смещен по X и Z. Такое размещение создаёт мягкие тени и естественное освещение.
Интенсивность (intensity) контролирует
яркость. Для дневной сцены лучше использовать значения от 0.5 до 1.2,
для вечерних — от 0.2 до 0.6. Цвет (color) позволяет
моделировать различные источники: тёплый свет лампы (например
#ffdca8) или холодный дневной (#ffffff).
Затухание (decay) в A-Frame реализует физически
корректное ослабление света с расстоянием:
decay: 0 — свет не ослабевает, действует как
бесконечный источник.decay: 1 — линейное затухание, свет постепенно
тускнеет.decay: 2 — квадратичное затухание, соответствует
реальному поведению света.Расстояние (distance) ограничивает
область действия. Если объект находится дальше, чем указанное значение,
свет на него не влияет.
<a-entity light="type: point; intensity: 1.2; distance: 5; decay: 2; color: #ffccaa" position="0 3 0"></a-entity>
Point light может создавать тени с помощью атрибута
castShadow. В A-Frame тени включаются через:
<a-entity light="type: point; intensity: 1; distance: 10; castShadow: true" position="1 4 0"></a-entity>
Особенности работы теней с точечным светом:
distance и decay может
снизить качество теней.shadowMapWidth и shadowMapHeight у рендерера
сцены или через компонент shadow.<a-entity light="type: point; castShadow: true; intensity: 1; distance: 10" position="0 5 0"></a-entity>
Point light можно анимировать, создавая динамическое освещение. Для
этого используют стандартные компоненты animation или
animation__attribute:
<a-entity light="type: point; intensity: 1; distance: 8" position="0 3 0"
animation="property: intensity; from: 0.5; to: 1.5; dir: alternate; dur: 2000; loop: true">
</a-entity>
Пример показывает пульсацию света. Также можно анимировать положение:
<a-entity light="type: point; intensity: 0.8; distance: 10" position="0 2 0"
animation="property: position; to: 0 2 5; dur: 4000; loop: true; dir: alternate">
</a-entity>
Point light часто комбинируется с ambient или directional светом для создания естественной сцены:
<a-entity light="type: ambient; color: #555"></a-entity>
<a-entity light="type: point; intensity: 1; distance: 12" position="2 4 2"></a-entity>
Ambient добавляет базовое освещение без теней, а point light создаёт локальные эффекты и объёмность.
distance и
decay для оптимизации.distance и decay для физически
корректного ослабления света.intensity и color в зависимости
от сцены (день/ночь, интерьер/экстерьер).castShadow только там, где нужно, чтобы
оптимизировать производительность.Point light является ключевым инструментом для создания атмосферы в 3D сценах A-Frame, обеспечивая как декоративное, так и функциональное освещение объектов.