3DGS的GIS可视化:将ply文件切片成3dtiles

在线体验版

这是一个基于CesiumJS的3D高斯泼溅渲染器Web应用,支持上传ply文件并将其转换为3dtiles格式,并在3D地图中可视化展示。注意ply文件的坐标系应为ENU坐标系,并且需要提供ENU坐标系参考点的经纬度和海拔高。

在线体验版:gaussian-splatting-3dtiles

开源地址:libTileSplat 如果有人感兴趣的话可以考虑开源,可以先试试在线体验版**)**

这是一个C++工具库,用于将3D高斯溅射(3DGS)的PLY文件转换为3DTiles,从而支持使用CesiumJS进行渲染。

该库具有以下功能:

  • PLY 文件解析:支持 ASCII 和二进制 3DGS PLY 文件
  • 完整属性提取:位置、颜色、不透明度、缩放、旋转和球谐系数
  • 3DTiles生成:输出符合 3DTiles 规范的 GLB 或 GLTF 格式
  • 分层瓦片:支持 LOD的四叉树组织
  • 坐标转换:ENU 到 ECEF 的转换
  • CesiumJS版本支持:1.125(splat-shader)、1.130.1、1.135、1.139

此代码依赖:

方法说明

将3DGS点云作为输入,进行瓦片化并构建LOD(多层级瓦片),并转换为Cesium兼容的3D Tiles格式。

核心模块包括:1)高斯点云瓦片化;2)瓦片数据清洗;3)构建LOD数据;4)生成3DTiles数据

1. 高斯点云瓦片化

使用nianticlabs/spz提供的spz::loadSplatFromPly读取ply文件,并按照指定的瓦片宽高将点云分割为多个瓦片。

2. 瓦片数据清洗

3. 构建LOD数据

1、​​​​​​​KD树搜索最近邻高斯点

2、基于透明度计算权重(w = 1.0f / (1.0f + std::exp(-opacity))

3、邻域内计算加权平均位置 position

4、邻域内计算加权平均颜色(RGBA)

5、邻域内计算加权平均尺度(scale)

6、邻域内计算加权平均旋转(rotation四元数)

4. 生成3DTiles数据

1)生成spz数据

使用nianticlabs/spz提供的spz::saveSpz接口可以将spz::GaussianCloud保存为spz文件

2)生成glb数据

读取spz文件,并按照glTF扩展KHR_gaussian_splatting_compression_spz_2的要求,并使用TinyGLTF提供的数据结构tinygltf::Model构造gltf,参考https://github.com/CesiumGS/glTF/tree/draft-splat-spz-split/extensions/2.0/Khronos/KHR_gaussian_splatting_compression_spz_2

3)构造tileset.json

3DTILES_content_gltf是3D Tiles 1.1 规范中的核心扩展,它的作用是允许瓦片内容直接使用 glTF 2.0 格式文件(.gltf 或 .glb)。并在extensionsRequired和extensionsUsed中,声明使用KHR_gaussian_splatting和KHR_gaussian_splatting_compression_spz_2

复制代码
{
    "asset": {
        "version": "1.1"
    },
    "extensions": {
        "3DTILES_content_gltf": {
            "extensionsRequired": [
                "KHR_gaussian_splatting",
                "KHR_gaussian_splatting_compression_spz_2"
            ],
            "extensionsUsed": [
                "KHR_gaussian_splatting",
                "KHR_gaussian_splatting_compression_spz_2"
            ]
        }
    },
    "extensionsUsed": [
        "3DTILES_content_gltf"
    ],
    "geometricError": 8.0,
    "root": {xxx},
    }
}

Cesium版本更新记录

Cesium版本更新速度很快,基本上每个月会更新一次,这里会定期记录一些版本更新的要点

https://github.com/CesiumGS/cesium/releases

|-----------------------|---------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------|
| 版本 | 发布时间 | 功能 | 支持的扩展 |
| splat-shader(基于1.125) | 2025-1 | 实验性的实现加载3dgs数据 | KHR_gaussian_splatting |
| 1.130.1 | 2025-6 | 3DGS数据加载工程正式合并到主分支 | KHR_spz_gaussian_splats_compression |
| 1.131 | 2025-7 | 修复了tileset中modelMatrix平移和旋转的更改对GaussianSplatPrimitive的处理。 | KHR_spz_gaussian_splats_compression |
| 1.132 | 2025-8 | 修复了多个高斯泼溅tileset移除时的问题;...... | KHR_spz_gaussian_splats_compression |
| 1.133 | | ...... | KHR_spz_gaussian_splats_compression |
| 1.134 | | ...... | KHR_spz_gaussian_splats_compression |
| 1.135 | 2025-11 | 移除支持KHR_spz_gaussian_splats_compression扩展,改为支持新扩展 | 同时有以下扩展KHR_gaussian_splatting(定义和splat-shader不同)KHR_gaussian_splatting_compression_spz_2 |
| 1.136 | | ...... | 同时有以下扩展KHR_gaussian_splattingKHR_gaussian_splatting_compression_spz_2 |
| ...... | | ...... | ...... |
| 1.139 | 2026-3 | 修复了快照/排序更新中的高斯分布竞争条件;修复了渲染多个高斯散射图元时出现的闪烁问题; | 同时有以下扩展KHR_gaussian_splattingKHR_gaussian_splatting_compression_spz_2 |
| 1.140 | 2026-4 | 通过减少变换工作量、重用聚合缓冲区以及降低相机移动过程中重复排序的扰动,提高了高斯飞溅加载和更新的性能提高了高斯飞溅SPZ解码性能修复了在解码具有高球谐度的大型高斯飞溅SPZ文件时发生的崩溃修复了在渲染具有超过约1600万个飞溅的高斯飞溅tileset时,WebGL发生的崩溃修复了当tileset变换发生变化时,高斯飞溅模型矩阵未正确应用于飞溅位置、旋转和缩放的问题 | 同时有以下扩展KHR_gaussian_splattingKHR_gaussian_splatting_compression_spz_2 |
| | | | |

相关推荐
WebGIS开发2 小时前
地信职业百科②:GIS运维
运维·gis·就业·转行
康谋自动驾驶14 小时前
智驾仿真测试团队必看:ADAS HiL测试引入3DGS的ROI测算与结论!
自动驾驶·测试·3dgs·hil测试·场景生成·智驾仿真
丷丩15 小时前
01. 开篇:为什么我们需要轻量级 MVT 服务?
typescript·gis·mvt·geoai
康谋自动驾驶2 天前
3DGS+合成数据,真能让自动驾驶告别“长尾场景焦虑”吗?
自动驾驶·数据采集·模型·合成数据·标注·3dgs·高斯泼溅
德莱厄斯2 天前
GIS 开发要变天?看看高德空间智能给我们带来了什么!
前端·gis·agent
GISBox5 天前
.cmpt格式输出+四大性能优化:GISBox v2.2.3重构三维GIS数据处理能力
gis·兼容性·glb·osgb·高斯泼溅·gisbox·.cmpt
吃辣我第一5 天前
基于SuperMap REST-地图服务的B/S端简易图层样式编辑器实现
gis·supermap·iserver·iclient
元让_vincent5 天前
论文 Review:Trick-GS | ICASSP 2025 | 面向端侧部署的高效 3D Gaussian Splatting “技巧组合包”
3d·性能提升·3dgs
Strayer6 天前
地图上叠加自定义图片(CAD图纸或高精度局部地图等)
gis
Strayer6 天前
在地图上实现管网拓扑批量移动、旋转与缩放(参考图片的实现方式)
gis·webgl·数据可视化