В библиотеке Three.JS доступны несколько типов источников света: Ambient, Directional, Point и Spot. Рассмотрим их особенности и применение. Демонстрация основана на упрощенном проекте с одним кубом.
Ambient Light (Рассеянный свет)
Ambient Light — рассеянный свет, равномерно освещающий всю сцену. Он не создаёт теней и не имеет направленности.
Для создания используется класс AmbientLight. Необходимо указать цвет (например, белый) и интенсивность (например, 0.5). Свет добавляется на сцену с помощью scene.add().
Важно: Ambient Light не взаимодействует с MeshBasicMaterial. Для корректного отображения используйте MeshStandardMaterial. MeshBasicMaterial отображает объект без учёта источников света, что делает его чёрным при отсутствии других источников освещения.
Directional Light (Направленный свет)
Directional Light имитирует направленный источник света, например, солнце. Его положение в пространстве влияет на освещение объектов. Объекты в тени не будут освещены.
Для создания используется класс DirectionalLight. Необходимо указать цвет, интенсивность и позицию источника света. Положение определяет, какие части объектов будут освещены, а какие останутся в тени. Добавление на сцену осуществляется с помощью scene.add().
Directional Light можно использовать совместно с Ambient Light для более реалистичного освещения. Ambient Light обеспечит базовое освещение, а Directional Light добавит тени и более выраженное освещение.
Point Light (Точечный свет)
Point Light имитирует точечный источник света, например, лампочку. Свет исходит из одной точки во всех направлениях в пределах заданного радиуса.
Для создания используется класс PointLight. Необходимо указать цвет, интенсивность, дистанцию (радиус действия) и позицию источника света. Для отладки можно использовать PointLightHelper для визуализации области действия света. Добавление на сцену осуществляется с помощью scene.add().
Spot Light (Прожектор)
Spot Light — направленный источник света, подобный прожектору. Свет исходит из одной точки в определённом направлении.
Для создания используется класс SpotLight. Помимо цвета, интенсивности и позиции, необходимо задать направление света. Добавление на сцену осуществляется с помощью scene.add().
Использование различных типов источников света позволяет создавать в Three.JS реалистичные 3D-сцены. Комбинируя Ambient, Directional, Point и Spot Light, можно добиться желаемого освещения и эффектов теней. Визуализация источников света с помощью хелперов (например, PointLightHelper) упрощает разработку и отладку.