rename btDeformableRigidDynamicsWorld to btDeformableMultiBodyDynamicsWorld
This commit is contained in:
@@ -28,7 +28,7 @@
|
|||||||
#include "DeformableMultibody.h"
|
#include "DeformableMultibody.h"
|
||||||
///btBulletDynamicsCommon.h is the main Bullet include file, contains most common include files.
|
///btBulletDynamicsCommon.h is the main Bullet include file, contains most common include files.
|
||||||
#include "btBulletDynamicsCommon.h"
|
#include "btBulletDynamicsCommon.h"
|
||||||
#include "BulletSoftBody/btDeformableRigidDynamicsWorld.h"
|
#include "BulletSoftBody/btDeformableMultiBodyDynamicsWorld.h"
|
||||||
#include "BulletSoftBody/btSoftBody.h"
|
#include "BulletSoftBody/btSoftBody.h"
|
||||||
#include "BulletSoftBody/btSoftBodyHelpers.h"
|
#include "BulletSoftBody/btSoftBodyHelpers.h"
|
||||||
#include "BulletSoftBody/btDeformableBodySolver.h"
|
#include "BulletSoftBody/btDeformableBodySolver.h"
|
||||||
@@ -79,20 +79,20 @@ public:
|
|||||||
void addColliders_testMultiDof(btMultiBody* pMultiBody, btMultiBodyDynamicsWorld* pWorld, const btVector3& baseHalfExtents, const btVector3& linkHalfExtents);
|
void addColliders_testMultiDof(btMultiBody* pMultiBody, btMultiBodyDynamicsWorld* pWorld, const btVector3& baseHalfExtents, const btVector3& linkHalfExtents);
|
||||||
|
|
||||||
|
|
||||||
virtual const btDeformableRigidDynamicsWorld* getDeformableDynamicsWorld() const
|
virtual const btDeformableMultiBodyDynamicsWorld* getDeformableDynamicsWorld() const
|
||||||
{
|
{
|
||||||
return (btDeformableRigidDynamicsWorld*)m_dynamicsWorld;
|
return (btDeformableMultiBodyDynamicsWorld*)m_dynamicsWorld;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual btDeformableRigidDynamicsWorld* getDeformableDynamicsWorld()
|
virtual btDeformableMultiBodyDynamicsWorld* getDeformableDynamicsWorld()
|
||||||
{
|
{
|
||||||
return (btDeformableRigidDynamicsWorld*)m_dynamicsWorld;
|
return (btDeformableMultiBodyDynamicsWorld*)m_dynamicsWorld;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void renderScene()
|
virtual void renderScene()
|
||||||
{
|
{
|
||||||
CommonMultiBodyBase::renderScene();
|
CommonMultiBodyBase::renderScene();
|
||||||
btDeformableRigidDynamicsWorld* deformableWorld = getDeformableDynamicsWorld();
|
btDeformableMultiBodyDynamicsWorld* deformableWorld = getDeformableDynamicsWorld();
|
||||||
|
|
||||||
for (int i = 0; i < deformableWorld->getSoftBodyArray().size(); i++)
|
for (int i = 0; i < deformableWorld->getSoftBodyArray().size(); i++)
|
||||||
{
|
{
|
||||||
@@ -121,7 +121,7 @@ void DeformableMultibody::initPhysics()
|
|||||||
sol = new btMultiBodyConstraintSolver;
|
sol = new btMultiBodyConstraintSolver;
|
||||||
m_solver = sol;
|
m_solver = sol;
|
||||||
|
|
||||||
m_dynamicsWorld = new btDeformableRigidDynamicsWorld(m_dispatcher, m_broadphase, sol, m_collisionConfiguration, deformableBodySolver);
|
m_dynamicsWorld = new btDeformableMultiBodyDynamicsWorld(m_dispatcher, m_broadphase, sol, m_collisionConfiguration, deformableBodySolver);
|
||||||
deformableBodySolver->setWorld(getDeformableDynamicsWorld());
|
deformableBodySolver->setWorld(getDeformableDynamicsWorld());
|
||||||
btVector3 gravity = btVector3(0, -10, 0);
|
btVector3 gravity = btVector3(0, -10, 0);
|
||||||
m_dynamicsWorld->setGravity(gravity);
|
m_dynamicsWorld->setGravity(gravity);
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
#include "DeformableRigid.h"
|
#include "DeformableRigid.h"
|
||||||
///btBulletDynamicsCommon.h is the main Bullet include file, contains most common include files.
|
///btBulletDynamicsCommon.h is the main Bullet include file, contains most common include files.
|
||||||
#include "btBulletDynamicsCommon.h"
|
#include "btBulletDynamicsCommon.h"
|
||||||
#include "BulletSoftBody/btDeformableRigidDynamicsWorld.h"
|
#include "BulletSoftBody/btDeformableMultiBodyDynamicsWorld.h"
|
||||||
#include "BulletSoftBody/btSoftBody.h"
|
#include "BulletSoftBody/btSoftBody.h"
|
||||||
#include "BulletSoftBody/btSoftBodyHelpers.h"
|
#include "BulletSoftBody/btSoftBodyHelpers.h"
|
||||||
#include "BulletSoftBody/btDeformableBodySolver.h"
|
#include "BulletSoftBody/btDeformableBodySolver.h"
|
||||||
@@ -115,24 +115,24 @@ public:
|
|||||||
createRigidBody(mass, startTransform, shape[0]);
|
createRigidBody(mass, startTransform, shape[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual const btDeformableRigidDynamicsWorld* getDeformableDynamicsWorld() const
|
virtual const btDeformableMultiBodyDynamicsWorld* getDeformableDynamicsWorld() const
|
||||||
{
|
{
|
||||||
///just make it a btSoftRigidDynamicsWorld please
|
///just make it a btSoftRigidDynamicsWorld please
|
||||||
///or we will add type checking
|
///or we will add type checking
|
||||||
return (btDeformableRigidDynamicsWorld*)m_dynamicsWorld;
|
return (btDeformableMultiBodyDynamicsWorld*)m_dynamicsWorld;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual btDeformableRigidDynamicsWorld* getDeformableDynamicsWorld()
|
virtual btDeformableMultiBodyDynamicsWorld* getDeformableDynamicsWorld()
|
||||||
{
|
{
|
||||||
///just make it a btSoftRigidDynamicsWorld please
|
///just make it a btSoftRigidDynamicsWorld please
|
||||||
///or we will add type checking
|
///or we will add type checking
|
||||||
return (btDeformableRigidDynamicsWorld*)m_dynamicsWorld;
|
return (btDeformableMultiBodyDynamicsWorld*)m_dynamicsWorld;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void renderScene()
|
virtual void renderScene()
|
||||||
{
|
{
|
||||||
CommonRigidBodyBase::renderScene();
|
CommonRigidBodyBase::renderScene();
|
||||||
btDeformableRigidDynamicsWorld* deformableWorld = getDeformableDynamicsWorld();
|
btDeformableMultiBodyDynamicsWorld* deformableWorld = getDeformableDynamicsWorld();
|
||||||
|
|
||||||
for (int i = 0; i < deformableWorld->getSoftBodyArray().size(); i++)
|
for (int i = 0; i < deformableWorld->getSoftBodyArray().size(); i++)
|
||||||
{
|
{
|
||||||
@@ -163,7 +163,7 @@ void DeformableRigid::initPhysics()
|
|||||||
btMultiBodyConstraintSolver* sol = new btMultiBodyConstraintSolver();
|
btMultiBodyConstraintSolver* sol = new btMultiBodyConstraintSolver();
|
||||||
m_solver = sol;
|
m_solver = sol;
|
||||||
|
|
||||||
m_dynamicsWorld = new btDeformableRigidDynamicsWorld(m_dispatcher, m_broadphase, sol, m_collisionConfiguration, deformableBodySolver);
|
m_dynamicsWorld = new btDeformableMultiBodyDynamicsWorld(m_dispatcher, m_broadphase, sol, m_collisionConfiguration, deformableBodySolver);
|
||||||
deformableBodySolver->setWorld(getDeformableDynamicsWorld());
|
deformableBodySolver->setWorld(getDeformableDynamicsWorld());
|
||||||
// m_dynamicsWorld->getSolverInfo().m_singleAxisDeformableThreshold = 0.f;//faster but lower quality
|
// m_dynamicsWorld->getSolverInfo().m_singleAxisDeformableThreshold = 0.f;//faster but lower quality
|
||||||
btVector3 gravity = btVector3(0, -10, 0);
|
btVector3 gravity = btVector3(0, -10, 0);
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
#include "GraspDeformable.h"
|
#include "GraspDeformable.h"
|
||||||
///btBulletDynamicsCommon.h is the main Bullet include file, contains most common include files.
|
///btBulletDynamicsCommon.h is the main Bullet include file, contains most common include files.
|
||||||
#include "btBulletDynamicsCommon.h"
|
#include "btBulletDynamicsCommon.h"
|
||||||
#include "BulletSoftBody/btDeformableRigidDynamicsWorld.h"
|
#include "BulletSoftBody/btDeformableMultiBodyDynamicsWorld.h"
|
||||||
#include "BulletSoftBody/btSoftBody.h"
|
#include "BulletSoftBody/btSoftBody.h"
|
||||||
#include "BulletSoftBody/btSoftBodyHelpers.h"
|
#include "BulletSoftBody/btSoftBodyHelpers.h"
|
||||||
#include "BulletSoftBody/btDeformableBodySolver.h"
|
#include "BulletSoftBody/btDeformableBodySolver.h"
|
||||||
@@ -148,20 +148,20 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual const btDeformableRigidDynamicsWorld* getDeformableDynamicsWorld() const
|
virtual const btDeformableMultiBodyDynamicsWorld* getDeformableDynamicsWorld() const
|
||||||
{
|
{
|
||||||
return (btDeformableRigidDynamicsWorld*)m_dynamicsWorld;
|
return (btDeformableMultiBodyDynamicsWorld*)m_dynamicsWorld;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual btDeformableRigidDynamicsWorld* getDeformableDynamicsWorld()
|
virtual btDeformableMultiBodyDynamicsWorld* getDeformableDynamicsWorld()
|
||||||
{
|
{
|
||||||
return (btDeformableRigidDynamicsWorld*)m_dynamicsWorld;
|
return (btDeformableMultiBodyDynamicsWorld*)m_dynamicsWorld;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void renderScene()
|
virtual void renderScene()
|
||||||
{
|
{
|
||||||
CommonRigidBodyBase::renderScene();
|
CommonRigidBodyBase::renderScene();
|
||||||
btDeformableRigidDynamicsWorld* deformableWorld = getDeformableDynamicsWorld();
|
btDeformableMultiBodyDynamicsWorld* deformableWorld = getDeformableDynamicsWorld();
|
||||||
|
|
||||||
for (int i = 0; i < deformableWorld->getSoftBodyArray().size(); i++)
|
for (int i = 0; i < deformableWorld->getSoftBodyArray().size(); i++)
|
||||||
{
|
{
|
||||||
@@ -189,7 +189,7 @@ void GraspDeformable::initPhysics()
|
|||||||
btMultiBodyConstraintSolver* sol = new btMultiBodyConstraintSolver();
|
btMultiBodyConstraintSolver* sol = new btMultiBodyConstraintSolver();
|
||||||
m_solver = sol;
|
m_solver = sol;
|
||||||
|
|
||||||
m_dynamicsWorld = new btDeformableRigidDynamicsWorld(m_dispatcher, m_broadphase, sol, m_collisionConfiguration, deformableBodySolver);
|
m_dynamicsWorld = new btDeformableMultiBodyDynamicsWorld(m_dispatcher, m_broadphase, sol, m_collisionConfiguration, deformableBodySolver);
|
||||||
deformableBodySolver->setWorld(getDeformableDynamicsWorld());
|
deformableBodySolver->setWorld(getDeformableDynamicsWorld());
|
||||||
btVector3 gravity = btVector3(0, -10, 0);
|
btVector3 gravity = btVector3(0, -10, 0);
|
||||||
m_dynamicsWorld->setGravity(gravity);
|
m_dynamicsWorld->setGravity(gravity);
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
#include "Pinch.h"
|
#include "Pinch.h"
|
||||||
///btBulletDynamicsCommon.h is the main Bullet include file, contains most common include files.
|
///btBulletDynamicsCommon.h is the main Bullet include file, contains most common include files.
|
||||||
#include "btBulletDynamicsCommon.h"
|
#include "btBulletDynamicsCommon.h"
|
||||||
#include "BulletSoftBody/btDeformableRigidDynamicsWorld.h"
|
#include "BulletSoftBody/btDeformableMultiBodyDynamicsWorld.h"
|
||||||
#include "BulletSoftBody/btSoftBody.h"
|
#include "BulletSoftBody/btSoftBody.h"
|
||||||
#include "BulletSoftBody/btSoftBodyHelpers.h"
|
#include "BulletSoftBody/btSoftBodyHelpers.h"
|
||||||
#include "BulletSoftBody/btDeformableBodySolver.h"
|
#include "BulletSoftBody/btDeformableBodySolver.h"
|
||||||
@@ -102,20 +102,20 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual const btDeformableRigidDynamicsWorld* getDeformableDynamicsWorld() const
|
virtual const btDeformableMultiBodyDynamicsWorld* getDeformableDynamicsWorld() const
|
||||||
{
|
{
|
||||||
return (btDeformableRigidDynamicsWorld*)m_dynamicsWorld;
|
return (btDeformableMultiBodyDynamicsWorld*)m_dynamicsWorld;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual btDeformableRigidDynamicsWorld* getDeformableDynamicsWorld()
|
virtual btDeformableMultiBodyDynamicsWorld* getDeformableDynamicsWorld()
|
||||||
{
|
{
|
||||||
return (btDeformableRigidDynamicsWorld*)m_dynamicsWorld;
|
return (btDeformableMultiBodyDynamicsWorld*)m_dynamicsWorld;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void renderScene()
|
virtual void renderScene()
|
||||||
{
|
{
|
||||||
CommonRigidBodyBase::renderScene();
|
CommonRigidBodyBase::renderScene();
|
||||||
btDeformableRigidDynamicsWorld* deformableWorld = getDeformableDynamicsWorld();
|
btDeformableMultiBodyDynamicsWorld* deformableWorld = getDeformableDynamicsWorld();
|
||||||
|
|
||||||
for (int i = 0; i < deformableWorld->getSoftBodyArray().size(); i++)
|
for (int i = 0; i < deformableWorld->getSoftBodyArray().size(); i++)
|
||||||
{
|
{
|
||||||
@@ -128,7 +128,7 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
void dynamics(btScalar time, btDeformableRigidDynamicsWorld* world)
|
void dynamics(btScalar time, btDeformableMultiBodyDynamicsWorld* world)
|
||||||
{
|
{
|
||||||
btAlignedObjectArray<btRigidBody*>& rbs = world->getNonStaticRigidBodies();
|
btAlignedObjectArray<btRigidBody*>& rbs = world->getNonStaticRigidBodies();
|
||||||
if (rbs.size()<2)
|
if (rbs.size()<2)
|
||||||
@@ -247,7 +247,7 @@ void Pinch::initPhysics()
|
|||||||
btMultiBodyConstraintSolver* sol = new btMultiBodyConstraintSolver();
|
btMultiBodyConstraintSolver* sol = new btMultiBodyConstraintSolver();
|
||||||
m_solver = sol;
|
m_solver = sol;
|
||||||
|
|
||||||
m_dynamicsWorld = new btDeformableRigidDynamicsWorld(m_dispatcher, m_broadphase, sol, m_collisionConfiguration, deformableBodySolver);
|
m_dynamicsWorld = new btDeformableMultiBodyDynamicsWorld(m_dispatcher, m_broadphase, sol, m_collisionConfiguration, deformableBodySolver);
|
||||||
deformableBodySolver->setWorld(getDeformableDynamicsWorld());
|
deformableBodySolver->setWorld(getDeformableDynamicsWorld());
|
||||||
// m_dynamicsWorld->getSolverInfo().m_singleAxisDeformableThreshold = 0.f;//faster but lower quality
|
// m_dynamicsWorld->getSolverInfo().m_singleAxisDeformableThreshold = 0.f;//faster but lower quality
|
||||||
btVector3 gravity = btVector3(0, -10, 0);
|
btVector3 gravity = btVector3(0, -10, 0);
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
#include "VolumetricDeformable.h"
|
#include "VolumetricDeformable.h"
|
||||||
///btBulletDynamicsCommon.h is the main Bullet include file, contains most common include files.
|
///btBulletDynamicsCommon.h is the main Bullet include file, contains most common include files.
|
||||||
#include "btBulletDynamicsCommon.h"
|
#include "btBulletDynamicsCommon.h"
|
||||||
#include "BulletSoftBody/btDeformableRigidDynamicsWorld.h"
|
#include "BulletSoftBody/btDeformableMultiBodyDynamicsWorld.h"
|
||||||
#include "BulletSoftBody/btSoftBody.h"
|
#include "BulletSoftBody/btSoftBody.h"
|
||||||
#include "BulletSoftBody/btSoftBodyHelpers.h"
|
#include "BulletSoftBody/btSoftBodyHelpers.h"
|
||||||
#include "BulletSoftBody/btDeformableBodySolver.h"
|
#include "BulletSoftBody/btDeformableBodySolver.h"
|
||||||
@@ -133,24 +133,24 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual const btDeformableRigidDynamicsWorld* getDeformableDynamicsWorld() const
|
virtual const btDeformableMultiBodyDynamicsWorld* getDeformableDynamicsWorld() const
|
||||||
{
|
{
|
||||||
///just make it a btSoftRigidDynamicsWorld please
|
///just make it a btSoftRigidDynamicsWorld please
|
||||||
///or we will add type checking
|
///or we will add type checking
|
||||||
return (btDeformableRigidDynamicsWorld*)m_dynamicsWorld;
|
return (btDeformableMultiBodyDynamicsWorld*)m_dynamicsWorld;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual btDeformableRigidDynamicsWorld* getDeformableDynamicsWorld()
|
virtual btDeformableMultiBodyDynamicsWorld* getDeformableDynamicsWorld()
|
||||||
{
|
{
|
||||||
///just make it a btSoftRigidDynamicsWorld please
|
///just make it a btSoftRigidDynamicsWorld please
|
||||||
///or we will add type checking
|
///or we will add type checking
|
||||||
return (btDeformableRigidDynamicsWorld*)m_dynamicsWorld;
|
return (btDeformableMultiBodyDynamicsWorld*)m_dynamicsWorld;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void renderScene()
|
virtual void renderScene()
|
||||||
{
|
{
|
||||||
CommonRigidBodyBase::renderScene();
|
CommonRigidBodyBase::renderScene();
|
||||||
btDeformableRigidDynamicsWorld* deformableWorld = getDeformableDynamicsWorld();
|
btDeformableMultiBodyDynamicsWorld* deformableWorld = getDeformableDynamicsWorld();
|
||||||
|
|
||||||
for (int i = 0; i < deformableWorld->getSoftBodyArray().size(); i++)
|
for (int i = 0; i < deformableWorld->getSoftBodyArray().size(); i++)
|
||||||
{
|
{
|
||||||
@@ -181,7 +181,7 @@ void VolumetricDeformable::initPhysics()
|
|||||||
btMultiBodyConstraintSolver* sol = new btMultiBodyConstraintSolver();
|
btMultiBodyConstraintSolver* sol = new btMultiBodyConstraintSolver();
|
||||||
m_solver = sol;
|
m_solver = sol;
|
||||||
|
|
||||||
m_dynamicsWorld = new btDeformableRigidDynamicsWorld(m_dispatcher, m_broadphase, sol, m_collisionConfiguration, deformableBodySolver);
|
m_dynamicsWorld = new btDeformableMultiBodyDynamicsWorld(m_dispatcher, m_broadphase, sol, m_collisionConfiguration, deformableBodySolver);
|
||||||
deformableBodySolver->setWorld(getDeformableDynamicsWorld());
|
deformableBodySolver->setWorld(getDeformableDynamicsWorld());
|
||||||
// m_dynamicsWorld->getSolverInfo().m_singleAxisDeformableThreshold = 0.f;//faster but lower quality
|
// m_dynamicsWorld->getSolverInfo().m_singleAxisDeformableThreshold = 0.f;//faster but lower quality
|
||||||
btVector3 gravity = btVector3(0, -10, 0);
|
btVector3 gravity = btVector3(0, -10, 0);
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ SET(BulletSoftBody_SRCS
|
|||||||
btDeformableBackwardEulerObjective.cpp
|
btDeformableBackwardEulerObjective.cpp
|
||||||
btDeformableBodySolver.cpp
|
btDeformableBodySolver.cpp
|
||||||
btDeformableContactProjection.cpp
|
btDeformableContactProjection.cpp
|
||||||
btDeformableRigidDynamicsWorld.cpp
|
btDeformableMultiBodyDynamicsWorld.cpp
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -49,7 +49,7 @@ SET(BulletSoftBody_HDRS
|
|||||||
btDeformableBackwardEulerObjective.h
|
btDeformableBackwardEulerObjective.h
|
||||||
btDeformableBodySolver.h
|
btDeformableBodySolver.h
|
||||||
btDeformableContactProjection.h
|
btDeformableContactProjection.h
|
||||||
btDeformableRigidDynamicsWorld.h
|
btDeformableMultiBodyDynamicsWorld.h
|
||||||
|
|
||||||
btSoftBodySolverVertexBuffer.h
|
btSoftBodySolverVertexBuffer.h
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
#include "BulletDynamics/Featherstone/btMultiBodyLinkCollider.h"
|
#include "BulletDynamics/Featherstone/btMultiBodyLinkCollider.h"
|
||||||
#include "BulletDynamics/Featherstone/btMultiBodyConstraint.h"
|
#include "BulletDynamics/Featherstone/btMultiBodyConstraint.h"
|
||||||
|
|
||||||
class btDeformableRigidDynamicsWorld;
|
class btDeformableMultiBodyDynamicsWorld;
|
||||||
|
|
||||||
struct DeformableContactConstraint
|
struct DeformableContactConstraint
|
||||||
{
|
{
|
||||||
@@ -62,7 +62,7 @@ public:
|
|||||||
typedef btAlignedObjectArray<btAlignedObjectArray<btVector3> > TVArrayStack;
|
typedef btAlignedObjectArray<btAlignedObjectArray<btVector3> > TVArrayStack;
|
||||||
typedef btAlignedObjectArray<btAlignedObjectArray<btScalar> > TArrayStack;
|
typedef btAlignedObjectArray<btAlignedObjectArray<btScalar> > TArrayStack;
|
||||||
btAlignedObjectArray<btSoftBody *>& m_softBodies;
|
btAlignedObjectArray<btSoftBody *>& m_softBodies;
|
||||||
btDeformableRigidDynamicsWorld* m_world;
|
btDeformableMultiBodyDynamicsWorld* m_world;
|
||||||
const btScalar& m_dt;
|
const btScalar& m_dt;
|
||||||
|
|
||||||
btCGProjection(btAlignedObjectArray<btSoftBody *>& softBodies, const btScalar& dt)
|
btCGProjection(btAlignedObjectArray<btSoftBody *>& softBodies, const btScalar& dt)
|
||||||
@@ -87,7 +87,7 @@ public:
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void setWorld(btDeformableRigidDynamicsWorld* world)
|
virtual void setWorld(btDeformableMultiBodyDynamicsWorld* world)
|
||||||
{
|
{
|
||||||
m_world = world;
|
m_world = world;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,16 +22,16 @@
|
|||||||
#include "btDeformableCorotatedForce.h"
|
#include "btDeformableCorotatedForce.h"
|
||||||
#include "btDeformableContactProjection.h"
|
#include "btDeformableContactProjection.h"
|
||||||
#include "btPreconditioner.h"
|
#include "btPreconditioner.h"
|
||||||
#include "btDeformableRigidDynamicsWorld.h"
|
#include "btDeformableMultiBodyDynamicsWorld.h"
|
||||||
#include "LinearMath/btQuickprof.h"
|
#include "LinearMath/btQuickprof.h"
|
||||||
|
|
||||||
class btDeformableRigidDynamicsWorld;
|
class btDeformableMultiBodyDynamicsWorld;
|
||||||
class btDeformableBackwardEulerObjective
|
class btDeformableBackwardEulerObjective
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef btAlignedObjectArray<btVector3> TVStack;
|
typedef btAlignedObjectArray<btVector3> TVStack;
|
||||||
btScalar m_dt;
|
btScalar m_dt;
|
||||||
btDeformableRigidDynamicsWorld* m_world;
|
btDeformableMultiBodyDynamicsWorld* m_world;
|
||||||
btAlignedObjectArray<btDeformableLagrangianForce*> m_lf;
|
btAlignedObjectArray<btDeformableLagrangianForce*> m_lf;
|
||||||
btAlignedObjectArray<btSoftBody *>& m_softBodies;
|
btAlignedObjectArray<btSoftBody *>& m_softBodies;
|
||||||
Preconditioner* m_preconditioner;
|
Preconditioner* m_preconditioner;
|
||||||
@@ -98,7 +98,7 @@ public:
|
|||||||
m_preconditioner->operator()(x,b);
|
m_preconditioner->operator()(x,b);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void setWorld(btDeformableRigidDynamicsWorld* world)
|
virtual void setWorld(btDeformableMultiBodyDynamicsWorld* world)
|
||||||
{
|
{
|
||||||
m_world = world;
|
m_world = world;
|
||||||
projection.setWorld(world);
|
projection.setWorld(world);
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ void btDeformableBodySolver::setConstraints()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void btDeformableBodySolver::setWorld(btDeformableRigidDynamicsWorld* world)
|
void btDeformableBodySolver::setWorld(btDeformableMultiBodyDynamicsWorld* world)
|
||||||
{
|
{
|
||||||
m_objective->setWorld(world);
|
m_objective->setWorld(world);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,13 +19,13 @@
|
|||||||
|
|
||||||
#include "btSoftBodySolvers.h"
|
#include "btSoftBodySolvers.h"
|
||||||
#include "btDeformableBackwardEulerObjective.h"
|
#include "btDeformableBackwardEulerObjective.h"
|
||||||
#include "btDeformableRigidDynamicsWorld.h"
|
#include "btDeformableMultiBodyDynamicsWorld.h"
|
||||||
#include "BulletDynamics/Featherstone/btMultiBodyLinkCollider.h"
|
#include "BulletDynamics/Featherstone/btMultiBodyLinkCollider.h"
|
||||||
#include "BulletDynamics/Featherstone/btMultiBodyConstraint.h"
|
#include "BulletDynamics/Featherstone/btMultiBodyConstraint.h"
|
||||||
|
|
||||||
struct btCollisionObjectWrapper;
|
struct btCollisionObjectWrapper;
|
||||||
class btDeformableBackwardEulerObjective;
|
class btDeformableBackwardEulerObjective;
|
||||||
class btDeformableRigidDynamicsWorld;
|
class btDeformableMultiBodyDynamicsWorld;
|
||||||
|
|
||||||
class btDeformableBodySolver : public btSoftBodySolver
|
class btDeformableBodySolver : public btSoftBodySolver
|
||||||
{
|
{
|
||||||
@@ -91,7 +91,7 @@ public:
|
|||||||
}
|
}
|
||||||
virtual void optimize(btAlignedObjectArray<btSoftBody *> &softBodies, bool forceUpdate = false){}
|
virtual void optimize(btAlignedObjectArray<btSoftBody *> &softBodies, bool forceUpdate = false){}
|
||||||
virtual bool checkInitialized(){return true;}
|
virtual bool checkInitialized(){return true;}
|
||||||
virtual void setWorld(btDeformableRigidDynamicsWorld* world);
|
virtual void setWorld(btDeformableMultiBodyDynamicsWorld* world);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* btDeformableBodySolver_h */
|
#endif /* btDeformableBodySolver_h */
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "btDeformableContactProjection.h"
|
#include "btDeformableContactProjection.h"
|
||||||
#include "btDeformableRigidDynamicsWorld.h"
|
#include "btDeformableMultiBodyDynamicsWorld.h"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
void btDeformableContactProjection::update()
|
void btDeformableContactProjection::update()
|
||||||
|
|||||||
@@ -30,11 +30,11 @@ The algorithm also closely resembles the one in http://physbam.stanford.edu/~fed
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "btDeformableRigidDynamicsWorld.h"
|
#include "btDeformableMultiBodyDynamicsWorld.h"
|
||||||
#include "btDeformableBodySolver.h"
|
#include "btDeformableBodySolver.h"
|
||||||
#include "LinearMath/btQuickprof.h"
|
#include "LinearMath/btQuickprof.h"
|
||||||
|
|
||||||
void btDeformableRigidDynamicsWorld::internalSingleStepSimulation(btScalar timeStep)
|
void btDeformableMultiBodyDynamicsWorld::internalSingleStepSimulation(btScalar timeStep)
|
||||||
{
|
{
|
||||||
BT_PROFILE("internalSingleStepSimulation");
|
BT_PROFILE("internalSingleStepSimulation");
|
||||||
reinitialize(timeStep);
|
reinitialize(timeStep);
|
||||||
@@ -66,7 +66,7 @@ void btDeformableRigidDynamicsWorld::internalSingleStepSimulation(btScalar timeS
|
|||||||
// ///////////////////////////////
|
// ///////////////////////////////
|
||||||
}
|
}
|
||||||
|
|
||||||
void btDeformableRigidDynamicsWorld::positionCorrection(btScalar timeStep)
|
void btDeformableMultiBodyDynamicsWorld::positionCorrection(btScalar timeStep)
|
||||||
{
|
{
|
||||||
// perform position correction for all constraints
|
// perform position correction for all constraints
|
||||||
BT_PROFILE("positionCorrection");
|
BT_PROFILE("positionCorrection");
|
||||||
@@ -141,7 +141,7 @@ void btDeformableRigidDynamicsWorld::positionCorrection(btScalar timeStep)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void btDeformableRigidDynamicsWorld::integrateTransforms(btScalar timeStep)
|
void btDeformableMultiBodyDynamicsWorld::integrateTransforms(btScalar timeStep)
|
||||||
{
|
{
|
||||||
BT_PROFILE("integrateTransforms");
|
BT_PROFILE("integrateTransforms");
|
||||||
m_deformableBodySolver->backupVelocity();
|
m_deformableBodySolver->backupVelocity();
|
||||||
@@ -159,12 +159,12 @@ void btDeformableRigidDynamicsWorld::integrateTransforms(btScalar timeStep)
|
|||||||
m_deformableBodySolver->revertVelocity();
|
m_deformableBodySolver->revertVelocity();
|
||||||
}
|
}
|
||||||
|
|
||||||
void btDeformableRigidDynamicsWorld::solveDeformableBodiesConstraints(btScalar timeStep)
|
void btDeformableMultiBodyDynamicsWorld::solveDeformableBodiesConstraints(btScalar timeStep)
|
||||||
{
|
{
|
||||||
m_deformableBodySolver->solveConstraints(timeStep);
|
m_deformableBodySolver->solveConstraints(timeStep);
|
||||||
}
|
}
|
||||||
|
|
||||||
void btDeformableRigidDynamicsWorld::addSoftBody(btSoftBody* body, int collisionFilterGroup, int collisionFilterMask)
|
void btDeformableMultiBodyDynamicsWorld::addSoftBody(btSoftBody* body, int collisionFilterGroup, int collisionFilterMask)
|
||||||
{
|
{
|
||||||
m_softBodies.push_back(body);
|
m_softBodies.push_back(body);
|
||||||
|
|
||||||
@@ -177,14 +177,14 @@ void btDeformableRigidDynamicsWorld::addSoftBody(btSoftBody* body, int collision
|
|||||||
collisionFilterMask);
|
collisionFilterMask);
|
||||||
}
|
}
|
||||||
|
|
||||||
void btDeformableRigidDynamicsWorld::predictUnconstraintMotion(btScalar timeStep)
|
void btDeformableMultiBodyDynamicsWorld::predictUnconstraintMotion(btScalar timeStep)
|
||||||
{
|
{
|
||||||
BT_PROFILE("predictUnconstraintMotion");
|
BT_PROFILE("predictUnconstraintMotion");
|
||||||
btMultiBodyDynamicsWorld::predictUnconstraintMotion(timeStep);
|
btMultiBodyDynamicsWorld::predictUnconstraintMotion(timeStep);
|
||||||
m_deformableBodySolver->predictMotion(timeStep);
|
m_deformableBodySolver->predictMotion(timeStep);
|
||||||
}
|
}
|
||||||
|
|
||||||
void btDeformableRigidDynamicsWorld::reinitialize(btScalar timeStep)
|
void btDeformableMultiBodyDynamicsWorld::reinitialize(btScalar timeStep)
|
||||||
{
|
{
|
||||||
m_internalTime += timeStep;
|
m_internalTime += timeStep;
|
||||||
m_deformableBodySolver->reinitialize(m_softBodies, timeStep);
|
m_deformableBodySolver->reinitialize(m_softBodies, timeStep);
|
||||||
@@ -195,7 +195,7 @@ void btDeformableRigidDynamicsWorld::reinitialize(btScalar timeStep)
|
|||||||
btMultiBodyDynamicsWorld::getSolverInfo().m_timeStep = timeStep;
|
btMultiBodyDynamicsWorld::getSolverInfo().m_timeStep = timeStep;
|
||||||
}
|
}
|
||||||
|
|
||||||
void btDeformableRigidDynamicsWorld::applyRigidBodyGravity(btScalar timeStep)
|
void btDeformableMultiBodyDynamicsWorld::applyRigidBodyGravity(btScalar timeStep)
|
||||||
{
|
{
|
||||||
// Gravity is applied in stepSimulation and then cleared here and then applied here and then cleared here again
|
// Gravity is applied in stepSimulation and then cleared here and then applied here and then cleared here again
|
||||||
// so that 1) gravity is applied to velocity before constraint solve and 2) gravity is applied in each substep
|
// so that 1) gravity is applied to velocity before constraint solve and 2) gravity is applied in each substep
|
||||||
@@ -215,7 +215,7 @@ void btDeformableRigidDynamicsWorld::applyRigidBodyGravity(btScalar timeStep)
|
|||||||
clearMultiBodyForces();
|
clearMultiBodyForces();
|
||||||
}
|
}
|
||||||
|
|
||||||
void btDeformableRigidDynamicsWorld::beforeSolverCallbacks(btScalar timeStep)
|
void btDeformableMultiBodyDynamicsWorld::beforeSolverCallbacks(btScalar timeStep)
|
||||||
{
|
{
|
||||||
if (0 != m_internalTickCallback)
|
if (0 != m_internalTickCallback)
|
||||||
{
|
{
|
||||||
@@ -228,7 +228,7 @@ void btDeformableRigidDynamicsWorld::beforeSolverCallbacks(btScalar timeStep)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void btDeformableRigidDynamicsWorld::afterSolverCallbacks(btScalar timeStep)
|
void btDeformableMultiBodyDynamicsWorld::afterSolverCallbacks(btScalar timeStep)
|
||||||
{
|
{
|
||||||
if (0 != m_solverCallback)
|
if (0 != m_solverCallback)
|
||||||
{
|
{
|
||||||
@@ -236,7 +236,7 @@ void btDeformableRigidDynamicsWorld::afterSolverCallbacks(btScalar timeStep)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void btDeformableRigidDynamicsWorld::addForce(btSoftBody* psb, btDeformableLagrangianForce* force)
|
void btDeformableMultiBodyDynamicsWorld::addForce(btSoftBody* psb, btDeformableLagrangianForce* force)
|
||||||
{
|
{
|
||||||
btAlignedObjectArray<btDeformableLagrangianForce*>& forces = m_deformableBodySolver->m_objective->m_lf;
|
btAlignedObjectArray<btDeformableLagrangianForce*>& forces = m_deformableBodySolver->m_objective->m_lf;
|
||||||
bool added = false;
|
bool added = false;
|
||||||
@@ -28,7 +28,7 @@ class btDeformableBodySolver;
|
|||||||
class btDeformableLagrangianForce;
|
class btDeformableLagrangianForce;
|
||||||
typedef btAlignedObjectArray<btSoftBody*> btSoftBodyArray;
|
typedef btAlignedObjectArray<btSoftBody*> btSoftBodyArray;
|
||||||
|
|
||||||
class btDeformableRigidDynamicsWorld : public btMultiBodyDynamicsWorld
|
class btDeformableMultiBodyDynamicsWorld : public btMultiBodyDynamicsWorld
|
||||||
{
|
{
|
||||||
typedef btAlignedObjectArray<btVector3> TVStack;
|
typedef btAlignedObjectArray<btVector3> TVStack;
|
||||||
// using TVStack = btAlignedObjectArray<btVector3>;
|
// using TVStack = btAlignedObjectArray<btVector3>;
|
||||||
@@ -42,7 +42,7 @@ class btDeformableRigidDynamicsWorld : public btMultiBodyDynamicsWorld
|
|||||||
btSoftBodyWorldInfo m_sbi;
|
btSoftBodyWorldInfo m_sbi;
|
||||||
btScalar m_internalTime;
|
btScalar m_internalTime;
|
||||||
|
|
||||||
typedef void (*btSolverCallback)(btScalar time, btDeformableRigidDynamicsWorld* world);
|
typedef void (*btSolverCallback)(btScalar time, btDeformableMultiBodyDynamicsWorld* world);
|
||||||
btSolverCallback m_solverCallback;
|
btSolverCallback m_solverCallback;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@@ -55,7 +55,7 @@ protected:
|
|||||||
void solveDeformableBodiesConstraints(btScalar timeStep);
|
void solveDeformableBodiesConstraints(btScalar timeStep);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
btDeformableRigidDynamicsWorld(btDispatcher* dispatcher, btBroadphaseInterface* pairCache, btMultiBodyConstraintSolver* constraintSolver, btCollisionConfiguration* collisionConfiguration, btDeformableBodySolver* deformableBodySolver = 0)
|
btDeformableMultiBodyDynamicsWorld(btDispatcher* dispatcher, btBroadphaseInterface* pairCache, btMultiBodyConstraintSolver* constraintSolver, btCollisionConfiguration* collisionConfiguration, btDeformableBodySolver* deformableBodySolver = 0)
|
||||||
: btMultiBodyDynamicsWorld(dispatcher, pairCache, constraintSolver, collisionConfiguration),
|
: btMultiBodyDynamicsWorld(dispatcher, pairCache, constraintSolver, collisionConfiguration),
|
||||||
m_deformableBodySolver(deformableBodySolver), m_solverCallback(0)
|
m_deformableBodySolver(deformableBodySolver), m_solverCallback(0)
|
||||||
{
|
{
|
||||||
@@ -83,7 +83,7 @@ public:
|
|||||||
m_solverCallback = cb;
|
m_solverCallback = cb;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual ~btDeformableRigidDynamicsWorld()
|
virtual ~btDeformableMultiBodyDynamicsWorld()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user