HemisphereLight — это вид освещения, который моделирует
рассеянное световое окружение, исходящее сверху и снизу сцены. В отличие
от DirectionalLight или PointLight, этот
источник света не имеет конкретной позиции и не создаёт резких теней, а
добавляет мягкое освещение, имитируя атмосферное или небесное
освещение.
Конструктор выглядит следующим образом:
const light = new THREE.HemisphereLight(skyColor, groundColor, intensity);
Пример создания базового освещения:
const hemiLight = new THREE.HemisphereLight(0xffffff, 0x444444, 1.0);
hemiLight.position.set(0, 200, 0);
scene.add(hemiLight);
HemisphereLight симулирует двухцветное
освещение, что позволяет объектам выглядеть естественно при
дневном освещении.groundColor.skyColor).HemisphereLight
не отбрасывает тени, но в последних версиях Three.js можно использовать
с дополнительными настройками для создания эффектов мягких теней через
LightProbe или комбинирование с
DirectionalLight.HemisphereLight хорошо взаимодействует с материалами,
поддерживающими физически корректное освещение (PBR),
такими как MeshStandardMaterial и
MeshPhysicalMaterial. Он особенно эффективен для имитации
окружающего света в ландшафтных сценах, интерьерах с окнами или
моделировании дневного света:
const geometry = new THREE.SphereGeometry(50, 32, 32);
const material = new THREE.MeshStandardMaterial({ color: 0x8888ff });
const sphere = new THREE.Mesh(geometry, material);
scene.add(sphere);
В сочетании с HemisphereLight объект будет получать
мягкое верхнее освещение и тёплое отражение от нижней части.
Выбор skyColor и groundColor позволяет
добиться разных эффектов:
Пример создания мягкого закатного света:
const sunsetLight = new THREE.HemisphereLight(0xffcc66, 0x663366, 0.8);
scene.add(sunsetLight);
HemisphereLight часто используется как
окружающий свет для сцены в паре с
DirectionalLight или PointLight, чтобы
добавить реалистичное освещение без резких теней:
const dirLight = new THREE.DirectionalLight(0xffffff, 0.5);
dirLight.position.set(100, 200, 100);
scene.add(dirLight);
Такой подход позволяет сочетать мягкий рассеянный свет с направленным солнечным или искусственным источником, создавая глубину и контраст.
HemisphereLight является лёгким источником света, так
как не вычисляет тени и не требует сложных расчётов
освещённости. Это делает его идеальным для сцен с большим количеством
объектов, когда важно быстрое рендеринг-окружение.
Поскольку свет не имеет реальной позиции и интенсивность равномерна,
HemisphereLight удобно использовать в анимациях, где
требуется динамическая смена освещения, например,
имитация дня и ночи. Изменение цвета и интенсивности в реальном времени
создаёт естественные эффекты:
function updateLighting(time) {
hemiLight.color.setHSL(0.6, 1, Math.max(0.2, Math.sin(time) * 0.5 + 0.5));
hemiLight.groundColor.setHSL(0.1, 1, Math.max(0.1, Math.cos(time) * 0.3 + 0.3));
}
Эта техника позволяет плавно менять освещение сцены без пересчёта сложных теней или дополнительных источников света.
HemisphereLight — базовый инструмент для создания
естественного и мягкого окружного освещения в
трехмерных сценах, особенно в ландшафтных и интерьерных
визуализациях.