Expand description
Declarative builder layer: record a plan first and run it all at once later.
The methods of the ReconBuilder returned by Recon::declare only record a plan (“this is what to do”) and execute
nothing (they neither create nor delete files or folders, and do not open devices). ReconBuilder::build validates the plan
and builds an executable reconstruction (Recon); Recon::run assembles the session reducer + pipeline + hooks + default output
hook and
runs the position loop, the wait for background jobs and the shutdown in one go (deferred execution).
The plan itself is a value (Plan), so it can be compared, cloned and saved as TOML (Plan::to_toml / Plan::from_toml).
Hooks (closures) are kept in the builder, not in the plan.
§Usage example
use cumulus3d_cli::declare::{Dense, Recon, Sinks};
use cumulus3d_cli::events::{Event, EventKind};
fn main() -> Result<(), String> {
let recon = Recon::declare()
.input("data") // data/images/<cam>/, data/gps_ref.txt
.preset("aerial-formation") // camF/camR/camL, formation pairing rule, stride 3
.stride(3)
.zones(12, 2)
.dense(Dense::profile("fast").fusion_min_views(3))
.sinks(Sinks::default_files("out").models(true))
.seed(7)
.on(EventKind::PositionDone, |e: &Event| {
if let Some(t) = e.timeline_text() {
println!("{t}");
}
})
.on_zone_preview(|range, cloud| println!("preview {}: {} points", range.zone, cloud.len()))
.build() // validation only (errors are collected and reported at once)
.map_err(|e| e.to_string())?;
println!("{}", recon.plan().to_toml());
let summary = recon.run()?; // actual execution happens here
println!("{} events", summary.events);
Ok(())
}Run from a TOML plan file: cumulus3d run plan.toml. The default plan is cumulus3d plan --print-default.
Relative paths in a plan file are relative to the working location (current folder).
Structs§
- Align
- Coordinate alignment.
- Dense
- Densification plan. Start from
Dense::profileand add to it with methods. Unset fusion/filter values use the profile defaults. - Features
- Feature extraction.
- Filter
- Depth map filter overrides (same meaning as
--filter-*and--median-filterof thedensifysubcommand). If unset, the profile default. - Fusion
- Fusion overrides (same meaning as
--fusion-*of thedensifysubcommand). If unset, the profile default. - Live
- Live throughput: how a session keeps up with arriving positions and shows a low level first.
- Matching
- Descriptor matching.
- Plan
- Reconstruction plan (a value). It runs nothing and only holds “what to do and how”.
- Plan
Error - Validation error of
ReconBuilder::build. It holds all the problems found. - Problem
- One plan validation problem.
- Recon
- An executable reconstruction that has passed validation. Run it with
Recon::run. - Recon
Builder - Plan recorder. Methods only record and do not run anything. Validate with
ReconBuilder::build. - Sinks
- Output hook plan. If
outis unset, no files are written (enabled file items are ignored, only hooks remain). - Source
- Input images:
<images>/<camera>/<camera>_NNNN.jpg. - Sparse
- Sparse reconstruction.
- Zones
- Zones (in units of positions).
Enums§
- Align
Frame - Alignment coordinate frame.
- Pairing
- Pairing strategy.
Constants§
- DEFAULT_
PRESET - Default preset name.
- PRESETS
- Known preset names.