Add time parameter to allow animation
This commit is contained in:
parent
d96942cd78
commit
ea311408ba
19
src/main.rs
19
src/main.rs
|
|
@ -7,7 +7,7 @@ use sdl2::rect::Rect;
|
||||||
use sdl2::render::{Canvas, Texture};
|
use sdl2::render::{Canvas, Texture};
|
||||||
use sdl2::Sdl;
|
use sdl2::Sdl;
|
||||||
|
|
||||||
use nalgebra::{convert, Point3, Rotation3, Vector3};
|
use nalgebra::{convert, Point3, Rotation3, Translation3, Vector3};
|
||||||
|
|
||||||
use clap::Arg;
|
use clap::Arg;
|
||||||
|
|
||||||
|
|
@ -29,6 +29,7 @@ struct CommandLineParameters {
|
||||||
width: usize,
|
width: usize,
|
||||||
height: usize,
|
height: usize,
|
||||||
output_file: Option<PathBuf>,
|
output_file: Option<PathBuf>,
|
||||||
|
time: f64,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_args() -> CommandLineParameters {
|
fn parse_args() -> CommandLineParameters {
|
||||||
|
|
@ -52,15 +53,24 @@ fn parse_args() -> CommandLineParameters {
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.required(false),
|
.required(false),
|
||||||
)
|
)
|
||||||
|
.arg(
|
||||||
|
Arg::with_name("time")
|
||||||
|
.long("time")
|
||||||
|
.value_name("SECONDS")
|
||||||
|
.takes_value(true)
|
||||||
|
.default_value("0"),
|
||||||
|
)
|
||||||
.get_matches();
|
.get_matches();
|
||||||
let mut size_iter = matches.values_of("size").unwrap();
|
let mut size_iter = matches.values_of("size").unwrap();
|
||||||
let width = size_iter.next().unwrap().parse().unwrap();
|
let width = size_iter.next().unwrap().parse().unwrap();
|
||||||
let height = size_iter.next().unwrap().parse().unwrap();
|
let height = size_iter.next().unwrap().parse().unwrap();
|
||||||
let output_file = matches.value_of_os("output_png").map(|f| PathBuf::from(f));
|
let output_file = matches.value_of_os("output_png").map(|f| PathBuf::from(f));
|
||||||
|
let time = matches.value_of("time").unwrap().parse().unwrap();
|
||||||
CommandLineParameters {
|
CommandLineParameters {
|
||||||
width,
|
width,
|
||||||
height,
|
height,
|
||||||
output_file,
|
output_file,
|
||||||
|
time,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -136,7 +146,12 @@ pub fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
.iter()
|
.iter()
|
||||||
.map(|elem| elem.transform(&convert(Rotation3::from_euler_angles(0.0, 0.0, 1.0))))
|
.map(|elem| {
|
||||||
|
elem.transform(&convert(
|
||||||
|
Translation3::from(Vector3::new(0.25, 1.5, 2.5))
|
||||||
|
* Rotation3::from_euler_angles(0.0, parameters.time * 0.02, 0.0),
|
||||||
|
))
|
||||||
|
})
|
||||||
.map(|elem| Box::new(elem.clone()) as Box<dyn Primitive<f64>>)
|
.map(|elem| Box::new(elem.clone()) as Box<dyn Primitive<f64>>)
|
||||||
.collect();
|
.collect();
|
||||||
/*println!("Building BVH...");
|
/*println!("Building BVH...");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue