From c9ab033a8ba2e892de4d3453afcd0a9ae1dd2e95 Mon Sep 17 00:00:00 2001 From: Xuchen Han Date: Thu, 15 Aug 2019 17:48:36 -0700 Subject: [PATCH] check in a good set of parameters for grasping deformable ball with nonlinear damping force (not as stable as linear damping) --- examples/DeformableDemo/DeformableMultibody.cpp | 4 +--- examples/DeformableDemo/DeformableRigid.cpp | 4 +--- examples/DeformableDemo/GraspDeformable.cpp | 16 ++++++++++------ examples/DeformableDemo/Pinch.cpp | 8 +------- examples/DeformableDemo/VolumetricDeformable.cpp | 6 +----- 5 files changed, 14 insertions(+), 24 deletions(-) diff --git a/examples/DeformableDemo/DeformableMultibody.cpp b/examples/DeformableDemo/DeformableMultibody.cpp index d32cd67a7..9ce15ff22 100644 --- a/examples/DeformableDemo/DeformableMultibody.cpp +++ b/examples/DeformableDemo/DeformableMultibody.cpp @@ -219,14 +219,12 @@ void DeformableMultibody::initPhysics() psb->getCollisionShape()->setMargin(0.25); psb->generateBendingConstraints(2); psb->setTotalMass(5); - psb->setSpringStiffness(2); - psb->setDampingCoefficient(0.01); psb->m_cfg.kKHR = 1; // collision hardness with kinematic objects psb->m_cfg.kCHR = 1; // collision hardness with rigid body psb->m_cfg.kDF = .1; psb->m_cfg.collisions = btSoftBody::fCollision::SDF_RD; getDeformableDynamicsWorld()->addSoftBody(psb); - getDeformableDynamicsWorld()->addForce(psb, new btDeformableMassSpringForce()); + getDeformableDynamicsWorld()->addForce(psb, new btDeformableMassSpringForce(2, 0.01)); getDeformableDynamicsWorld()->addForce(psb, new btDeformableGravityForce(gravity)); } diff --git a/examples/DeformableDemo/DeformableRigid.cpp b/examples/DeformableDemo/DeformableRigid.cpp index 6cc3d7b4f..48809cf99 100644 --- a/examples/DeformableDemo/DeformableRigid.cpp +++ b/examples/DeformableDemo/DeformableRigid.cpp @@ -228,14 +228,12 @@ void DeformableRigid::initPhysics() psb->getCollisionShape()->setMargin(0.1); psb->generateBendingConstraints(2); psb->setTotalMass(1); - psb->setSpringStiffness(2); - psb->setDampingCoefficient(0.05); psb->m_cfg.kKHR = 1; // collision hardness with kinematic objects psb->m_cfg.kCHR = 1; // collision hardness with rigid body psb->m_cfg.kDF = 1; psb->m_cfg.collisions = btSoftBody::fCollision::SDF_RD; getDeformableDynamicsWorld()->addSoftBody(psb); - getDeformableDynamicsWorld()->addForce(psb, new btDeformableMassSpringForce()); + getDeformableDynamicsWorld()->addForce(psb, new btDeformableMassSpringForce(2, 0.05)); getDeformableDynamicsWorld()->addForce(psb, new btDeformableGravityForce(gravity)); // add a few rigid bodies diff --git a/examples/DeformableDemo/GraspDeformable.cpp b/examples/DeformableDemo/GraspDeformable.cpp index c0ca947af..6d8824515 100644 --- a/examples/DeformableDemo/GraspDeformable.cpp +++ b/examples/DeformableDemo/GraspDeformable.cpp @@ -339,20 +339,24 @@ void GraspDeformable::initPhysics() btSoftBody* psb = btSoftBodyHelpers::CreateFromVtkFile(getDeformableDynamicsWorld()->getWorldInfo(), path); // psb->scale(btVector3(30, 30, 30)); // for banana -// psb->scale(btVector3(.2, .2, .2)); - psb->scale(btVector3(.3, .3, .3)); // for tube, torus, boot + psb->scale(btVector3(.25, .25, .25)); +// psb->scale(btVector3(.3, .3, .3)); // for tube, torus, boot // psb->scale(btVector3(1, 1, 1)); // for ditto // psb->translate(btVector3(0, 0, 2)); for boot psb->getCollisionShape()->setMargin(0.02); psb->setTotalMass(.1); - psb->setSpringStiffness(0); - psb->setDampingCoefficient(.01); psb->m_cfg.kKHR = 1; // collision hardness with kinematic objects psb->m_cfg.kCHR = 1; // collision hardness with rigid body - psb->m_cfg.kDF = 50; + psb->m_cfg.kDF = 10; psb->m_cfg.collisions = btSoftBody::fCollision::SDF_RD; getDeformableDynamicsWorld()->addSoftBody(psb); - getDeformableDynamicsWorld()->addForce(psb, new btDeformableMassSpringForce()); + // nonlinear damping +// getDeformableDynamicsWorld()->addForce(psb, new btDeformableMassSpringForce(1,0.04, true)); +// getDeformableDynamicsWorld()->addForce(psb, new btDeformableGravityForce(gravity)); +// getDeformableDynamicsWorld()->addForce(psb, new btDeformableCorotatedForce(0,6)); + + // linear damping + getDeformableDynamicsWorld()->addForce(psb, new btDeformableMassSpringForce(0,0.01, false)); getDeformableDynamicsWorld()->addForce(psb, new btDeformableGravityForce(gravity)); getDeformableDynamicsWorld()->addForce(psb, new btDeformableCorotatedForce(6,6)); } diff --git a/examples/DeformableDemo/Pinch.cpp b/examples/DeformableDemo/Pinch.cpp index 44e5f4e5f..190658d62 100644 --- a/examples/DeformableDemo/Pinch.cpp +++ b/examples/DeformableDemo/Pinch.cpp @@ -331,18 +331,12 @@ void Pinch::initPhysics() psb->translate(btVector3(0, 4, 0)); psb->getCollisionShape()->setMargin(0.1); psb->setTotalMass(1); -// psb->scale(btVector3(5, 5, 5)); -// psb->translate(btVector3(-2.5, 4, -2.5)); -// psb->getCollisionShape()->setMargin(0.1); -// psb->setTotalMass(1); - psb->setSpringStiffness(2); - psb->setDampingCoefficient(0.02); psb->m_cfg.kKHR = 1; // collision hardness with kinematic objects psb->m_cfg.kCHR = 1; // collision hardness with rigid body psb->m_cfg.kDF = 2; psb->m_cfg.collisions = btSoftBody::fCollision::SDF_RD; getDeformableDynamicsWorld()->addSoftBody(psb); - getDeformableDynamicsWorld()->addForce(psb, new btDeformableMassSpringForce()); + getDeformableDynamicsWorld()->addForce(psb, new btDeformableMassSpringForce(2, 0.02)); getDeformableDynamicsWorld()->addForce(psb, new btDeformableGravityForce(gravity)); // add a grippers createGrip(); diff --git a/examples/DeformableDemo/VolumetricDeformable.cpp b/examples/DeformableDemo/VolumetricDeformable.cpp index 22755856b..5c5e395bd 100644 --- a/examples/DeformableDemo/VolumetricDeformable.cpp +++ b/examples/DeformableDemo/VolumetricDeformable.cpp @@ -230,17 +230,13 @@ void VolumetricDeformable::initPhysics() getDeformableDynamicsWorld()->addSoftBody(psb); psb->scale(btVector3(2, 2, 2)); psb->translate(btVector3(0, 5, 0)); -// psb->setVolumeMass(10); psb->getCollisionShape()->setMargin(0.25); -// psb->generateBendingConstraints(2); psb->setTotalMass(1); - psb->setSpringStiffness(0); - psb->setDampingCoefficient(0.01); psb->m_cfg.kKHR = 1; // collision hardness with kinematic objects psb->m_cfg.kCHR = 1; // collision hardness with rigid body psb->m_cfg.kDF = 0.5; psb->m_cfg.collisions = btSoftBody::fCollision::SDF_RD; - getDeformableDynamicsWorld()->addForce(psb, new btDeformableMassSpringForce()); + getDeformableDynamicsWorld()->addForce(psb, new btDeformableMassSpringForce(0,0.01)); getDeformableDynamicsWorld()->addForce(psb, new btDeformableGravityForce(gravity)); getDeformableDynamicsWorld()->addForce(psb, new btDeformableCorotatedForce(.5,.5)); }