splat-3dtiles 是一款将高斯点云转换为 Cesium 3D Tiles 格式的工具。
僅支持 .splat 數據文件,僅支持 z 向上,且以 ENU 坐标系存储。 暫不支持平移、旋轉、缩放等操作,如果需要,可以先使用其他工具进行转换。 可使用 SuperSplat 等工具轉換 https://superspl.at/editor
python main.py --input ./data/NNU_1/splats --output ./data/NNU_1/3dtiles --enu_origin 118.91083364082562 32.116922266350315 --tile_zoom 20
"configurations": [
{
"name": "Python Debugger: splat-3dtiles",
"type": "debugpy",
"request": "launch",
"program": "./main.py",
"console": "integratedTerminal",
"python": "D:/Python39/python.exe",
"args": [
"--input", "./data/NNU_1/splats",
"--output", "./data/NNU_1/3dtiles",
"--enu_origin", "118.91083364082562", "32.116922266350315",
"--tile_zoom", "20",
],
}
]
parser = argparse.ArgumentParser(description="将 3D Gaussian Splatting 点云转换为 Cesium 3D Tiles 格式")
parser.add_argument("--input", "-i", required=True, help="输入的高斯点云文件夹.")
parser.add_argument("--output", "-o", required=True, help="输出保存 3dtiles 文件夹.")
parser.add_argument("--enu_origin", nargs=2, type=float, metavar=('lon', 'lat'), help="指定 ENU 坐标系的原点经纬度 (lon, lat)。默认为 (0.0, 0.0)。")
parser.add_argument("--tile_zoom", type=int, default=20, help="分块的等级,默认为 20。")
parser.add_argument("--tile_resolution", type=float, default=0.1, help="用于生成 Lod 的参数,20级代表的精度,默认为 0.1 米。")
parser.add_argument("--tile_error", type=float, default=1, help="用于生成 tilejson 的 geometric_error 参数,20级代表的误差,默认为 1 米。")
parser.add_argument("--min_alpha", type=float, default=1.0, help="最小透明度阈值,小于��阈值的高斯点会被过滤,默认为 1.0。")
parser.add_argument("--max_scale", type=float, default=10000, help="最大缩放值阈值,大于该阈值的高斯点会被过滤,默认为 10000。")
parser.add_argument("--flyers_num", type=int, default=25, help="移除飞点的最临近点数,默认为25。")
parser.add_argument("--flyers_dis", type=float, default=10, help="移除飞点的距离因子,最小移除的越多,默认为10。")