Cesium支持显示3D高斯泼溅的3dtiles数据
cesium 支持显示3D高斯泼溅数据了,第一个版本是1.130.1 在 2025-06-16 发布,当前最新版本 1.131也还是在新示例中,来尝尝鲜

效果
官方示例里面是3dgs和倾斜的对比,我截了几张图,大家直观感受一下,左侧是3dgs,右侧是倾斜
远看

杆塔对比

导线都可以看到

门对比

植被对比


变压器对比

这里可以看到,相比倾斜数据,3dgs数据在中远距离视角的效果是很有优势的(整体颜色,杆塔显示效果,导线显示效果都比较好),但是在近距离视角就会显得模糊(门,植被),而且有些视角,界面会上闪烁。
数据结构
这几天我一直在看数据是怎么组织的,主要是两个方面,tileset.json 和glb,主要是 KHR_spz_gaussian_splats_compression 扩展,它是 KHR_gaussian_splatting 的压缩形式,
目前1.130.1版本只支持 KHR_spz_gaussian_splats_compression 这个,后面可能也会支持 KHR_gaussian_splatting 格式,KHR_gaussian_splatting数据量为前者的 5~10 倍。
tileset.json
tileset.json 中增加了扩展 KHR_spz_gaussian_splats_compression
"asset": {
"version": "1.1"
},
"extensions": {
"3DTILES_content_gltf": {
"extensionsRequired": [
"KHR_spz_gaussian_splats_compression"
],
"extensionsUsed": [
"KHR_spz_gaussian_splats_compression"
]
}
},
"extensionsUsed": [
"3DTILES_content_gltf"
],
glb
增加了扩展 KHR_spz_gaussian_splats_compression,相关信息可参考 KHR_gaussian_splatting
glb 里关键的信息我列出来, 主要包括:

{
"accessors": [
{
"componentType": 5126,
"count": 300000,
"max": [1,1,1],
"min": [-1,-1,-1],
"type": "VEC3"
},
{
"componentType": 5121,
"count": 300000,
"type": "VEC4"
},
{
"componentType": 5126,
"count": 300000,
"type": "VEC3"
},
{
"componentType": 5126,
"count": 300000,
"type": "VEC4"
}
],
"extensionsRequired": [
"KHR_spz_gaussian_splats_compression"
],
"extensionsUsed": [
"KHR_spz_gaussian_splats_compression"
],
"meshes": [
{
"primitives": [
{
"attributes": {
"COLOR_0": 1,
"POSITION": 0,
"_ROTATION": 3,
"_SCALE": 2
},
"extensions": {
"KHR_spz_gaussian_splats_compression": {
"bufferView": 0
}
}
}
]
}
]
}
效果
技术飞速发展,一不小心可能就错过了很多好玩的。3dgs的效果很早就在网上看到过,有些视频,文章图片刻意突出优势,当时看起来很惊艳,等到自己从github闪把数据拉下来看,发现那些只有某些角度,不免会有些失望。之前在B站上也看到过有人对比倾斜,3dgs,nerf的效果,了解个大概。3DTiles Gaussian Splatting 这个示例做的很好,让我对这种技术有了更深入的了解。
之前网上有很多方案,有的叠加div,有的做自己的格式,但是都没法做到很大影响,这个版本3dtiles支持之后,感觉有了落地的影子,不得不感慨,官方实力真强,开源的力量真强。