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

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

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

Методы

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

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

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

.clone() → LOD

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

.getCurrentLevel() → Integer

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

.getObjectForDistance(distance : Float) → Object3D

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

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

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

.update(camera : Camera)

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

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

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