DirectionalLight - Руководство по Вердж3Д - Софт Эйт Софт
Description: Узнайте как использовать DirectionalLight в интерактивных 3Д-веб-приложениях сделанных на Вердж3Д

Object3D → Light →

# DirectionalLight

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

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

## Таргетированные и свободные источники

В «Вердж3Д» направленные источники света могут работать в двух различных режимах в зависимости от значения флага .isFreeLight. Если `isFreeLight=true`, DirectionalLight эквивалентен тому, что часто называют "Target Directional Light" в «3дс Максе». Если `isFreeLight=true`, источник света эквивалентен "Free Directional Light" в «3дс Максе», "Sun" в «Блендере» или просто "Directional Light" в «Майе».

В любом случае направление света рассчитывается как направление от Object3D.position источника света к target. В первом режиме `target` указывается явно, а во втором режиме `target` рассчитывается движком на основе поворота Object3D.quaternion источника освещения.

## Пример

`// 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 — (необ.) шестнадцатеричный цвет света. По умолчанию `0xffffff` (белый).
- intensity — (необ.) числовое значение силы/интенсивности света. По умолчанию `1`.

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

## Свойства

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

### # .castShadow : Boolean

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

### # .isDirectionalLight : Boolean

Указывает, что данный объект является экземпляром класса DirectionalLight. Только для чтения.

### # .isFreeLight : Boolean

Флаг, используемый для определения источников освещения без явной цели. Для таких источников виртуальный `target` рассчитывается на основе поворота, применённого к объекту источника освещения.

### # .position : Vector3

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

### # .shadow : DirectionalLightShadowCSM

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

### # .target : Object3D

Направленный источник указывает из своего положения position на target.position. По умолчанию позиция целевого объекта равна `(0, 0, 0)`

Чтобы положение целевого объекта можно было изменить на любое другое, отличное от значения по умолчанию, его необходимо добавить в сцену с помощью функции

`app.scene.add(light.target);`

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

Если `isFreeLight=false`, также можно установить цель на другой объект в сцене (все, что имеет свойство position):

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

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

## Методы

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

### # .copy(source : DirectionalLight) → DirectionalLight

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

### # .dispose()

Освобождает все связанные с GPU ресурсы, используемые экземпляром DirectionalLight. Этот метод следует вызвать, если DirectionalLight больше не используется в приложении.

## Пазлы

Следующие пазлы могут работать с направленными источниками:

- create object — выберите light, затем directional.
- set light param — для установки различных параметров источника.
- get light param — для получения параметров источника.

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

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