Object3D

LOD

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

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

Пример кода

const lod = new v3d.LOD(); //Create spheres with 3 levels of detail and create new LOD levels for them for(let i = 0; i < 3; i++) { const geometry = new v3d.IcosahedronBufferGeometry(10, 3 - i) const mesh = new v3d.Mesh(geometry, material); lod.addLevel(mesh, i * 75); } scene.add(lod);

Примеры

webgl / lod

Конструктор

LOD()

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

Свойства

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

.autoUpdate : Boolean

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

.levels : Array

Массив объектов level

Каждый уровень представляет собой объект с двумя свойствами:
object - Object3D для отображения на этом уровне.
distance — Расстояние, на котором будет отображаться данный уровень детализации.

Методы

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

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

object - Object3D для отображения на этом уровне.
distance — Расстояние, на котором отображается данный уровень детализации.

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

.clone() → LOD

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

.getCurrentLevel() → Integer

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

.getObjectForDistance(distance : Float) → Object3D

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

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

Получить пересечения между отбрасываемым Ray и его LODом. Raycaster.intersectObject вызовет этот метод.

.update(camera : Camera) → null

Установите видимость каждого level level's object в зависимости от расстояния от camera.

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

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