diff --git a/src/BulletSoftBody/btConjugateGradient.h b/src/BulletSoftBody/btConjugateGradient.h index eee3ea52e..08af5542d 100644 --- a/src/BulletSoftBody/btConjugateGradient.h +++ b/src/BulletSoftBody/btConjugateGradient.h @@ -48,7 +48,7 @@ public: A.precondition(r, z); A.project(z); btScalar r_dot_z = dot(z,r); - if (r_dot_z < tolerance) { + if (dot(z,z) < tolerance) { if (verbose) { std::cout << "Iteration = 0" << std::endl; diff --git a/src/BulletSoftBody/btDeformableBackwardEulerObjective.cpp b/src/BulletSoftBody/btDeformableBackwardEulerObjective.cpp index 4ca5187c4..268ce5d92 100644 --- a/src/BulletSoftBody/btDeformableBackwardEulerObjective.cpp +++ b/src/BulletSoftBody/btDeformableBackwardEulerObjective.cpp @@ -131,12 +131,12 @@ void btDeformableBackwardEulerObjective::computeResidual(btScalar dt, TVStack &r btScalar btDeformableBackwardEulerObjective::computeNorm(const TVStack& residual) const { - btScalar norm_squared = 0; + btScalar mag = 0; for (int i = 0; i < residual.size(); ++i) { - norm_squared += residual[i].length2(); + mag += residual[i].length(); } - return std::sqrt(norm_squared); + return mag; } void btDeformableBackwardEulerObjective::applyExplicitForce(TVStack& force) diff --git a/src/BulletSoftBody/btDeformableMultiBodyDynamicsWorld.h b/src/BulletSoftBody/btDeformableMultiBodyDynamicsWorld.h index 972f05664..4cd1eaebc 100644 --- a/src/BulletSoftBody/btDeformableMultiBodyDynamicsWorld.h +++ b/src/BulletSoftBody/btDeformableMultiBodyDynamicsWorld.h @@ -73,7 +73,7 @@ public: m_sbi.m_broadphase = pairCache; m_sbi.m_dispatcher = dispatcher; m_sbi.m_sparsesdf.Initialize(); - m_sbi.m_sparsesdf.setDefaultVoxelsz(0.025); + m_sbi.m_sparsesdf.setDefaultVoxelsz(0.005); m_sbi.m_sparsesdf.Reset(); m_sbi.air_density = (btScalar)1.2; diff --git a/src/BulletSoftBody/btDeformableNeoHookeanForce.h b/src/BulletSoftBody/btDeformableNeoHookeanForce.h index fe80b372d..f3e8c0773 100644 --- a/src/BulletSoftBody/btDeformableNeoHookeanForce.h +++ b/src/BulletSoftBody/btDeformableNeoHookeanForce.h @@ -31,7 +31,7 @@ public: m_lambda_damp = damping * m_lambda; } - btDeformableNeoHookeanForce(btScalar mu, btScalar lambda, btScalar damping = 0.005): m_mu(mu), m_lambda(lambda) + btDeformableNeoHookeanForce(btScalar mu, btScalar lambda, btScalar damping = 0.05): m_mu(mu), m_lambda(lambda) { m_mu_damp = damping * m_mu; m_lambda_damp = damping * m_lambda;