Object3DLight

DirectionalLight

Свет, который испускается в определенном направлении. Этот свет будет вести себя так, как будто он находится бесконечно далеко и все лучи, исходящие от него, параллельны. Обычно это используется для имитации дневного света; солнце находится достаточно далеко, чтобы его положение можно было считать бесконечным, и все лучи света, исходящие от него, параллельны.

Этот свет может отбрасывать тени - подробности смотрите на странице DirectionalLightShadowCSM.

Примечание о позиции, цели и вращении

Распространенной причиной путаницы при работе с направленным светом является то, что установка вращения не имеет никакого эффекта. Это связано с тем, что DirectionalLight в Verge3D эквивалентен тому, что в других приложениях часто называют "Target Direct Light".

Это означает, что его направление рассчитывается как направление от position света к target позиции (в отличие от "Free Direct Light", который имеет только компонент вращения).

Это делается для того, чтобы свет отбрасывал тени - камере shadow shadow нужна позиция для расчета теней.

Подробности обновления цели смотрите в свойстве target ниже.

Пример

// White directional light at half intensity shining from the top. const directionalLight = new v3d.DirectionalLight(0xffffff, 0.5); app.scene.add(directionalLight);

Конструктор

DirectionalLight(color : Integer, intensity : Float)

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

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

Свойства

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

.castShadow : Boolean

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

.position : Vector3

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

.shadow : DirectionalLightShadowCSM

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

.target : Object3D

DirectionalLight(направленный свет) указывает из своего положения position на target.position. По умолчанию позиция цели равна (0, 0, 0).
Примечание: Чтобы положение цели можно было изменить на любое другое, отличное от значения по умолчанию, ее необходимо добавить в scene с помощью функции

app.scene.add(light.target);

Это делается для того, чтобы matrixWorld цели автоматически обновлялся каждый кадр.

Также можно установить цель на другой объект в сцене (все, что имеет свойство position), например, так:

const targetObject = new v3d.Object3D(); app.scene.add(targetObject); light.target = targetObject;

Теперь направленный свет будет отслеживать целевой объект.

Методы

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

.copy(source : DirectionalLight) → DirectionalLight

Копирует значения всех свойств из источника source в этот DirectionalLight.

Исходный файл

О том как получить исходный код этого модуля читайте тут.