setDt in reinitialize and remove unused variables

This commit is contained in:
Xuchen Han
2019-08-06 10:16:56 -07:00
parent 73f5eb6a8f
commit 6a599bde87
7 changed files with 14 additions and 23 deletions

View File

@@ -113,13 +113,13 @@ public:
typedef btAlignedObjectArray<btAlignedObjectArray<btScalar> > TArrayStack; typedef btAlignedObjectArray<btAlignedObjectArray<btScalar> > TArrayStack;
btAlignedObjectArray<btSoftBody *> m_softBodies; btAlignedObjectArray<btSoftBody *> m_softBodies;
btDeformableRigidDynamicsWorld* m_world; btDeformableRigidDynamicsWorld* m_world;
const btAlignedObjectArray<btSoftBody::Node*>* m_nodes; // const btAlignedObjectArray<btSoftBody::Node*>* m_nodes;
const btScalar& m_dt; const btScalar& m_dt;
btCGProjection(btAlignedObjectArray<btSoftBody *>& softBodies, const btScalar& dt, const btAlignedObjectArray<btSoftBody::Node*>* nodes) btCGProjection(btAlignedObjectArray<btSoftBody *>& softBodies, const btScalar& dt)
: m_softBodies(softBodies) : m_softBodies(softBodies)
, m_dt(dt) , m_dt(dt)
, m_nodes(nodes) // , m_nodes(nodes)
{ {
} }

View File

@@ -16,7 +16,7 @@
btDeformableBackwardEulerObjective::btDeformableBackwardEulerObjective(btAlignedObjectArray<btSoftBody *>& softBodies, const TVStack& backup_v) btDeformableBackwardEulerObjective::btDeformableBackwardEulerObjective(btAlignedObjectArray<btSoftBody *>& softBodies, const TVStack& backup_v)
: m_softBodies(softBodies) : m_softBodies(softBodies)
, projection(m_softBodies, m_dt, &m_nodes) , projection(m_softBodies, m_dt)
, m_backupVelocity(backup_v) , m_backupVelocity(backup_v)
{ {
m_preconditioner = new DefaultPreconditioner(); m_preconditioner = new DefaultPreconditioner();

View File

@@ -31,8 +31,6 @@ btDeformableBodySolver::~btDeformableBodySolver()
void btDeformableBodySolver::solveConstraints(float solverdt) void btDeformableBodySolver::solveConstraints(float solverdt)
{ {
BT_PROFILE("solveConstraints"); BT_PROFILE("solveConstraints");
m_objective->setDt(solverdt);
// add constraints to the solver // add constraints to the solver
setConstraints(); setConstraints();
@@ -51,22 +49,16 @@ void btDeformableBodySolver::computeStep(TVStack& dv, const TVStack& residual)
m_cg.solve(*m_objective, dv, residual, tolerance); m_cg.solve(*m_objective, dv, residual, tolerance);
} }
void btDeformableBodySolver::reinitialize(const btAlignedObjectArray<btSoftBody *>& softBodies) void btDeformableBodySolver::reinitialize(const btAlignedObjectArray<btSoftBody *>& softBodies, btScalar dt)
{ {
m_objective->setDt(dt);
m_softBodySet.copyFromArray(softBodies); m_softBodySet.copyFromArray(softBodies);
bool nodeUpdated = updateNodes(); bool nodeUpdated = updateNodes();
if (nodeUpdated)
{
m_dv.resize(m_numNodes);
m_residual.resize(m_numNodes);
m_backupVelocity.resize(m_numNodes);
}
for (int i = 0; i < m_dv.size(); ++i) m_dv.resize(m_numNodes, btVector3(0,0,0));
{ m_residual.resize(m_numNodes, btVector3(0,0,0));
m_dv[i].setZero(); m_backupVelocity.resize(m_numNodes, btVector3(0,0,0));
m_residual[i].setZero();
}
m_objective->reinitialize(nodeUpdated); m_objective->reinitialize(nodeUpdated);
} }

View File

@@ -60,7 +60,7 @@ public:
virtual void solveConstraints(float solverdt); virtual void solveConstraints(float solverdt);
void reinitialize(const btAlignedObjectArray<btSoftBody *>& softBodies); void reinitialize(const btAlignedObjectArray<btSoftBody *>& softBodies, btScalar dt);
void setConstraints(); void setConstraints();

View File

@@ -254,7 +254,6 @@ void btDeformableContactProjection::setConstraints()
btSoftBody* psb = m_softBodies[i]; btSoftBody* psb = m_softBodies[i];
btMultiBodyJacobianData jacobianData_normal; btMultiBodyJacobianData jacobianData_normal;
btMultiBodyJacobianData jacobianData_complementary; btMultiBodyJacobianData jacobianData_complementary;
std::cout <<psb->m_rcontacts.size() << std::endl;
for (int j = 0; j < psb->m_rcontacts.size(); ++j) for (int j = 0; j < psb->m_rcontacts.size(); ++j)
{ {
const btSoftBody::RContact& c = psb->m_rcontacts[j]; const btSoftBody::RContact& c = psb->m_rcontacts[j];

View File

@@ -25,8 +25,8 @@ public:
btHashMap<btHashInt, btAlignedObjectArray<DeformableContactConstraint> > m_constraints; btHashMap<btHashInt, btAlignedObjectArray<DeformableContactConstraint> > m_constraints;
btHashMap<btHashInt, btAlignedObjectArray<DeformableFrictionConstraint> >m_frictions; btHashMap<btHashInt, btAlignedObjectArray<DeformableFrictionConstraint> >m_frictions;
btDeformableContactProjection(btAlignedObjectArray<btSoftBody *>& softBodies, const btScalar& dt, const btAlignedObjectArray<btSoftBody::Node*>* nodes) btDeformableContactProjection(btAlignedObjectArray<btSoftBody *>& softBodies, const btScalar& dt)
: btCGProjection(softBodies, dt, nodes) : btCGProjection(softBodies, dt)
{ {
} }

View File

@@ -179,7 +179,7 @@ void btDeformableRigidDynamicsWorld::predictUnconstraintMotion(btScalar timeStep
void btDeformableRigidDynamicsWorld::reinitialize(btScalar timeStep) void btDeformableRigidDynamicsWorld::reinitialize(btScalar timeStep)
{ {
m_internalTime += timeStep; m_internalTime += timeStep;
m_deformableBodySolver->reinitialize(m_softBodies); m_deformableBodySolver->reinitialize(m_softBodies, timeStep);
btDispatcherInfo& dispatchInfo = btMultiBodyDynamicsWorld::getDispatchInfo(); btDispatcherInfo& dispatchInfo = btMultiBodyDynamicsWorld::getDispatchInfo();
dispatchInfo.m_timeStep = timeStep; dispatchInfo.m_timeStep = timeStep;
dispatchInfo.m_stepCount = 0; dispatchInfo.m_stepCount = 0;