作者:Samuel Rundel,Raffaele De Amicis
单位:Oregon State University,School of Electrical Engineering and Computer Science
邮箱:{rundels, raffaele.deamicis}@oregonstate.edu
关键词:3D Tiles,点要素切片,离散 LOD(Level of Detail),地理空间可视化,Forest Information Model
—— 论文收录于 VISIGRAPP 2025(GRAPP, HUCAPP, IVAPP),CC BY-NC-ND 4.0 ——
DOI: 10.5220/0013161200003912
摘要(Abstract)
3D Tiles 用于在 Web 上高效可视化大规模地理空间数据,但从“点要素”(如森林清查中的单株树木点)直接生成 3D Tiles 的方法并不成熟。本文提出一种新方法:可从点要素直接生成高保真、超大规模的 3D Tilesets,并且具备明确的离散 LOD(Level of Detail)。方法对要素数量和类型不设限制,还支持“局部增量更新”,无需整套重建,从而提升可视化效率。我们与多种现有工具做了系统对比,验证了方法的有效性与优势。
1 引言(Introduction)
随着地理空间数据采集的爆发式增长,传统的数据存储、处理与可视化方法面临巨大压力。3D Tiles 作为一种开放标准,能够高效地管理和可视化大规模 3D 地理空间数据,并支持实时交互,满足用户对交互性的更高期待。
但如果要直接用 3D Tiles 来创建和流式传输“点要素”的 3D 可视化会遇到困难,因为 3D Tiles 的核心是“3D 几何”的处理。常见做法是:先把点要素生成一个“中间 3D 模型”,再对模型做切片,最后再用 3D Tiles 流式传输。这条路的问题在于:
- 手工建模耗时、易出错且成本高;
- 程序化建模虽能省时省钱、保证精度,但一旦源数据有变,就要重建中间模型和整个 Tileset,费时费力;
- 这种流程通常也不支持“离散 LOD”,而离散 LOD 对大数据量的性能和效果都很重要。
本文提出一套新流程,可直接从点要素生成高保真、超大规模 3D Tileset,具有良好定义的离散 LOD,不受要素数量或类型限制;当数据有更新时,只需局部重建受影响的区域,无需整套重来,显著提升效率。我们与多款切片器进行了对比,效果更优。
2 背景与相关工作(Background and Related Work)
3D Tiles 由 CesiumGS 提出,适合在 Web3D 场景中跨设备流式传输和渲染庞大的 3D 地理空间数据,如点云、3D 对象和网格等。它结合了高效切片与先进的渲染技术,文档完善、可扩展性强,并已被 OGC 采纳为开放标准。
常见的 3D Tiles 生成方式和局限:
- Cesium ion:可把多种 3D 模型格式转为 B3DM 或 I3DM,但当要素数量接近 10^6 时,常无法完成切片(长时间无结果)。
- Safe FME:能把 3D 模型转 B3DM,但只生成“单层级”的 Tileset。要么 JSON 超大,要么 B3DM 超大,客户端加载困难,影响可用性。
- Obj2Tiles(OpenDroneMap 子项目):依赖预先生成的 OBJ 中间文件,存储与资源开销大,过程耗费资源,生成的 Tileset 也未必实用。
- Geodan 的 i3dm.export:可直接从 PostGIS 点要素生成 I3DM,支持可变切片大小。但它有多项限制:
- 原始数据库信息直接使用,容易出现重复图案,影响真实感;它仅支持绕 Z 轴随机旋转,难以充分打散模式;缩放需预计算并写入库,更换模型就要重算,灵活性差。
- 不支持“离散 LOD”,无法按距离切换不同细节的模型;要么远景快但近景差,要么近景好但远景慢。
- 每个瓦片的点数不固定,数据更新会改变瓦片尺寸和层级结构,导致每次更新都要重建全套 Tileset。对于森林等高频更新的数据(自然/人为变化、IoT 自动更新),这很不现实。
为解决上述问题,本文提出一套新流程,已在超过 283 万点要素的数据上验证了可扩展性与有效性,适合管理与可视化大型、动态的地理空间数据集。
3 切片流程(Tiling Procedure)
总体思想:把大数据集分割成小块,组织成树形层级;每个瓦片内用“实例化模型(I3DM)”并提供离散 LOD;严格控制每级的几何误差与边界体(Bounding Volume, BV),从而既能高质量可视化,又能大幅降低终端设备负担与加载时间。
流程分 6 步(文中图示略):
- 数据获取(Data Retrieval)
- 空间切片(Tiling)
- 模型准备与填充(Model Preparation & Population)
- 高程采样(Elevation Retrieval)
- Tileset 填充(Tileset Population)
- 3D Tiles 生成(3D Tiles Generation)
3.1 数据获取(Data Retrieval)
- 每个点要素包含坐标和属性(如:树种、岩石、草地等类型)。
- 数据源可为 CSV、Shapefile、PostGIS 等。
- 将坐标统一转换到 UTM,以便后续计算;属性单位统一为米。
3.2 空间切片(Tiling)
- 基于 UTM 坐标,用网格把空间分块。设瓦片边长为 DDD,点的坐标为 (fx,fy)(f_x, f_y)(fx,fy),则:
- X=⌊fxD⌋X = \left\lfloor \dfrac{f_x}{D} \right\rfloorX=⌊Dfx⌋,Y=⌊fyD⌋Y = \left\lfloor \dfrac{f_y}{D} \right\rfloorY=⌊Dfy⌋
- 由此即可确定每个点属于哪个瓦片。
3.3 模型准备与填充(Model Preparation & Population)
思路:在场景中,对“每种要素类型 × 每个 LOD”,只引用一个 glTF(二进制)模型文件。比如有 MMM 种类型、最大 LOD 为 LODmaxLOD_{max}LODmax,就用 M×LODmaxM \times LOD_{max}M×LODmax 个 glTF 文件。
- 从 glTF 读取模型三向尺寸:宽 MWM_WMW、深 MDM_DMD、高 MHM_HMH,用于后续按要素属性进行非均匀缩放和 BV 计算(每个要素、每个 LOD 都单独算)。
3.3.1 缩放(Scaling)
森林清查(FID)通常没有 X/Y/Z 三向尺寸,但会有“树高 THT_HTH”与“冠幅面积 TAT_ATA”。在假设“Y 轴朝上”的前提下,基于要素类型与 LOD,计算非均匀缩放 S=(Sx,Sy,Sz)S=(S_x,S_y,S_z)S=(Sx,Sy,Sz):
- p=MWMDp = \dfrac{M_W}{M_D}p=MDMW
- Sx=TAp⋅1MWS_x = \sqrt{\dfrac{T_A}{p}} \cdot \dfrac{1}{M_W}Sx=pTA⋅MW1
- Sy=THMHS_y = \dfrac{T_H}{M_H}Sy=MHTH
- Sz=TAp⋅p⋅1MDS_z = \sqrt{\dfrac{T_A}{p \cdot p}} \cdot \dfrac{1}{M_D}Sz=p⋅pTA⋅MD1
说明:
- 非均匀缩放可让模型符合 FID 的尺寸,但若模型的“形状模板”和真实树形差异较大,会有些许形变;若采用能代表该树种“平均形态”的模型,并按成熟度/形态等元数据挑选多款模型,会更逼真。
3.3.2 随机化(Randomization)
为避免重复模式:
- 对每个要素(在所有 LOD 上一致)添加随机旋转:绕 Y 轴 0–360°,绕 X/Z 轴在 ±7° 以内抖动。
3.3.3 边界体(Bounding Volume, BV)
- 渲染时“加载哪些要素”高度依赖 BV。BV 越贴合,裁剪与加载决策越精确、越高效。
- 我们先为“每个实例(已缩放后的 3D 模型)”计算 BV,再聚合成“每个瓦片的 BV”。
3.4 高程采样(Elevation Retrieval)
- 即便 FID 自带高程,也可能与可视化用的 DEM 不一致,导致“漂浮”。
- 理想做法:对每个要素点,直接从可视化用的 DEM 插值得到高程,以保证贴地。
3.5 Tileset 填充(Tileset Population)
- 用树形结构组织瓦片:层级为 LLL,分支因子参数为 TTT(每个父瓦片最多有 T2T^2T2 个子瓦片)。
- L>0L>0L>0 层:至少 1 个子瓦片,最多 T2T^2T2 个;
- L=0L=0L=0 层:必须包含至少 1 个点要素(无上限)。
- 把 L=0L=0L=0 的瓦片(底层)按 TTT 合并成 L=1L=1L=1,再逐层向上合并,直至顶层 LmaxL_{max}Lmax 只剩 1 个瓦片。每一层的父瓦片 BV 由子瓦片 BV 聚合而来。
- 这样得到的树结构“可计算、可复现、可预测”,与要素总量无关,便于增量更新。
3.6 3D Tiles 生成(Tileset Generation)
- 从顶层(LmaxL_{max}Lmax)开始写出 Tiles。
- L>0L>0L>0 层只写 JSON(层级与引用);L=0L=0L=0 层写 JSON + I3DM(实例化模型)。
3.6.1 I3DM
- I3DM 是 3D Tiles 的一种内容类型,使用 ECEF(EPSG:4979)坐标;每个实例记录缩放、法线(Normal-Up / Normal-Right)等。
- 我们把“位置、缩放、旋转、高程”组合为变换矩阵,并据此计算模型法线与 ECEF 的关系。
- I3DM 末尾引用 glTF 模型(采用引用而非内嵌),减小文件体积并利于缓存。
3.6.2 JSON Tileset
- JSON 描述层级与内容引用(引用子 JSON 或 I3DM)。每个内容引用包含“Geometric Error(GE)”,用于控制内容在多远距离显示、何时用低/高 LOD 替换。
- 我们的设置:L=0L=0L=0 层的 GE 按 LOD 范围设定(文中给出公式“LODmax − LODmin”的思路);L>0L>0L>0 层 GE 固定为 100。实际可按项目需要调整。
- 生成的 JSON 与 I3DM 按层级放入不同文件夹,形成结构清晰、底层网格单元大小一致、场景定位精确的 Tileset。
4 验证与测试(Validation and Testing)
4.1 案例:Elliott State Research Forest(ESRF)
- 数据:Oregon 州西南部山区 77.6 km²,单株树点 283.5 万个,密度不均(图略)。
- 树种分布:Douglas Fir(约 94.1%)、Western Hemlock(约 2.25%)、其他(约 3.65%)。
- 原始坐标参考系 EPSG:6318,无高程信息。数据由 ODF(2014/2015)采集,OSU(2022)更新。
4.2 性能度量与测试环境
重点考察“可视化阶段”的效率(对静态数据的多数场景更重要):
- 文件体积:统计整个 Tileset 文件夹大小,并按要素数 fcf_cfc 归一化(ds/fcd_s/f_cds/fc,单位 kB/点)。
- 静态性能:相机离地 2,500 m,记录从开始请求到“所有可见要素加载完成”的时间 ttt(用 CesiumJS 的 allTilesLoaded 事件)。重复 4 次,取后 3 次几何平均。并用 $ \dfrac{f_v \cdot m}{t}$ 估算每秒加载三角形数(fvf_vfv 为可见要素数,mmm 为单个 3D 模型三角形数)。
- 动态性能:设相机做 360 s 的环形飞行,包含不同密度与不同距离的场景,记录平均 FPS。
环境:i9-10900K / 64GB RAM / RTX 3090 / NVMe SSD,Apache 静态服务,Chrome 114,CesiumJS 1.96.0。
对比对象:Cesium ion、i3dm.export、本文方法。共 5 组基准测试(Benchmark)。
5 基准测试与结果(Performance Benchmarks)
提示:图表误差条表示 3 次重复中的最小与最大值。
5.1 Benchmark 1:要素数(fc)对文件体积与静态性能的影响
- 数据:4 km² 区域,fcf_cfc 从 100 增至 10610^6106(同一种类型、同一 glTF、其他方法仅 1 个 LOD;本文方法支持离散 LOD)。
- 备注:Cesium ion 在 10610^6106 点无法完成切片,故使用 8×1058\times 10^58×105 展示。
结果要点:
- 小规模时,本文方法的体积略大于 Cesium ion 与 i3dm.export;但规模增大后,本文方法的“单点体积”更小,接近或略优于 i3dm.export,优于 Cesium ion。
- 静态加载速度:小规模下 Cesium ion 与 i3dm.export 更快;规模很大时,本文方法反而更快。10610^6106 点时,Cesium ion 失败,i3dm.export 无法完整显示 Tileset。
- 原因分析:他法把数据分成更少的子块,单个 I3DM 覆盖范围与要素更多,GPU/CPU 装载次数更少,利于小规模性能;而本文方法允许“针对每个实例进行旋转/缩放等变换”,更灵活,但在小规模下有轻微开销。综合见 Benchmark 2/3。
5.2 Benchmark 2:瓦片边长 D 或“每瓦点数上限 fmax”对性能与体积的影响
- 数据:两组 fcf_cfc(10510^5105、10610^6106),均有 2 个 LOD。
- 本文方法:DDD 从 50 m 递增到 2000 m;
- i3dm.export:fmaxf_{max}fmax 从 1000 递增到 2.5×1062.5 \times 10^62.5×106。
结果要点:
- 随 DDD/fmaxf_{max}fmax 增大,静态性能平均提升 600%+;对体积也有少量利好。
- 本文方法在所有设置上静态性能均高于 i3dm.export。
- 综合折中后,本文方法选 D=750D=750D=750 m 作为后续默认;i3dm.export 在 fc>105f_c>10^5fc>105 时选 fmax=50,000f_{max}=50,000fmax=50,000(10510^5105 时选 20,00020,00020,000)。i3dm.export 的层级限制导致 fmax≤fc/4f_{max}\le f_c/4fmax≤fc/4,在低 fmaxf_{max}fmax 且高 fcf_cfc 时不可视化。
5.3 Benchmark 3:分支参数 T 的影响(仅本文方法)
- 设置:TTT 从 2 增至 22,D=100D=100D=100,fc=105f_c=10^5fc=105。
- 结果:TTT 对性能影响不如 DDD 明显,波动较大;平均看 T=8T=8T=8(每父瓦片 64 个子瓦片)较优。
5.4 Benchmark 4:要素类型数量的影响
- 设置:D=750D=750D=750,T=8T=8T=8,fc=105f_c=10^5fc=105,类型数从 1 到 10(随机分配),仅 1 个 LOD。
- 结果:
- 体积:三者接近;i3dm.export 略小;Cesium ion 因模型优化流程不同,体积略有差异。
- 静态性能:Cesium ion 波动更大、总体偏低(可能因过度切块);i3dm.export 与本文方法相近,类型数 <7 时 i3dm.export 略优,≥7 时本文方法略优。
5.5 Benchmark 5:动态性能(环飞 360 s)
- 设置:结合前述最优参数,用 ESRF 数据。类型 3 种、LOD 2 级。
- i3dm.export 不支持 LOD,故生成两套 Tileset(低/高),分别对应 LOD1/LOD2。
- Cesium ion 仍无法完整生成 ESRF 全量 Tileset,未纳入此测试。
结果要点:
- 本文方法平均 FPS(几何平均)为 48.70,显著高于 i3dm.export 的 33.83 和 18.29。
- i3dm.export 在某些时间段 FPS 看起来更高,但实为“瓦片来不及加载导致空白画面”,因此“看似更快”。本文方法加载更快更稳定。
- 本文方法在 LOD 切换时 FPS 有轻微波动,但总体提升显著:相机远离的时段(如 90–110、115–125、140–160、230–260 s),会切到较低 LOD,从而 FPS 上升。
5.6 小结
- 小规模或要素分散时,三种生成器都能得到不错的可视化。但当要素密集成簇时,Cesium ion 与 i3dm.export 会出现性能短板。
- 本文方法在动态场景显著更稳、更快;即使仅用 LOD0 模型,性能也优于 i3dm.export。
- 存储占用与“每秒加载三角形数”上,本文方法与 i3dm.export 均表现优秀。
- 在生成速度方面:本文方法可在 5 分钟内处理 10^7 级别的点(未在文中详测),显著优于 Cesium ion(同时避免其繁琐且易错的准备流程),略慢于 i3dm.export(可能因我们大量采用数据库侧处理而非本地处理)。
6 结论(Conclusion)
本文提出了一种把点要素(多种输入格式)直接切片为 3D Tiles 的新流程(符合 OGC 规范):
- 支持离散 LOD;
- 无需中间模型格式;
- 在高密度、类型多的场景下性能优秀;
- 局部数据变更可“局部重建”,无需整套重来,利于动态数据集。
因此,非常适合用来把“数百万级要素”的大规模数据,通过浏览器进行“既能鸟瞰、又能细看”的高质量可视化。
未来改进方向:
- 采用 3D Tiles 的 Composite(CMPT)瓦片,把不同类型的 I3DM 组合成单文件,进一步减少请求与体积;
- 自动检测数据变化并定向重建受影响区域(目前为手动流程);
- 扩展更多输入格式(除 Shapefile、CSV 外),提升通用性与易用性。
致谢(Acknowledgement)
本文由 Oregon State University 使用美国商务部 Economic Development Administration 的联邦资金(award #07-79-07914)支持完成。文中观点仅代表作者,不代表该机构立场。
参考文献(References)
(为便于核对,文献题名基本保留原文)
- Armstrong, M. P., Wang, S., Zhang, Z. (2019). The Internet of Things and fast data streams… Cartography and Geographic Information Science, 46(1):39–56.
- Breunig, M., et al. (2020). Geospatial Data Management Research… ISPRS IJGI, 9(2):20.
- Chen, Y., et al. (2018). From IFC to 3D Tiles… ISPRS IJGI, 7(10):393.
- Department of Forestry (2023). Elliott State Research Forest: Forest Management Plan (Draft).
- Gan, L., Li, J., Jing, N. (2017). Hybrid organization and visualization… ICIVC, IEEE.
- Gune, A., et al. (2018). Graphically Hearing… IEEE CG&A, 38(4):18–26.
- Kotsev, A., et al. (2020). From spatial data infrastructures to data Spaces… ISPRS IJGI, 9(3):19.
- Lu, M., et al. (2021). Web-based real-time visualization of large-scale weather radar data using 3D tiles. Transactions in GIS, 25(1):25–43.
- Prandi, F., et al. (2015). WebGL virtual globe for efficient forest production planning… Web3D ’15.
- Rundel, S., De Amicis, R. (2023). Leveraging digital twin and game-engine… Frontiers in Virtual Reality, 4:13.
- Singh, R., et al. (2022). Forest 4.0: Digitalization of forest using IoT. JKSUCIS, 34(8B):5587–5601.
- Wang, X., Wang, J., Zhang, Y. (2023). Research on 3D Visualization… Buildings, 13(9):2317.
- Zhan, W., Chen, Y., Chen, J. (2021). 3D Tiles-Based High-Efficiency Visualization… ISPRS IJGI, 10(7):476.

被折叠的 条评论
为什么被折叠?



