sky — специальный тип слоя в Mapbox GL JS,
предназначенный для отображения неба в трехмерной сцене. Он работает в
связке с параметром fog и 3D-рендерингом камеры, создавая
визуальную среду, которая заменяет плоский фон карты реалистичным
небесным куполом.
Sky layer не является обычным тайловым слоем. Он не привязан к геометрии на поверхности земли и не использует источники данных. Его задача — формирование визуального окружения сцены за счет процедурной графики.
Ключевые особенности:
Sky слой добавляется через метод addLayer у объекта
карты:
map.addLayer({
id: 'sky',
type: 'sky',
paint: {
'sky-type': 'atmosphere'
}
});
Минимальная конфигурация включает:
id — уникальный идентификатор слояtype: 'sky' — тип слояpaint — параметры визуализацииПорядок добавления важен: sky слой должен быть добавлен до или после 3D-слоев в зависимости от требуемого порядка отрисовки, но чаще всего его размещают в нижней части визуального стека сцены.
Основная настройка слоя — sky-type. Он определяет способ
генерации небесного фона.
Режим физически приближенного неба:
'sky-type': 'atmosphere'
В этом режиме:
Используется для реалистичных 3D-сцен.
Более простой режим:
'sky-type': 'gradient'
Особенности:
При использовании sky-type: atmosphere доступны
дополнительные настройки, управляющие физикой неба.
Определяет направление солнца в сцене:
'sky-atmosphere-sun': [0.0, 1.0]
Используется нормализованный вектор направления света. Он влияет на:
Интенсивность солнечного света:
'sky-atmosphere-sun-intensity': 10
Высокие значения создают более контрастное небо, низкие — приглушенное освещение.
Цвет ореола вокруг солнца:
'sky-atmosphere-halo-color': '#ffffff'
Используется для усиления визуального эффекта засветки в области солнца.
Основной цвет атмосферы:
'sky-atmosphere-color': '#88c6ff'
Определяет общий оттенок неба в зависимости от высоты и угла обзора.
При использовании sky-type: gradient управление
осуществляется через набор цветовых параметров.
Основной градиент неба:
'sky-gradient': [
'interpolate',
['linear'],
['sky-radial-progress'],
0.0,
'#87ceeb',
1.0,
'#1e3c72'
]
Градиент может быть линейным или радиальным, в зависимости от выражения интерполяции.
Центр градиента:
'sky-gradient-center': [0, 0]
Позволяет смещать фокус градиента относительно центра сцены.
Радиус влияния градиента:
'sky-gradient-radius': 90
Управляет тем, насколько широко распространяется эффект перехода цветов.
Определяет плавность перехода между небом и землей:
'sky-horizon-blend': 0.5
Этот параметр критичен для создания реалистичной сцены, особенно при наличии 3D-террейна.
Sky layer тесно связан с освещением карты, особенно с источником света:
При изменении положения камеры эффекты sky layer динамически обновляются, создавая ощущение времени суток.
Sky слой реагирует на параметры камеры:
bearing — поворот карты влияет на ориентацию небаpitch — наклон камеры усиливает ощущение глубиныzoom — влияет на визуальное соотношение земли и
небаПри сильном наклоне (pitch > 60°) sky layer становится доминирующим элементом сцены, формируя полноценный небесный купол.
map.addLayer({
id: 'sky',
type: 'sky',
paint: {
'sky-type': 'atmosphere',
'sky-atmosphere-sun': [0.0, 1.0],
'sky-atmosphere-sun-intensity': 15,
'sky-atmosphere-color': '#b3d9ff',
'sky-atmosphere-halo-color': '#ffffff',
'sky-horizon-blend': 0.3
}
});
Такая конфигурация формирует дневную сцену с ярко выраженным солнечным освещением и мягким горизонтом.
Для ночных сцен используется уменьшение интенсивности солнца и изменение цветовой палитры:
'sky-atmosphere-sun-intensity': 0.5,
'sky-atmosphere-color': '#0b1a3a',
'sky-atmosphere-halo-color': '#1b2b5a'
Дополнительно возможно добавление стилизованного градиента для имитации сумерек или ночного освещения города.
Sky layer рендерится на уровне шейдеров GPU и практически не зависит от количества данных. Однако его использование влияет на общую нагрузку сцены косвенно:
При использовании на слабых устройствах предпочтителен режим
gradient, так как он значительно легче.
При включенном terrain sky layer выполняет роль визуального фона, скрывающего границу между геометрией и небом.
Он особенно важен при:
terrain: trueВ таких конфигурациях sky layer становится ключевым элементом композиции сцены, формируя ощущение масштаба и глубины.