From 9af25430ac03c7b313d8a1b8cd1d7ab9c0d4e223 Mon Sep 17 00:00:00 2001 From: Xuchen Han Date: Mon, 19 Aug 2019 12:04:10 -0700 Subject: [PATCH] update examples to include NeoHookean Model and new damping model --- examples/DeformableDemo/DeformableMultibody.cpp | 2 +- examples/DeformableDemo/DeformableRigid.cpp | 2 +- examples/DeformableDemo/GraspDeformable.cpp | 13 +++++++------ examples/DeformableDemo/Pinch.cpp | 3 ++- examples/DeformableDemo/VolumetricDeformable.cpp | 4 ++-- 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/examples/DeformableDemo/DeformableMultibody.cpp b/examples/DeformableDemo/DeformableMultibody.cpp index 6c3740edf..f9c527b3c 100644 --- a/examples/DeformableDemo/DeformableMultibody.cpp +++ b/examples/DeformableDemo/DeformableMultibody.cpp @@ -224,7 +224,7 @@ void DeformableMultibody::initPhysics() psb->m_cfg.kDF = .1; psb->m_cfg.collisions = btSoftBody::fCollision::SDF_RD; getDeformableDynamicsWorld()->addSoftBody(psb); - getDeformableDynamicsWorld()->addForce(psb, new btDeformableMassSpringForce(2, 0.01)); + getDeformableDynamicsWorld()->addForce(psb, new btDeformableMassSpringForce(2, 0.01, false)); getDeformableDynamicsWorld()->addForce(psb, new btDeformableGravityForce(gravity)); } diff --git a/examples/DeformableDemo/DeformableRigid.cpp b/examples/DeformableDemo/DeformableRigid.cpp index 2b5186595..f6b0c3184 100644 --- a/examples/DeformableDemo/DeformableRigid.cpp +++ b/examples/DeformableDemo/DeformableRigid.cpp @@ -233,7 +233,7 @@ void DeformableRigid::initPhysics() psb->m_cfg.kDF = 1; psb->m_cfg.collisions = btSoftBody::fCollision::SDF_RD; getDeformableDynamicsWorld()->addSoftBody(psb); - getDeformableDynamicsWorld()->addForce(psb, new btDeformableMassSpringForce(2, 0.05)); + getDeformableDynamicsWorld()->addForce(psb, new btDeformableMassSpringForce(2, 0.01, false)); getDeformableDynamicsWorld()->addForce(psb, new btDeformableGravityForce(gravity)); // add a few rigid bodies diff --git a/examples/DeformableDemo/GraspDeformable.cpp b/examples/DeformableDemo/GraspDeformable.cpp index 8fdc2752b..10b273a2e 100644 --- a/examples/DeformableDemo/GraspDeformable.cpp +++ b/examples/DeformableDemo/GraspDeformable.cpp @@ -191,7 +191,7 @@ void GraspDeformable::initPhysics() m_dynamicsWorld = new btDeformableMultiBodyDynamicsWorld(m_dispatcher, m_broadphase, sol, m_collisionConfiguration, deformableBodySolver); deformableBodySolver->setWorld(getDeformableDynamicsWorld()); - btVector3 gravity = btVector3(0, -10, 0); + btVector3 gravity = btVector3(0, -9.81, 0); m_dynamicsWorld->setGravity(gravity); getDeformableDynamicsWorld()->getWorldInfo().m_gravity = gravity; m_guiHelper->createPhysicsDebugDrawer(m_dynamicsWorld); @@ -316,7 +316,7 @@ void GraspDeformable::initPhysics() body->setFriction(0.1); //add the ground to the dynamics world - m_dynamicsWorld->addRigidBody(body); + m_dynamicsWorld->addRigidBody(body,1,1+2); } // create a soft block @@ -342,22 +342,23 @@ void GraspDeformable::initPhysics() // 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->getCollisionShape()->setMargin(0.01); psb->setTotalMass(.1); psb->m_cfg.kKHR = 1; // collision hardness with kinematic objects psb->m_cfg.kCHR = 1; // collision hardness with rigid body - psb->m_cfg.kDF = 10; + psb->m_cfg.kDF = 2; psb->m_cfg.collisions = btSoftBody::fCollision::SDF_RD; getDeformableDynamicsWorld()->addSoftBody(psb); + psb->getWorldInfo()->m_maxDisplacement = .1f; // 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 btDeformableMassSpringForce(.5,0.04, true)); getDeformableDynamicsWorld()->addForce(psb, new btDeformableGravityForce(gravity)); - getDeformableDynamicsWorld()->addForce(psb, new btDeformableCorotatedForce(6,6)); + getDeformableDynamicsWorld()->addForce(psb, new btDeformableNeoHookeanForce(2,10)); } // // create a piece of cloth diff --git a/examples/DeformableDemo/Pinch.cpp b/examples/DeformableDemo/Pinch.cpp index abe428577..7bfbc7712 100644 --- a/examples/DeformableDemo/Pinch.cpp +++ b/examples/DeformableDemo/Pinch.cpp @@ -336,8 +336,9 @@ void Pinch::initPhysics() psb->m_cfg.kDF = 2; psb->m_cfg.collisions = btSoftBody::fCollision::SDF_RD; getDeformableDynamicsWorld()->addSoftBody(psb); - getDeformableDynamicsWorld()->addForce(psb, new btDeformableMassSpringForce(2, 0.02)); + getDeformableDynamicsWorld()->addForce(psb, new btDeformableMassSpringForce(1, 0.05)); getDeformableDynamicsWorld()->addForce(psb, new btDeformableGravityForce(gravity)); + getDeformableDynamicsWorld()->addForce(psb, new btDeformableNeoHookeanForce(.2,1)); // add a grippers createGrip(); } diff --git a/examples/DeformableDemo/VolumetricDeformable.cpp b/examples/DeformableDemo/VolumetricDeformable.cpp index 745c0cd87..55331b5d5 100644 --- a/examples/DeformableDemo/VolumetricDeformable.cpp +++ b/examples/DeformableDemo/VolumetricDeformable.cpp @@ -236,9 +236,9 @@ void VolumetricDeformable::initPhysics() 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(0,0.01)); + getDeformableDynamicsWorld()->addForce(psb, new btDeformableMassSpringForce(0,0.03)); getDeformableDynamicsWorld()->addForce(psb, new btDeformableGravityForce(gravity)); - getDeformableDynamicsWorld()->addForce(psb, new btDeformableCorotatedForce(.5,.5)); + getDeformableDynamicsWorld()->addForce(psb, new btDeformableNeoHookeanForce(.5,2.5)); } // add a few rigid bodies Ctor_RbUpStack(4);