SOG 换来的体积,代价是什么
SOG 把高斯按空间排序、分块,用 WebP 存属性图,目标就是 Web 分发与流式加载。它比 SPZ 更激进,所以体积更小,但薄结构、半透明边缘、贴图细节也更容易先出现差别。
要“能看清细节”就别选它;要“网页里快速加载”再选。这个取舍没有两全。
- 输入:PLY、SPZ、SPLAT、KSPLAT、Compressed PLY、SOG
- 输出:SOG(zip 容器 + WebP 属性图)
- 适合:网页里挂大场景、带宽敏感、能接受更明显的细节损失
体积算例:10 万点约 1.4 MB
10 万点、SH 3 阶的 PLY 约 24.8 MB(100,000 × 248 字节)。按 1/15–1/20 的口径,SOG 大约 1.2–1.7 MB;同样这份模型 SPZ 约 2.5 MB,SPLAT 约 3.2 MB。SOG 是三者里最小的。
体积最小不等于最合适:如果你的场景有大量细线、叶片或半透明材质,先拿一小段做个对比,再决定要不要为了带宽牺牲细节。
先说清楚:SOG 编码很慢
当前上游 GaussForge 0.6.0 的 SOG 写出实测:1,432 点约 1 秒,20,000 点约 20 秒,50,000 点约 37 秒,195,099 点约 5 分钟,445,409 点约 25 分钟(SH 阶数越高越慢,不是线性)。
所以大文件请优先转 SPZ;确实需要 SOG 时,工具会先给时间预估并要求确认,转换中可以随时取消。取消不会损坏原文件,也不会留下半成品。
谁在读 SOG
SOG 是 PlayCanvas 的规范,PlayCanvas 引擎和它的 Web 分发链路可以直接读;three.js r187 没有原生 SOG loader,所以本工具查看 SOG 时会先在本地转成 SPZ 再渲染。
如果你只是要在 three.js 里看,SPZ 更直接;如果目标平台明确是 PlayCanvas,再选 SOG。
常见报错:转换卡住 / 等太久
SOG 转换慢是编码器问题,不是浏览器卡死:页面不会冻结,进度条上会走时间;等不了就点取消,或用 SPZ 代替。
手机或低内存设备上,大文件可能在编码前就失败;先转小样本确认流程,再处理大场景。
怎么验证输出没问题
把 .sog 再拖回本页,能正常出画面、点数与源文件一致,说明 zip 容器和 WebP 属性图可读。
再和 SPZ 版本并排对比细节,确认损失在你能接受的范围内;要长期存档,保留原始 PLY。
SOG 适合谁,不适合谁
适合:目标平台是 PlayCanvas、需要在网页里挂大场景、带宽比细节更重要。SOG 用空间排序 + 分块 + WebP 属性图,把体积压到 PLY 的 1/15–1/20。
不适合:需要特写画质、薄结构多、半透明边缘多,或者你只是要在 three.js 里快速看。它的压缩是有损的,细节损失通常比 SPZ 更明显。
- 适合:PlayCanvas、Web 分发、带宽敏感的大场景
- 不适合:高保真、细节优先、three.js 原生查看
- 注意:当前上游编码器很慢,大文件先转 SPZ
和 SPZ / SPLAT 的取舍
SPZ 约 1/10、编码快、loader 多;SOG 约 1/15–1/20、编码慢、细节损失更明显。10 万点时两者约 2.5 MB 与 1.4 MB,差的这一兆多要看带宽值不值。
SOG 编码在 Worker 里跑,页面不会冻结,但浏览器内存会同时持有源数据与中间结果;超大文件建议先在桌面端处理,不要直接在手机上转。
SPLAT 固定 3.2 MB/10 万点,比 SOG 大,但编码快、老查看器兼容;它不是 SOG 的替代品,场景不同。
要长期存档就留 PLY;SOG 是分发格式,不是母版。压缩掉的薄结构和半透明边缘,转回 PLY 也回不来。只是在本工具里看时,不转 SOG 也能看,先拿 SPZ 试效果更省时间。
- PlayCanvas、带宽优先:SOG
- three.js、编码速度优先:SPZ
- 老查看器、32 字节:SPLAT
- 存档、继续训练:PLY
手把手:从 PLY 转 SOG
- 把 PLY(或其它支持格式)拖进画布
- 点「⇩ 转换」,目标已经预选为 SOG
- 看时间预估;大文件会有二次确认,转换中可以取消
- 下载 .sog;10 万点大约 1.2–1.7 MB
- 把 .sog 拖回本页,确认能出画面且点数一致
替代方案:先用 SPZ 看效果
如果不确定 SOG 的细节损失能不能接受,先转一份 SPZ 看效果,再决定要不要为了更小的体积换 SOG。SPZ 编码快得多,适合反复试。
如果目标平台明确是 PlayCanvas,直接按它的规范走;如果只是 three.js,SPZ 更直接,因为 three.js 没有原生 SOG loader。
常见问题
SOG 和 SPZ 怎么选?
体积优先、能接受细节损失,选 SOG;体积与兼容性平衡,选 SPZ。当前版本 SOG 编码很慢,大文件建议先用 SPZ 看效果。
转换到一半能取消吗?
可以。SOG 转换在独立的 Worker 里执行,点「取消」会立刻终止并把页面恢复到可操作状态;原文件不受影响。
SOG 文件能再转回 PLY 吗?
可以。转回 PLY 体积会明显变大,但精度不会恢复;SOG 压缩时丢掉的部分找不回来。
SOG 能直接在 three.js 里加载吗?
three.js r187 没有原生 SOG loader。本工具查看 SOG 时先在 Worker 里转成 SPZ,再交给 three.js;目标平台是 PlayCanvas 时才会直接读 SOG。
SOG 转换时关闭页面会怎样?
转换在 Worker 里进行,关闭页面会终止进程,不会生成半成品下载;重新打开后需要从源文件再转一次。