diff --git a/src_rbd/pipeline/insertion_removal.rs b/src_rbd/pipeline/insertion_removal.rs index b5e1332..a68d4bb 100644 --- a/src_rbd/pipeline/insertion_removal.rs +++ b/src_rbd/pipeline/insertion_removal.rs @@ -104,6 +104,7 @@ impl RbdState { [0.0, -9.81, 0.0], capacity_per_batch, ); + mb.set_num_solver_iterations(all_sim_params[0].num_solver_iterations); mb.set_constraint_softness(backend, &all_sim_params[0]); mb }; diff --git a/src_rbd/pipeline/rbd_state_from_rapier.rs b/src_rbd/pipeline/rbd_state_from_rapier.rs index 92bdd1e..621b802 100644 --- a/src_rbd/pipeline/rbd_state_from_rapier.rs +++ b/src_rbd/pipeline/rbd_state_from_rapier.rs @@ -437,6 +437,8 @@ impl RbdState { [0.0, -9.81, 0.0], max_colliders as u32, ); + // Must be set before `set_visible_dt` derives the substep dt. + mb.set_num_solver_iterations(num_solver_iterations); mb.set_visible_dt(backend, multibody_dt); // Soft contact coefficients (rapier TGS-soft) from the substep sim // params, so multibody-vs-floor contacts use the same soft ERP + CFM