Уровни детализации позволяют показывать меши с большей или меньшей детализацией геометрии в зависимости от расстояния до камеры.
Каждый уровень связан с собственным объектом, который переключается через указанное расстояние во время рендеринга. Обычно создается три меша: один для дальнего расстояния (низкая детализация), другой для среднего расстояния (средняя детализация) и один для близкого расстояния (высокая детализация).
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.
Общие свойства базового класса Object3D.
Обновляется ли объект LOD автоматически рендерером в каждом кадре или нет. Если установлено значение false, вы должны самостоятельно вызывать LOD.update() в цикле рендеринга. По умолчанию true.
Флаг, указывающий, что данный объект является экземпляром LOD. Только для чтения.
Массив объектов с уровнями детализации.
Каждый уровень представляет собой объект с тремя свойствами:
Смотрите методы базового класса Object3D.
0.0.0.0.Добавляет меш, который будет отображаться на определенном расстоянии и дальше. Как правило, чем дальше расстояние, тем меньше детализация меша.
Возвращает клон данного LOD-объекта и связанных с ним объектов, определяющих расстояние.
Получает текущий активный уровень LOD. Индекс в массиве уровней детализации.
Получить ссылку на первый Object3D (меш) с уровнем детализации большим, чем distance.
Получить пересечения между отбрасываемым лучом и текущим уровнем детализации. Метод Raycaster.intersectObject вызовет данный метод.
Установить видимость каждого объекта, соответствующего уровням детализации в зависимости от расстояния от камеры.
О том как получить исходный код этого модуля читайте тут.