Object3DLight

SpotLight

Этот свет излучается из одной точки в одном направлении, вдоль конуса, размер которого увеличивается тем больше, чем дальше от света он находится.

Этот свет может отбрасывать тени - подробности смотрите на странице 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);

Конструктор

SpotLight(color : Integer, intensity : Float, distance : Float, angle : Radians, penumbra : Float, decay : Float)

color — (необязательно) шестнадцатеричный цвет света. По умолчанию 0xffffffff (белый).
intensity — (необязательно) числовое значение силы/интенсивности света. По умолчанию - 1.

distance — Максимальная дальность действия света. По умолчанию 0 (без ограничения).
angle — Максимальный угол рассеивания света от его направления, верхняя граница которого равна Math.PI/2.
penumbra — Процент конуса прожектора, который ослаблен из-за полутени. Принимает значения от нуля до 1. По умолчанию - ноль.
decay — Величина ослабления света в зависимости от расстояния до него.

Создает новый SpotLight.

Свойства

Общие свойства смотрите в базовом классе Light.

.angle : Float

Максимальный размах прожектора, в радианах, от его направления. Должно быть не более Math.PI/2. По умолчанию Math.PI/3.

.castShadow : Boolean

Если установить значение true, свет будет отбрасывать динамические тени. Предупреждение: Это дорого и требует настройки, чтобы тени выглядели правильно. Подробности смотрите в SpotLightShadow. По умолчанию используется значение false.

.decay : Float

Величина ослабления света в зависимости от расстояния до него.
В режиме physically correct затухание = 2 приводит к физически реалистичному падению света. По умолчанию используется значение 1.

.distance : Float

Default mode — Когда расстояние равно нулю, свет не ослабевает. Когда расстояние ненулевое, свет ослабевает линейно от максимальной интенсивности в положении света до нуля на данном расстоянии от света.

Physically correct режим — Когда расстояние равно нулю, свет будет ослабевать по закону обратного квадрата до бесконечного расстояния. Когда расстояние ненулевое, свет будет ослабевать по закону обратных квадратов до тех пор, пока не приблизится к отсечке расстояния, где он будет быстро и плавно ослабевать до 0. По своей сути, отсечки не являются физически корректными.

По умолчанию 0.0.

.penumbra : Float

Процент конуса прожектора, который ослаблен из-за полутени. Принимает значения от нуля до 1. По умолчанию 0.0.

.position : Vector3

Он устанавливается равным Object3D.DefaultUp (0, 1, 0), чтобы свет светил сверху вниз.

.power : Float

Сила света.
В режиме physically correct световая мощность света, измеряемая в люменах. По умолчанию 4Math.PI.

Это напрямую связано с intensity в соотношении power = intensity * π и изменение этого параметра также изменит интенсивность.

.shadow : SpotLightShadow

SpotLightShadow используется для расчета теней для этого света.

.target : Object3D

Прожектор указывает из своего положения 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.

.copy(source : SpotLight) → SpotLight

Копирует значения всех свойств из source в данный SpotLight.