Этот свет излучается из одной точки в одном направлении, вдоль конуса, размер которого увеличивается тем больше, чем дальше от света он находится.
Этот свет может отбрасывать тени - подробности смотрите на странице SpotLightShadow.
// white spotlight shining from the side, casting a shadow
const spotLight = new v3d.SpotLight(0xffffff);
spotLight.position.set(100, 1000, 100);
spotLight.castShadow = true;
spotLight.shadow.mapSize.width = 1024;
spotLight.shadow.mapSize.height = 1024;
spotLight.shadow.camera.near = 500;
spotLight.shadow.camera.far = 4000;
spotLight.shadow.camera.fov = 30;
app.scene.add(spotLight);
color — (необязательно) шестнадцатеричный цвет света. По умолчанию 0xffffffff (белый).
intensity — (необязательно) числовое значение силы/интенсивности света. По умолчанию - 1.
distance — Максимальная дальность действия света. По умолчанию 0 (без ограничения).
angle — Максимальный угол рассеивания света от его направления, верхняя граница которого равна Math.PI/2.
penumbra — Процент конуса прожектора, который ослаблен из-за полутени. Принимает значения от нуля до 1. По умолчанию - ноль.
decay — Величина ослабления света в зависимости от расстояния до него.
Создает новый SpotLight.
Общие свойства смотрите в базовом классе Light.
Максимальный размах прожектора, в радианах, от его направления. Должно быть не более Math.PI/2. По умолчанию Math.PI/3.
Если установить значение true, свет будет отбрасывать динамические тени. Предупреждение: Это дорого и требует настройки, чтобы тени выглядели правильно. Подробности смотрите в SpotLightShadow. По умолчанию используется значение false.
Величина ослабления света в зависимости от расстояния до него.
В режиме physically correct затухание = 2 приводит к физически реалистичному падению света. По умолчанию используется значение 1.
Default mode — Когда расстояние равно нулю, свет не ослабевает. Когда расстояние ненулевое, свет ослабевает линейно от максимальной интенсивности в положении света до нуля на данном расстоянии от света.
Physically correct режим — Когда расстояние равно нулю, свет будет ослабевать по закону обратного квадрата до бесконечного расстояния. Когда расстояние ненулевое, свет будет ослабевать по закону обратных квадратов до тех пор, пока не приблизится к отсечке расстояния, где он будет быстро и плавно ослабевать до 0. По своей сути, отсечки не являются физически корректными.
По умолчанию 0.0.
Процент конуса прожектора, который ослаблен из-за полутени. Принимает значения от нуля до 1. По умолчанию 0.0.
Он устанавливается равным Object3D.DefaultUp (0, 1, 0), чтобы свет светил сверху вниз.
Сила света.
В режиме physically correct световая мощность света, измеряемая в люменах. По умолчанию 4Math.PI.
Это напрямую связано с intensity в соотношении
power = intensity * π
и изменение этого параметра также изменит интенсивность.
SpotLightShadow используется для расчета теней для этого света.
Прожектор указывает из своего положения position на target.position. Позиция цели по умолчанию (0, 0, 0)..
Примечание: Чтобы изменить положение цели на любое, отличное от значения по умолчанию, необходимо добавить t в scene, используя
app.scene.add(light.target);
Это делается для того, чтобы matrixWorld цели автоматически обновлялся каждый кадр.
Также можно установить цель на другой объект в сцене (все, что имеет свойство position), например:
const targetObject = new v3d.Object3D();
scene.add(targetObject);
light.target = targetObject;
Теперь прожектор будет отслеживать целевой объект.
Общие методы смотрите в базовом классе Light.
Копирует значения всех свойств из source в данный SpotLight.