diff options
| author | Sébastien Crozet <sebcrozet@dimforge.com> | 2024-04-21 18:55:11 +0200 |
|---|---|---|
| committer | Sébastien Crozet <sebastien@crozet.re> | 2024-04-30 23:10:46 +0200 |
| commit | f58b4f7c195ab7acf0778ea65c46ebf37ac8188c (patch) | |
| tree | 16a5009b1decbf0395b93657b5c992b277bff8f9 /src_testbed/ui.rs | |
| parent | da79d6fb5b28dd12e17ef4c8985fb589a37c9f9c (diff) | |
| download | rapier-f58b4f7c195ab7acf0778ea65c46ebf37ac8188c.tar.gz rapier-f58b4f7c195ab7acf0778ea65c46ebf37ac8188c.tar.bz2 rapier-f58b4f7c195ab7acf0778ea65c46ebf37ac8188c.zip | |
feat: add warmstarting to contact constraints resolution
Diffstat (limited to 'src_testbed/ui.rs')
| -rw-r--r-- | src_testbed/ui.rs | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/src_testbed/ui.rs b/src_testbed/ui.rs index e8b82bd..4df9d87 100644 --- a/src_testbed/ui.rs +++ b/src_testbed/ui.rs @@ -12,6 +12,7 @@ use crate::testbed::{ use crate::PhysicsState; use bevy_egui::egui::Slider; use bevy_egui::{egui, EguiContexts}; +use rapier::dynamics::IntegrationParameters; pub fn update_ui( ui_context: &mut EguiContexts, @@ -109,8 +110,9 @@ pub fn update_ui( .selected_text(format!("{:?}", state.solver_type)) .show_ui(ui, |ui| { let solver_types = [ - RapierSolverType::SmallStepsPgs, - RapierSolverType::StandardPgs, + RapierSolverType::TgsSoft, + RapierSolverType::TgsSoftNoWarmstart, + RapierSolverType::PgsLegacy, ]; for sty in solver_types { changed = ui @@ -122,11 +124,15 @@ pub fn update_ui( if changed { match state.solver_type { - RapierSolverType::SmallStepsPgs => { - integration_parameters.switch_to_small_steps_pgs_solver() + RapierSolverType::TgsSoft => { + *integration_parameters = IntegrationParameters::tgs_soft(); } - RapierSolverType::StandardPgs => { - integration_parameters.switch_to_standard_pgs_solver() + RapierSolverType::TgsSoftNoWarmstart => { + *integration_parameters = + IntegrationParameters::tgs_soft_without_warmstart(); + } + RapierSolverType::PgsLegacy => { + *integration_parameters = IntegrationParameters::pgs_legacy(); } } } @@ -146,17 +152,31 @@ pub fn update_ui( ui.add( Slider::new( &mut integration_parameters.num_additional_friction_iterations, - 1..=40, + 0..=40, ) .text("num additional frict. iters."), ); ui.add( Slider::new( - &mut integration_parameters.max_internal_stabilization_iterations, + &mut integration_parameters.num_internal_stabilization_iterations, 1..=100, ) .text("max internal stabilization iters."), ); + ui.add( + Slider::new(&mut integration_parameters.warmstart_coefficient, 0.0..=1.0) + .text("warmstart coefficient"), + ); + ui.add(Slider::new(&mut integration_parameters.erp, 0.0..=1.0).text("erp")); + ui.add( + Slider::new(&mut integration_parameters.damping_ratio, 0.0..=20.0) + .text("damping ratio"), + ); + ui.add(Slider::new(&mut integration_parameters.joint_erp, 0.0..=1.0).text("joint erp")); + ui.add( + Slider::new(&mut integration_parameters.joint_damping_ratio, 0.0..=20.0) + .text("joint damping ratio"), + ); } #[cfg(feature = "parallel")] |
