为什么 SPZ 是体积与兼容性最平衡的一档
PLY 保留原始浮点,SPZ 把位置、尺度、旋转、颜色重新量化再压缩。它不追求 SOG 那种极限体积,但换来的是大多数查看器都能读:three.js、SuperSplat、Niantic 的参考实现都支持。
把任意支持的 3DGS 文件拖进来,工具会先按内容识别实际格式,再转成 SPZ。转换面板里的目标已经选好,确认后点「开始转换」即可。
- 输入:PLY、SPLAT、KSPLAT、SPZ、SOG、Compressed PLY
- 输出:SPZ v3(默认,兼容性最好)或 SPZ v4(需要较新的加载器)
- 下载前会校验产物;失败时给具体原因,不会给你一个打不开的文件
选 v3 还是 v4?
给别人用、或者不确定对方的查看器版本,选 v3:它是 gzip 容器,three.js、SuperSplat、Niantic 的参考实现都能读。
只在较新的工具链里自己用,可以选 v4:它用 NGSP magic + zstd,压缩率略好,但老加载器读不了。three.js 从 r187 起两种都支持。
体积算例:10 万点会变成多大
10 万点、SH 3 阶的 PLY 约 24.8 MB(100,000 × 248 字节)。按 1/10 的官方口径,SPZ 大约 2.5 MB;实际会因量化参数、SH 阶数和场景结构有出入。
对照着看:同样这份模型转 SPLAT 是 3.2 MB,转 SOG 约 1.4 MB。SPZ 的 2.5 MB 不是最小,但它是三者里兼容面最宽的一个。
谁在读 SPZ
three.js r187 的 SPZLoader 支持 v3(gzip)与 v4(NGSP + zstd);SuperSplat、Niantic 的 spz 工具链、World Labs 的 Atlas API 也都围绕它工作。
如果你的下游只认 PLY,别把 SPZ 当存档:SPZ 是有损压缩,转回 PLY 只会得到更大的文件,不会恢复细节。需要长期保留时,PLY 和 SPZ 各留一份。
常见的 SPZ 报错
“SPZ version not supported”:老查看器只认 v3,把输出改成 v3 再试。
“zstd / 解压失败”:v4 需要较新的加载器;浏览器端 three.js r187 起支持,旧版本或旧工具请用 v3。
“转换后没有变小”:源文件如果已经是 SPLAT 或 SOG,再转 SPZ 体积可能接近甚至变大,这是正常的;SPZ 的 1/10 是相对 PLY 的口径。
怎么验证转换结果没问题
把下载的 .spz 再拖回本页,能正常出画面、点数与源文件一致,就说明文件头和压缩流没坏。
需要更严格时,做一次 spz → ply 回环:点数应一致,包围盒允许量化误差(我们在 1,432 点的样本上实测最大差约 1.1e-4)。
SPZ 适合谁,不适合谁
需要把模型放进网页、发给同事、或喂给 three.js / SuperSplat / World Labs 时,SPZ 是默认选择:体积约为 PLY 的 1/10,主流 loader 都能读。它的压缩是有损的,转出去就回不到原始字节。
不适合两种场景:要长期存档、保留最大精度(留 PLY);要在极老、只认 SPLAT 的查看器里打开(转 SPLAT)。如果你只是自己在新版 three.js 里用,v4 也可以;给别人发文件默认 v3。
- 适合:网页分发、跨工具打开、World Labs Atlas 输出
- 不适合:需要逐字节保真的存档、只认 PLY 的旧训练器
- 默认:v3;确定对方是 three.js r187+ 或新工具链时再用 v4
和 SOG / SPLAT 的取舍
SOG 比 SPZ 更小(约为 PLY 的 1/15–1/20),但编码慢得多,细节损失也更明显;SPZ 的编码快、loader 多,是网页分发的默认折中。
SPLAT 固定 32 字节/点,10 万点 3.2 MB,比 SPZ 的 2.5 MB 略大,而且不存球谐;它胜在老查看器兼容,不是压缩率。
如果对方只认 PLY,就留 PLY;SPZ 不要当长期存档,压缩掉的细节转不回来。
- 网页分发、跨工具:SPZ
- 极限体积、PlayCanvas:SOG
- 老查看器、32 字节:SPLAT
- 存档、继续训练:PLY
手把手:从拖入到下载
- 把 PLY(或任意支持的格式)拖进画布,等待信息条出现点数与包围盒
- 点工具条「⇩ 转换」,目标已经预选为 SPZ
- 需要兼容老工具就选 v3,只在较新工具链里用可选 v4
- 点「开始转换」,完成后下载 .spz;大文件可以随时取消
- 把下载的文件再拖回来,确认点数与源文件一致
什么时候该换一个格式
要更小的分发体积、并且目标平台是 PlayCanvas,选 SOG;要兼容只认 32 字节老格式的查看器,选 SPLAT;要继续训练或编辑,留 PLY。
如果转换后体积没有变小,先确认源文件已经是压缩格式;从 SPLAT/SOG 转 SPZ 可能持平甚至变大,这是源文件已经很小,不是工具坏了。
常见问题
SPZ 转回 PLY 会变大吗?
会,通常约 10 倍。体积变大不等于精度变高:SPZ 压缩时丢掉的部分不会因为转成 PLY 而回来。
为什么转换后体积没有明显变小?
SPZ 的 1/10 是相对 PLY 的大致口径。源文件如果已经是 SPLAT 或 SOG 这类压缩格式,再转 SPZ 体积可能接近甚至变大,这属于正常现象。
文件会上传吗?
不会。转换在浏览器里由 WebAssembly 完成,页面没有后端,也不做文件上传。
为什么默认输出 v3,而不是 v4?
v3 的 gzip 容器兼容面更宽:老版本 SuperSplat、旧插件和自建 loader 通常都能读。确定对方是 three.js r187 或更新的工具链时,再选 v4。
SPZ 文件能直接放进 three.js 吗?
能。three.js r187 用 SPZLoader.parse 读 v3/v4,再把 geometry 交给 GaussianSplat;本页查看器就是这么做的。