3D Tiles 格式中,Bounding Volum
3D Tiles 格式中,Bounding Volum
在 3D Tiles 格式中,Bounding Volum (包围体),是空间索引的核心机制,它通过层级化的空间范围定义,实现大规模三维数据的高效加载与渲染,
Bounding Volum 是什么?
- 空间包裹盒:每个瓦片 (Tile)包含一个几何体(如盒子,球体或区域),用于精确描述该瓦片内所有模型数据的空间范围。
- 层级嵌套结构 :在瓦片金字塔中,父瓦片的Bounding Volum 完全包含其子瓦片的 Bounding Volum,形成树状空间索引。
核心作用与功能
- 视锥体剔除
- 原理 : 相机渲染时,快速检测瓦片的 Bounding Volum 是否在视锥体可见范围内
- 效果 : 仅加载并渲染可见范围内的瓦片(例如:相机背面的建筑瓦片直接跳过)
- 减少GPU渲染压力,提升帧率(尤其对城市级模型)。
- 细节层级控制 (LOD切换)
- 原理 : 根据瓦片与相机之间的距离,计算其在屏幕上投影大小 (屏幕空间误差,SSE)
- 效果 : 距离远 ,使用低精度瓦片(父级 Bounding Volum 粗略包裹)
距离近, 加载高精度瓦片 (子级Bounding Volum 精细包裹) - 避免不必要的细节加载,(如:1公里外的树木,用点云代替精细模型)
- 碰撞检测与空间查询
原理:通过Bounding Volum 快速判断物体与瓦片的交集,(如:射线拾取,车辆碰撞)
高效支持交互操作,如点击建筑查询属性。
实际效果与性能优化
- 加载速度提升,仅请求可见瓦片,减少网络传输量(如100平方千米倾斜摄影数据,实际加载 小于 1 平方千米的瓦片)。
- 渲染效率飞跃 : 剔除 70% - 90%不可见瓦片,(实测:百万级建筑场景,帧率从 5fps - 60 fps)
- 内存占用优化 :动态卸载视锥体外的瓦片,避免浏览器崩溃。
如Cesium的LRU缓存策略。
总结
Bounding Volume 是 3D Tiles中定义瓦片空间范围几何体 (BOX,Sphere,Region)
用于构建空间索引层级。
核心作用
- 视锥剔除 : 跳过不可见瓦片,提升渲染效率;
- LOD 控制:动态切换瓦片精度,平衡画质与性能
- 空间查询:支持快速碰撞检测与属性交互,解决海量三维数据的实时加载问题,使城市级,全球级三维可视化成为可能