跳到主要内容
← 全部概念
3D 与渲染 / 03

细节层次(LOD)

远处使用更简单的网格

交互演示

交互演示 · 移动指针或点击画面,观察变化

细节层次(LOD)会在模型远离镜头时,将它替换为更简单的版本。远处物体只占少量像素,完整网格中多出来的三角形看不出效果,只会消耗 GPU 时间。示例中的石块每跨过一条距离分界线,三角形数量就会从 1280 减少到 80,再减少到 20。

适用场景

当高精度网格在屏幕上变得很小时,使用 LOD。最佳切换阈值取决于投影尺寸、镜头视野角度,以及需要保留的轮廓。

实现示例

不依赖特定引擎的伪代码。请根据你使用的引擎调整函数和坐标约定。

if distance > farThreshold + margin: level = LOW
else if distance < farThreshold - margin: level = MEDIUM
setVisibleMesh(level)

常见错误

隐藏的高精度网格不应继续执行开销较大的动画或 CPU 更新。也要检查阴影和切换过渡:如果简化网格的轮廓差异太大,切换时会出现明显跳变。

延伸阅读

Three.js 手册 ↗
内容原作 Nicolas Zullo · 中文整理与交互改编