一个关于 3d gaussian splatting 的小工具盒。
.ply
和.splat
之间的转换有nodejs版本也有python版本,都太重了,故有此一举。
写一写,加深理解
弄一弄,争取实用
搞搞搞,越做越好
- 文件格式的装换,支持
3DGS
的.ply
、.splat
、.sp20
格式 - 查看
.ply
的文件头信息
.sp20
格式每个高斯点固定长 20 bytes,参考.spz
编码方式简化而成,.splat
为 32 bytes,有效减少 37.5% 大小。为了能够更方便的进行渐进加载,未采用.spz
的排列压缩方式进一步减少大小- 注意:采用
.sp20
格式时肉眼基本识别不出渲染差异,适合绝大多数以减少文件大小为目的的使用场景,但并不是用来替代.splat
,因为.sp20
是有损编码方式,因此,也并不建议把.sp20
转换回.splat
或.ply
.sp20
格式可以使用这个渲染器查看 https://github.com/reall3d-com/Reall3dViewer
field | note |
---|---|
position x | 24-bit fixed point signed integer |
position y | 24-bit fixed point signed integer |
position z | 24-bit fixed point signed integer |
scale x | 8-bit log-encoded integer |
scale y | 8-bit log-encoded integer |
scale z | 8-bit log-encoded integer |
color r | unsigned 8-bit integer |
color g | unsigned 8-bit integer |
color b | unsigned 8-bit integer |
color a | unsigned 8-bit integer |
rotation x | 8-bit signed integer |
rotation y | 8-bit signed integer |
rotation z | 8-bit signed integer |
rotation w | 8-bit signed integer |
Usage:
gsbox [options]
Options:
p2s, ply2splat convert ply to splat
p2s20, ply2splat20 convert ply to splat20
s2p, splat2ply convert splat to ply
s2s20, splat2splat20 convert splat to splat20
simple-ply simple mode to write ply
info <plyfile> display the ply header
-i, --input <file> specify the input file
-o, --output <file> specify the output file
-c, --comment <text> output ply with comment
-v, --version display version information
-h, --help display help information
Examples:
gsbox p2s -i /path/to/input.ply -o /path/to/output.splat
gsbox p2s20 -i /path/to/input.ply -o /path/to/output.sp20
gsbox s2p -i /path/to/input.splat -o /path/to/output.ply
gsbox s2s20 -i /path/to/input.splat -o /path/to/output.sp20
gsbox s2p -i /path/to/input.splat -o /path/to/output.ply simple-ply
gsbox s2p -i /path/to/input.splat -o /path/to/output.ply -c "your comment"
gsbox info -i /path/to/file.ply
# 把3dgs的ply转成splat
gsbox ply2splat -i /path/to/input.ply -o /path/to/output.splat
# 把3dgs的ply转成splat20
gsbox ply2splat20 -i /path/to/input.ply -o /path/to/output.sp20
# 把splat转成3dgs的ply
gsbox splat2ply -i /path/to/input.splat -o /path/to/output.ply
# 把splat转成3dgs的ply
gsbox splat2splat20 -i /path/to/input.splat -o /path/to/output.sp20
# 查看ply的文件头信息
gsbox info file.ply