AmbientLight — это тип света, который равномерно
освещает все объекты сцены без направления и теней. В отличие от
направленных источников света, таких как DirectionalLight
или SpotLight, амбиентный свет не создает объемных эффектов
и не зависит от позиции или ориентации источника. Он используется для
базового освещения сцены, чтобы предотвратить полностью черные участки,
особенно в сочетании с другими источниками света.
Для создания амбиентного света используется конструктор:
const ambientLight = new THREE.AmbientLight(color, intensity);
color — цвет света, может быть задан как строка
('#ffffff'), числом (0xffffff) или объектом
THREE.Color.intensity — яркость света, числовое значение по
умолчанию 1. Значения выше 1 делают свет ярче, ниже 1 —
тусклее.Пример создания мягкого белого света:
const ambientLight = new THREE.AmbientLight(0xffffff, 0.5);
scene.add(ambientLight);
Амбиентный свет взаимодействует со всеми материалами, которые
учитывают освещение (MeshStandardMaterial,
MeshPhongMaterial, MeshLambertMaterial). Он не
влияет на материалы MeshBasicMaterial, так как они
отображаются без освещения.
Эффект амбиентного света заключается в том, что он равномерно подсвечивает все поверхности объекта, сохраняя цвет материала, но без создания теней или бликов.
const material = new THREE.MeshStandardMaterial({ color: 0x00ff00 });
const geometry = new THREE.BoxGeometry();
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);
При добавлении AmbientLight к сцене куб будет равномерно
освещен, независимо от положения других источников света.
Изменение цвета и интенсивности может значительно влиять на атмосферу сцены:
ambientLight.color.setHex(0xffaa00); // оранжевый свет
ambientLight.intensity = 0.8; // увеличенная яркость
Комбинация цвета и интенсивности позволяет имитировать различное время суток: холодный голубой свет для дневного времени, теплый оранжевый — для заката.
Амбиентный свет идеально сочетается с направленными источниками:
DirectionalLight создает тени и направленные
блики.PointLight освещает объекты радиально.SpotLight дает концентрированный пучок света с
тенями.Амбиентный свет гарантирует, что даже в тени от этих источников объекты будут частично освещены, создавая более естественную визуализацию.
const directionalLight = new THREE.DirectionalLight(0xffffff, 1);
directionalLight.position.set(5, 10, 7.5);
scene.add(directionalLight);
const ambientLight = new THREE.AmbientLight(0x404040, 0.5);
scene.add(ambientLight);
Цвет и интенсивность амбиентного света могут изменяться в реальном времени, что позволяет реализовать эффекты смены времени суток или динамической атмосферы:
function updateLighting(time) {
const intensity = Math.abs(Math.sin(time)) * 0.8 + 0.2;
ambientLight.intensity = intensity;
ambientLight.color.setHSL(0.1, 0.5, intensity);
}
В этом примере интенсивность плавно изменяется со временем, создавая эффект мерцания или дневного цикла.
Амбиентный свет является фундаментальной частью системы освещения в Three.js, обеспечивая базовый уровень видимости и улучшая восприятие объектов до применения сложных источников света и теней.