ReUseX
0.0.5
3D Point Cloud Processing for Building Reuse
Toggle main menu visibility
Loading...
Searching...
No Matches
gsplat.hpp
Go to the documentation of this file.
1
// SPDX-FileCopyrightText: 2026 Povl Filip Sonne-Frederiksen
2
//
3
// SPDX-License-Identifier: GPL-3.0-or-later
4
5
#pragma once
6
#include "
../global-params.hpp
"
7
#include <reusex/gsplat/GaussianCloud.hpp>
8
#include <reusex/gsplat/TrainingViews.hpp>
9
#include <reusex/gsplat/train.hpp>
10
11
#include <CLI/CLI.hpp>
12
#include <cstdint>
13
#include <memory>
14
#include <string>
15
#include <vector>
16
23
struct
SubcommandCreateGsplatOptions
{
24
std::string
seed_cloud
=
reusex::gsplat::GsplatStageOptions
{}.
seed_cloud
;
25
std::size_t
max_points
=
reusex::gsplat::GaussianInitOptions
{}.
max_points
;
26
int
sh_degree
=
reusex::gsplat::GaussianInitOptions
{}.
sh_degree
;
29
int
sh_degree_interval
=
reusex::gsplat::TrainOptions
{}.
sh_degree_interval
;
30
float
lr_sh_rest
=
reusex::gsplat::TrainOptions
{}.
lr_sh_rest
;
31
32
int
iterations
=
reusex::gsplat::TrainOptions
{}.
iterations
;
33
float
lambda_dssim
=
reusex::gsplat::TrainOptions
{}.
lambda_dssim
;
34
unsigned
seed
=
reusex::gsplat::TrainOptions
{}.
seed
;
35
bool
no_prune
= !
reusex::gsplat::TrainOptions
{}.
prune_enabled
;
36
37
// Held-out evaluation (TrainOptions::holdout_every / eval_interval /
38
// eval_max_views).
39
int
holdout_every
=
reusex::gsplat::TrainOptions
{}.
holdout_every
;
40
int
eval_interval
=
reusex::gsplat::TrainOptions
{}.
eval_interval
;
41
int
eval_max_views
=
reusex::gsplat::TrainOptions
{}.
eval_max_views
;
42
43
// MCMC density control (TrainOptions::mcmc).
44
bool
mcmc
=
reusex::gsplat::MCMCOptions
{}.
enabled
;
45
double
mcmc_cap_factor
=
reusex::gsplat::MCMCOptions
{}.
cap_factor
;
46
std::int64_t
mcmc_cap
=
reusex::gsplat::MCMCOptions
{}.
cap_absolute
;
47
int
mcmc_refine_every
=
reusex::gsplat::MCMCOptions
{}.
refine_every
;
48
float
mcmc_noise_lr
=
reusex::gsplat::MCMCOptions
{}.
noise_lr
;
49
float
mcmc_opacity_reg
=
reusex::gsplat::MCMCOptions
{}.
opacity_reg
;
50
float
mcmc_scale_reg
=
reusex::gsplat::MCMCOptions
{}.
scale_reg
;
51
52
int
frame_stride
=
reusex::gsplat::TrainingViewOptions
{}.
frame_stride
;
53
int
first_frame
=
reusex::gsplat::TrainingViewOptions
{}.
first_frame
;
54
int
last_frame
=
reusex::gsplat::TrainingViewOptions
{}.
last_frame
;
55
int
max_image_size
=
reusex::gsplat::TrainingViewOptions
{}.
max_image_size
;
56
std::size_t
max_views
=
reusex::gsplat::TrainingViewOptions
{}.
max_views
;
57
58
bool
use_panoramas
=
59
reusex::gsplat::TrainingViewOptions
{}.
include_panorama_slices
;
60
int
pano_n_yaw
=
reusex::gsplat::TrainingViewOptions
{}.
pano_n_yaw
;
61
double
pano_fov_deg
=
reusex::gsplat::TrainingViewOptions
{}.
pano_fov_deg
;
62
int
pano_tile
=
reusex::gsplat::TrainingViewOptions
{}.
pano_tile
;
63
64
std::string
splat_name
=
reusex::gsplat::GsplatStageOptions
{}.
splat_name
;
65
std::string
out_ply
;
66
std::string
render_dir
;
67
std::vector<int>
render_iterations
;
68
std::size_t
render_view_index
=
69
reusex::gsplat::TrainOptions
{}.
render_view_index
;
70
71
// Periodic checkpointing (TrainOptions::checkpoint_every / checkpoint_keep /
72
// checkpoint_dir).
73
int
checkpoint_every
=
reusex::gsplat::TrainOptions
{}.
checkpoint_every
;
74
int
checkpoint_keep
=
reusex::gsplat::TrainOptions
{}.
checkpoint_keep
;
75
std::string
checkpoint_dir
;
76
};
77
78
void
setup_subcommand_create_gsplat
(CLI::App &app,
79
std::shared_ptr<RuxOptions> global_opt);
80
81
int
run_subcommand_create_gsplat
(
SubcommandCreateGsplatOptions
const
&opt,
82
const
RuxOptions
&global_opt);
setup_subcommand_create_gsplat
void setup_subcommand_create_gsplat(CLI::App &app, std::shared_ptr< RuxOptions > global_opt)
run_subcommand_create_gsplat
int run_subcommand_create_gsplat(SubcommandCreateGsplatOptions const &opt, const RuxOptions &global_opt)
global-params.hpp
RuxOptions
Definition
global-params.hpp:44
SubcommandCreateGsplatOptions
Options for rux create gsplat.
Definition
gsplat.hpp:23
SubcommandCreateGsplatOptions::sh_degree_interval
int sh_degree_interval
TrainOptions::sh_degree_interval / lr_sh_rest — the view-dependent-colour warm-up.
Definition
gsplat.hpp:29
SubcommandCreateGsplatOptions::seed_cloud
std::string seed_cloud
Definition
gsplat.hpp:24
SubcommandCreateGsplatOptions::first_frame
int first_frame
Definition
gsplat.hpp:53
SubcommandCreateGsplatOptions::use_panoramas
bool use_panoramas
Definition
gsplat.hpp:58
SubcommandCreateGsplatOptions::pano_tile
int pano_tile
Definition
gsplat.hpp:62
SubcommandCreateGsplatOptions::max_image_size
int max_image_size
Definition
gsplat.hpp:55
SubcommandCreateGsplatOptions::iterations
int iterations
Definition
gsplat.hpp:32
SubcommandCreateGsplatOptions::out_ply
std::string out_ply
Definition
gsplat.hpp:65
SubcommandCreateGsplatOptions::max_views
std::size_t max_views
Definition
gsplat.hpp:56
SubcommandCreateGsplatOptions::mcmc_cap_factor
double mcmc_cap_factor
Definition
gsplat.hpp:45
SubcommandCreateGsplatOptions::max_points
std::size_t max_points
Definition
gsplat.hpp:25
SubcommandCreateGsplatOptions::checkpoint_keep
int checkpoint_keep
Definition
gsplat.hpp:74
SubcommandCreateGsplatOptions::pano_fov_deg
double pano_fov_deg
Definition
gsplat.hpp:61
SubcommandCreateGsplatOptions::render_dir
std::string render_dir
Definition
gsplat.hpp:66
SubcommandCreateGsplatOptions::mcmc_refine_every
int mcmc_refine_every
Definition
gsplat.hpp:47
SubcommandCreateGsplatOptions::no_prune
bool no_prune
Definition
gsplat.hpp:35
SubcommandCreateGsplatOptions::eval_interval
int eval_interval
Definition
gsplat.hpp:40
SubcommandCreateGsplatOptions::mcmc_cap
std::int64_t mcmc_cap
Definition
gsplat.hpp:46
SubcommandCreateGsplatOptions::last_frame
int last_frame
Definition
gsplat.hpp:54
SubcommandCreateGsplatOptions::lr_sh_rest
float lr_sh_rest
Definition
gsplat.hpp:30
SubcommandCreateGsplatOptions::render_iterations
std::vector< int > render_iterations
Definition
gsplat.hpp:67
SubcommandCreateGsplatOptions::lambda_dssim
float lambda_dssim
Definition
gsplat.hpp:33
SubcommandCreateGsplatOptions::pano_n_yaw
int pano_n_yaw
Definition
gsplat.hpp:60
SubcommandCreateGsplatOptions::mcmc_noise_lr
float mcmc_noise_lr
Definition
gsplat.hpp:48
SubcommandCreateGsplatOptions::mcmc
bool mcmc
Definition
gsplat.hpp:44
SubcommandCreateGsplatOptions::holdout_every
int holdout_every
Definition
gsplat.hpp:39
SubcommandCreateGsplatOptions::sh_degree
int sh_degree
Definition
gsplat.hpp:26
SubcommandCreateGsplatOptions::checkpoint_every
int checkpoint_every
Definition
gsplat.hpp:73
SubcommandCreateGsplatOptions::mcmc_scale_reg
float mcmc_scale_reg
Definition
gsplat.hpp:50
SubcommandCreateGsplatOptions::seed
unsigned seed
Definition
gsplat.hpp:34
SubcommandCreateGsplatOptions::checkpoint_dir
std::string checkpoint_dir
Definition
gsplat.hpp:75
SubcommandCreateGsplatOptions::render_view_index
std::size_t render_view_index
Definition
gsplat.hpp:68
SubcommandCreateGsplatOptions::frame_stride
int frame_stride
Definition
gsplat.hpp:52
SubcommandCreateGsplatOptions::eval_max_views
int eval_max_views
Definition
gsplat.hpp:41
SubcommandCreateGsplatOptions::mcmc_opacity_reg
float mcmc_opacity_reg
Definition
gsplat.hpp:49
SubcommandCreateGsplatOptions::splat_name
std::string splat_name
Definition
gsplat.hpp:64
reusex::gsplat::GaussianInitOptions
Parameters for seeding Gaussians from a ReUseX point cloud.
Definition
GaussianCloud.hpp:65
reusex::gsplat::GaussianInitOptions::max_points
std::size_t max_points
Uniform stride cap on the number of seeds (0 = use every point).
Definition
GaussianCloud.hpp:89
reusex::gsplat::GaussianInitOptions::sh_degree
int sh_degree
Active SH degree.
Definition
GaussianCloud.hpp:82
reusex::gsplat::GsplatStageOptions
End-to-end options for the rux create gsplat stage.
Definition
train.hpp:320
reusex::gsplat::GsplatStageOptions::splat_name
std::string splat_name
Name the trained splat is stored under in the project (#322).
Definition
train.hpp:331
reusex::gsplat::GsplatStageOptions::seed_cloud
std::string seed_cloud
ProjectDB cloud used to seed Gaussians.
Definition
train.hpp:321
reusex::gsplat::MCMCOptions
3DGS-MCMC density control (Kheradmand et al.
Definition
train.hpp:37
reusex::gsplat::MCMCOptions::noise_lr
float noise_lr
scales the Langevin noise (paper's value)
Definition
train.hpp:62
reusex::gsplat::MCMCOptions::opacity_reg
float opacity_reg
L1 regularizers in activated space.
Definition
train.hpp:88
reusex::gsplat::MCMCOptions::scale_reg
float scale_reg
Definition
train.hpp:89
reusex::gsplat::MCMCOptions::refine_every
int refine_every
iterations between relocate+grow passes
Definition
train.hpp:52
reusex::gsplat::MCMCOptions::cap_factor
double cap_factor
Hard ceiling on the Gaussian count, as a multiple of the seed count.
Definition
train.hpp:46
reusex::gsplat::MCMCOptions::cap_absolute
std::int64_t cap_absolute
Definition
train.hpp:47
reusex::gsplat::MCMCOptions::enabled
bool enabled
Definition
train.hpp:38
reusex::gsplat::TrainOptions
Optimizer / schedule parameters for the 3DGS training loop.
Definition
train.hpp:98
reusex::gsplat::TrainOptions::eval_max_views
int eval_max_views
Upper bound on the views used per evaluation pass, per side.
Definition
train.hpp:170
reusex::gsplat::TrainOptions::lambda_dssim
float lambda_dssim
Weight of the D-SSIM term: loss = (1-l)*L1 + l*(1 - SSIM).
Definition
train.hpp:134
reusex::gsplat::TrainOptions::sh_degree_interval
int sh_degree_interval
Iterations between unlocking one more SH band (reference 3DGS's oneUpSHdegree).
Definition
train.hpp:131
reusex::gsplat::TrainOptions::checkpoint_keep
int checkpoint_keep
How many checkpoint files to keep; older ones are deleted as new ones land.
Definition
train.hpp:208
reusex::gsplat::TrainOptions::prune_enabled
bool prune_enabled
Periodically drop Gaussians whose opacity has collapsed.
Definition
train.hpp:142
reusex::gsplat::TrainOptions::seed
unsigned seed
Seeds the per-iteration view draw, which makes the training schedule reproducible.
Definition
train.hpp:182
reusex::gsplat::TrainOptions::checkpoint_every
int checkpoint_every
Write an intermediate .ply every N iterations (0 = off, the default).
Definition
train.hpp:205
reusex::gsplat::TrainOptions::render_view_index
std::size_t render_view_index
Definition
train.hpp:190
reusex::gsplat::TrainOptions::holdout_every
int holdout_every
Held-out split: every holdout_every-th view (indices 0, N, 2N, …) is excluded from training and used ...
Definition
train.hpp:160
reusex::gsplat::TrainOptions::lr_sh_rest
float lr_sh_rest
Learning rate for SH degrees 1..GaussianInitOptions::sh_degree — the view-*dependent* colour.
Definition
train.hpp:116
reusex::gsplat::TrainOptions::iterations
int iterations
Definition
train.hpp:99
reusex::gsplat::TrainOptions::eval_interval
int eval_interval
Iterations between held-out evaluation passes.
Definition
train.hpp:165
reusex::gsplat::TrainingViewOptions
Selection and preprocessing knobs for building the training set.
Definition
TrainingViews.hpp:39
reusex::gsplat::TrainingViewOptions::last_frame
int last_frame
Definition
TrainingViews.hpp:61
reusex::gsplat::TrainingViewOptions::pano_n_yaw
int pano_n_yaw
equator slices per panorama
Definition
TrainingViews.hpp:47
reusex::gsplat::TrainingViewOptions::max_image_size
int max_image_size
Downscale images (and intrinsics) so the long edge is at most this many pixels.
Definition
TrainingViews.hpp:66
reusex::gsplat::TrainingViewOptions::frame_stride
int frame_stride
Take every Nth sensor frame.
Definition
TrainingViews.hpp:53
reusex::gsplat::TrainingViewOptions::pano_fov_deg
double pano_fov_deg
per-slice horizontal FOV [deg]
Definition
TrainingViews.hpp:48
reusex::gsplat::TrainingViewOptions::first_frame
int first_frame
Inclusive sensor-frame node-id range, -1 for unbounded.
Definition
TrainingViews.hpp:60
reusex::gsplat::TrainingViewOptions::max_views
std::size_t max_views
Hard cap on the number of views (0 = unlimited), applied after striding.
Definition
TrainingViews.hpp:69
reusex::gsplat::TrainingViewOptions::pano_tile
int pano_tile
slice size [px, square]
Definition
TrainingViews.hpp:49
reusex::gsplat::TrainingViewOptions::include_panorama_slices
bool include_panorama_slices
Also dice content-aligned 360 panoramas into overlapping tangent views.
Definition
TrainingViews.hpp:46
apps
rux
include
create
gsplat.hpp
Generated by
1.18.0