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 |
| | | | |

相关推荐
liuccn1 天前
QGIS Server 插件开发指南
gis·空间数据
丷丩2 天前
从“失忆工具“到“智能助手“:GeoAI平台的Agent架构演进
人工智能·架构·gis·空间分析·geoai
大势智慧2 天前
智影R200手持SLAM使用教程八:3DGS数据采集规范
经验分享·教程·数据采集·slam·3dgs·三维扫描·三维激光扫描仪
杭州泽沃电子科技有限公司5 天前
GIS从“稀少”到“激增”:局放监测再不上就晚了
gis·智能监测·局放
星座5285 天前
【无人机+GIS】智慧农林遥感核心技术:多源数据驱动的作物参数反演与制图
gis·无人机·遥感·智慧农林
zhz52146 天前
一个简单、轻量级且安全的离线GIS 系统架构设计
安全·系统架构·vue·gis·fastapi
Navicat中国6 天前
用 Navicat 来可视化 PostgreSQL GIS 数据,是否支持?
数据库·postgresql·gis·数据可视化·navicat
scott1985128 天前
扩散模型修复3DGS:评价新指标EIG分析
生成式·3dgs·新视角·nvs修复
vjmap9 天前
唯杰地图CAD图层加高性能特效扩展包发布
前端·gis