ReUseX  0.0.5
3D Point Cloud Processing for Building Reuse
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
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
31
36
37 // Held-out evaluation (TrainOptions::holdout_every / eval_interval /
38 // eval_max_views).
42
43 // MCMC density control (TrainOptions::mcmc).
51
57
63
65 std::string out_ply;
66 std::string render_dir;
67 std::vector<int> render_iterations;
70
71 // Periodic checkpointing (TrainOptions::checkpoint_every / checkpoint_keep /
72 // checkpoint_dir).
75 std::string checkpoint_dir;
76};
77
79 std::shared_ptr<RuxOptions> global_opt);
80
82 const RuxOptions &global_opt);
void setup_subcommand_create_gsplat(CLI::App &app, std::shared_ptr< RuxOptions > global_opt)
int run_subcommand_create_gsplat(SubcommandCreateGsplatOptions const &opt, const RuxOptions &global_opt)
Options for rux create gsplat.
Definition gsplat.hpp:23
int sh_degree_interval
TrainOptions::sh_degree_interval / lr_sh_rest — the view-dependent-colour warm-up.
Definition gsplat.hpp:29
std::vector< int > render_iterations
Definition gsplat.hpp:67
Parameters for seeding Gaussians from a ReUseX point cloud.
std::size_t max_points
Uniform stride cap on the number of seeds (0 = use every point).
End-to-end options for the rux create gsplat stage.
Definition train.hpp:320
std::string splat_name
Name the trained splat is stored under in the project (#322).
Definition train.hpp:331
std::string seed_cloud
ProjectDB cloud used to seed Gaussians.
Definition train.hpp:321
3DGS-MCMC density control (Kheradmand et al.
Definition train.hpp:37
float noise_lr
scales the Langevin noise (paper's value)
Definition train.hpp:62
float opacity_reg
L1 regularizers in activated space.
Definition train.hpp:88
int refine_every
iterations between relocate+grow passes
Definition train.hpp:52
double cap_factor
Hard ceiling on the Gaussian count, as a multiple of the seed count.
Definition train.hpp:46
std::int64_t cap_absolute
Definition train.hpp:47
Optimizer / schedule parameters for the 3DGS training loop.
Definition train.hpp:98
int eval_max_views
Upper bound on the views used per evaluation pass, per side.
Definition train.hpp:170
float lambda_dssim
Weight of the D-SSIM term: loss = (1-l)*L1 + l*(1 - SSIM).
Definition train.hpp:134
int sh_degree_interval
Iterations between unlocking one more SH band (reference 3DGS's oneUpSHdegree).
Definition train.hpp:131
int checkpoint_keep
How many checkpoint files to keep; older ones are deleted as new ones land.
Definition train.hpp:208
bool prune_enabled
Periodically drop Gaussians whose opacity has collapsed.
Definition train.hpp:142
unsigned seed
Seeds the per-iteration view draw, which makes the training schedule reproducible.
Definition train.hpp:182
int checkpoint_every
Write an intermediate .ply every N iterations (0 = off, the default).
Definition train.hpp:205
std::size_t render_view_index
Definition train.hpp:190
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
float lr_sh_rest
Learning rate for SH degrees 1..GaussianInitOptions::sh_degree — the view-*dependent* colour.
Definition train.hpp:116
int eval_interval
Iterations between held-out evaluation passes.
Definition train.hpp:165
Selection and preprocessing knobs for building the training set.
int pano_n_yaw
equator slices per panorama
int max_image_size
Downscale images (and intrinsics) so the long edge is at most this many pixels.
int frame_stride
Take every Nth sensor frame.
double pano_fov_deg
per-slice horizontal FOV [deg]
int first_frame
Inclusive sensor-frame node-id range, -1 for unbounded.
std::size_t max_views
Hard cap on the number of views (0 = unlimited), applied after striding.
int pano_tile
slice size [px, square]
bool include_panorama_slices
Also dice content-aligned 360 panoramas into overlapping tangent views.