BimAnt 3DGS
3DGS · 高斯泼溅

3DGS 文件格式:6 种容器的区别

同一个高斯泼溅场景可以装进六种容器。体积、精度、兼容性各不一样;先看这张表,再决定转成什么。

没有文件?试一个 →

支持 .ply .splat .ksplat .spz .sog .compressed.ply · 文件不会离开你的电脑

六种格式对照

“每点体积”一列只在有官方口径或实测数据时填写;KSPLAT 与 Compressed PLY 受压缩设置影响大,不写倍数。

格式每点体积压缩谁在用什么时候选它
PLY (.ply)约 248 字节(SH 3 阶)无几乎所有训练器的默认输出要最全细节、要喂给别的训练/编辑工具
SPLAT (.splat)32 字节有损早期网页查看器的事实标准想快速塞进网页、体积优先
KSPLAT (.ksplat)—有损three.js 的 GaussianSplats3D 插件项目已经用那个插件
SPZ (.spz)约为 PLY 的 1/10有损Niantic 提出;World Labs 的 Atlas API 输出它体积与兼容性最平衡的默认选择
SOG (.sog)约为 PLY 的 1/15–1/20有损PlayCanvas 规范,为 Web 分发与流式加载设计要在网页里挂大场景、带宽敏感
Compressed PLY (.compressed.ply)—有损PlayCanvas 生态已经是这个格式,或者对方指定要它

常见问题

PLY 和 SPZ 有什么区别?

PLY 是原始浮点数据,SH 3 阶时每点约 248 字节;SPZ 是 Niantic 提出的量化压缩格式,体积通常约为 PLY 的 1/10。PLY 胜在通用与保真,SPZ 胜在体积与 Web 分发。

SPZ v3 和 v4 有什么区别?

v3 是 gzip 容器,兼容性最好;v4 用 NGSP magic + zstd,需要较新的加载器。three.js r187 的 SPZLoader 两种都能读;老工具通常只认 v3。给别人发文件时选 v3。

SPLAT 为什么每点只有 32 字节?

位置 12 字节 + 尺度 12 字节 + 颜色 4 字节 + 旋转 4 字节 = 32 字节,全部量化。它不存球谐系数,所以体积小、兼容老查看器,但复杂光照下会比带 SH 的格式平。

SOG 和 SPZ 哪个更小?

SOG 更激进:体积通常约为 PLY 的 1/15–1/20,SPZ 约 1/10。两者都是有损,SOG 的细节损失通常更明显。当前上游 0.6.0 的 SOG 编码器很慢,大文件建议先用 SPZ。

转成压缩格式之后还能转回来吗?

能。压缩格式转回 PLY 会得到一个体积变大、精度不变的文件;这不是转坏了,而是有损压缩的正常结果。压缩时丢掉的部分找不回来。

我的模型有 6000 个 splat,算大还是小?

很小。一个 splat 就是一个高斯椭球;浏览器里几十万点的场景很常见,6000 点属于轻量模型。真正吃内存的是百万级以上的点数和 SH 3 阶的系数。

转换会额外降低精度吗?

转换过程本身不会额外降精度,但目标格式自己的压缩会丢细节:SPZ、SOG、SPLAT、KSPLAT 都是有损容器。要保留最多信息,选 PLY。

同一个模型转成不同格式,点数会变吗?

通常不变,变的是每个点存了多少信息。压缩格式可能合并或裁剪极弱的高斯,具体取决于编码器;本工具会在转换结果里显示输出体积,不做“点数一定不变”的承诺。

为什么没有“3DGS 格式”这个扩展名?

3DGS 是一类技术(3D Gaussian Splatting)的缩写,不是文件格式。具体文件请按扩展名指认:.ply、.splat、.ksplat、.spz、.sog、.compressed.ply。

转换格式

选一个目标格式。转换在浏览器里完成,文件不上传。

目标格式