aboutsummaryrefslogtreecommitdiff
path: root/src/dynamics/solver
diff options
context:
space:
mode:
Diffstat (limited to 'src/dynamics/solver')
-rw-r--r--src/dynamics/solver/contact_constraint/one_body_constraint.rs3
-rw-r--r--src/dynamics/solver/contact_constraint/one_body_constraint_simd.rs3
-rw-r--r--src/dynamics/solver/contact_constraint/two_body_constraint.rs3
-rw-r--r--src/dynamics/solver/contact_constraint/two_body_constraint_simd.rs3
-rw-r--r--src/dynamics/solver/island_solver.rs2
-rw-r--r--src/dynamics/solver/velocity_solver.rs22
6 files changed, 20 insertions, 16 deletions
diff --git a/src/dynamics/solver/contact_constraint/one_body_constraint.rs b/src/dynamics/solver/contact_constraint/one_body_constraint.rs
index 1243d11..cf9fe67 100644
--- a/src/dynamics/solver/contact_constraint/one_body_constraint.rs
+++ b/src/dynamics/solver/contact_constraint/one_body_constraint.rs
@@ -333,7 +333,8 @@ impl OneBodyConstraintBuilder {
}
}
- constraint.cfm_factor = if is_fast_contact { 1.0 } else { cfm_factor };
+ constraint.cfm_factor = cfm_factor;
+ // constraint.cfm_factor = if is_fast_contact { 1.0 } else { cfm_factor };
}
}
diff --git a/src/dynamics/solver/contact_constraint/one_body_constraint_simd.rs b/src/dynamics/solver/contact_constraint/one_body_constraint_simd.rs
index 5710bc4..131702c 100644
--- a/src/dynamics/solver/contact_constraint/one_body_constraint_simd.rs
+++ b/src/dynamics/solver/contact_constraint/one_body_constraint_simd.rs
@@ -330,7 +330,8 @@ impl SimdOneBodyConstraintBuilder {
}
}
- constraint.cfm_factor = SimdReal::splat(1.0).select(is_fast_contact, cfm_factor);
+ constraint.cfm_factor = cfm_factor;
+ // constraint.cfm_factor = SimdReal::splat(1.0).select(is_fast_contact, cfm_factor);
}
}
diff --git a/src/dynamics/solver/contact_constraint/two_body_constraint.rs b/src/dynamics/solver/contact_constraint/two_body_constraint.rs
index 1511d4f..e98305a 100644
--- a/src/dynamics/solver/contact_constraint/two_body_constraint.rs
+++ b/src/dynamics/solver/contact_constraint/two_body_constraint.rs
@@ -432,7 +432,8 @@ impl TwoBodyConstraintBuilder {
}
}
- constraint.cfm_factor = if is_fast_contact { 1.0 } else { cfm_factor };
+ constraint.cfm_factor = cfm_factor;
+ // constraint.cfm_factor = if is_fast_contact { 1.0 } else { cfm_factor };
}
}
diff --git a/src/dynamics/solver/contact_constraint/two_body_constraint_simd.rs b/src/dynamics/solver/contact_constraint/two_body_constraint_simd.rs
index 4c4ef52..4af0d10 100644
--- a/src/dynamics/solver/contact_constraint/two_body_constraint_simd.rs
+++ b/src/dynamics/solver/contact_constraint/two_body_constraint_simd.rs
@@ -317,7 +317,8 @@ impl TwoBodyConstraintBuilderSimd {
}
}
- constraint.cfm_factor = SimdReal::splat(1.0).select(is_fast_contact, cfm_factor);
+ constraint.cfm_factor = cfm_factor;
+ // constraint.cfm_factor = SimdReal::splat(1.0).select(is_fast_contact, cfm_factor);
}
}
diff --git a/src/dynamics/solver/island_solver.rs b/src/dynamics/solver/island_solver.rs
index 159bfa7..718542b 100644
--- a/src/dynamics/solver/island_solver.rs
+++ b/src/dynamics/solver/island_solver.rs
@@ -47,8 +47,6 @@ impl IslandSolver {
let mut params = *base_params;
params.dt /= num_solver_iterations as Real;
- params.damping_ratio /= num_solver_iterations as Real;
- // params.joint_damping_ratio /= num_solver_iterations as Real;
/*
*
diff --git a/src/dynamics/solver/velocity_solver.rs b/src/dynamics/solver/velocity_solver.rs
index 9d5c279..a4e03b2 100644
--- a/src/dynamics/solver/velocity_solver.rs
+++ b/src/dynamics/solver/velocity_solver.rs
@@ -205,17 +205,19 @@ impl VelocitySolver {
/*
* Resolution without bias.
*/
- for _ in 0..params.num_internal_stabilization_iterations {
- joint_constraints
- .solve_wo_bias(&mut self.solver_vels, &mut self.generic_solver_vels);
- contact_constraints.solve_restitution_wo_bias(
- &mut self.solver_vels,
- &mut self.generic_solver_vels,
- );
- }
+ if params.num_internal_stabilization_iterations > 0 {
+ for _ in 0..params.num_internal_stabilization_iterations {
+ joint_constraints
+ .solve_wo_bias(&mut self.solver_vels, &mut self.generic_solver_vels);
+ contact_constraints.solve_restitution_wo_bias(
+ &mut self.solver_vels,
+ &mut self.generic_solver_vels,
+ );
+ }
- contact_constraints
- .solve_friction(&mut self.solver_vels, &mut self.generic_solver_vels);
+ contact_constraints
+ .solve_friction(&mut self.solver_vels, &mut self.generic_solver_vels);
+ }
}
}