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

Object3D →

# LOD

Уровни детализации позволяют показывать меши с большей или меньшей детализацией геометрии в зависимости от расстояния до камеры.

Каждый уровень связан с собственным объектом, который переключается через указанное расстояние во время рендеринга. Обычно создается три меша: один для дальнего расстояния (низкая детализация), другой для среднего расстояния (средняя детализация) и один для близкого расстояния (высокая детализация).

## Пример

`const lod = new v3d.LOD(); // создаём сферу с 3 уровнями детализации for (let i = 0; i < 3; i++) { const geometry = new v3d.IcosahedronGeometry(10, 3 - i) const mesh = new v3d.Mesh(geometry, material); lod.addLevel(mesh, i * 75); } app.scene.add(lod);`

## Конструктор

### LOD()

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

## Свойства

Общие свойства базового класса Object3D.

### # .autoUpdate : Boolean

Обновляется ли объект LOD автоматически рендерером в каждом кадре или нет. Если установлено значение `false`, вы должны самостоятельно вызывать LOD.update() в цикле рендеринга. По умолчанию `true`.

### # .isLOD : Boolean

Флаг, указывающий, что данный объект является экземпляром LOD. Только для чтения.

### # .levels : Array

Массив объектов с уровнями детализации.

Каждый уровень представляет собой объект с тремя свойствами:

- object — объект для отображения на этом уровне.
- distance — расстояние, на котором будет отображаться данный уровень детализации.
- hysteresis — порог, используемый для предотвращения мерцания на границе между уровнями детализации. Определяется как доля от расстояния.

## Методы

Смотрите методы базового класса Object3D.

### # .addLevel(object : Object3D, distance : Float) → this

- object — объект для отображения на этом уровне.
- distance — расстояние, на котором отображается данный уровень детализации. По умолчанию `0.0`.
- hysteresis — порог, используемый для предотвращения мерцания на границе между уровнями детализации. Определяется как доля от расстояния. По умолчанию `0.0`.

Добавляет меш, который будет отображаться на определенном расстоянии и дальше. Как правило, чем дальше расстояние, тем меньше детализация меша.

### # .clone() → LOD

Возвращает клон данного LOD-объекта и связанных с ним объектов, определяющих расстояние.

### # .getCurrentLevel() → Integer

Получает текущий активный уровень LOD. Индекс в массиве уровней детализации.

### # .getObjectForDistance(distance : Float) → Object3D

Получить ссылку на первый Object3D (меш) с уровнем детализации большим, чем distance.

### # .raycast(raycaster : Raycaster, intersects : Array) → Array

Получить пересечения между отбрасываемым лучом и текущим уровнем детализации. Метод Raycaster.intersectObject вызовет данный метод.

### # .update(camera : Camera)

Установить видимость каждого объекта, соответствующего уровням детализации в зависимости от расстояния от камеры.

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

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