尝试了下,使用babylonjs 9.5加载大队长的高斯泼溅大场景压缩模型,效果还可以,达到了可用的状态。
sog模型源自:
https://space.bilibili.com/42810410
下面的截图都是来自于babylonjs9.5的真实渲染效果:




SOG(Spatially Ordered Gaussians)是一种专为网络传输和实时渲染设计的高效3D高斯泼溅数据格式,可以理解为高斯泼溅领域的“WebP图片”。
📁 文件组成与结构
SOG格式有两种组织形式,但核心数据都被编码为多个WebP图片。
- 打包文件 (
.sog):最常用的形式,一个文件包含了所有数据,本质是一个ZIP压缩包,方便分发和使用。 - 解包文件 (
meta.json+ 多个.webp文件):包含一个meta.json元数据文件和多个.webp图片文件,每个图片存储了高斯点的一种属性。
无论是打包还是解包形式,其核心都是用图像来存储数据,用meta.json文件来描述数据和提供解码参数。其具体的数据结构如下表所示:
| 文件名 | 存储内容 | 说明 |
|---|---|---|
meta.json | 场景元数据和文件名 | 包含高斯点数量、各属性的解码范围(如位置、缩放)、码本(codebook)等关键信息。 |
means_l.webp | 位置的低8位 (RGB) | 与means_u.webp结合,每个通道(R,G,B)对应一个坐标轴(x,y,z),还原完整坐标。 |
means_u.webp | 位置的高8位 (RGB) | 与means_l.webp结合,还原完整坐标。 |
scales.webp | 每个轴的大小索引 (RGB) | 指向meta.json中codebook的索引,用于还原每个轴的实际大小。 |
quats.webp | 压缩的四元数 (RGBA) | 用于还原每个高斯点的旋转方向。 |
sh0.webp | 基础颜色和透明度 (RGBA) | 存储基础的球谐系数(DC分量)和不透明度。 |
shN_centroids.webp | 高阶球谐系数码本 (RGB) | (可选)存储高阶球谐系数的调色板。 |
shN_labels.webp | 高阶球谐系数索引 (RG) | (可选)每个高斯点指向调色板的索引,用于还原高阶颜色细节。 |
💡 核心优势
- 超高压缩率:通过有损量化(lossy quantization)技术,SOG格式通常能将文件大小压缩到原始PLY文件的1/15到1/20。比如,一个1000MB的PLY文件,使用SOG压缩后可能仅需约42MB,文件大小减少了约95%。相较于其它压缩PLY格式,SOG还能再小2到3倍。
- 加载性能优越:SOG的排序方式(Morton order)使其数据对GPU更友好,加载时无需额外处理,可直接上传至GPU渲染,大大缩短了加载等待时间。
⚠️ 注意事项
- 有损压缩:因为使用了量化技术,SOG是一种有损压缩格式,其视觉质量通常优于同级别的其它有损格式。如果在使用中发现了明显的画质问题,可能和压缩参数有关。
- 无损压缩要求:虽然SOG本身是有损的,但它依赖的
.webp图片文件必须使用无损压缩,否则会导致数据损坏,出现明显的渲染错误。
🛠️ 兼容性与工具链
SOG格式由PlayCanvas开源,因此其官方引擎(PlayCanvas Engine v2.11.0+)和编辑器对它提供了原生支持,可以直接拖拽加载.sog文件。