setDt in reinitialize and remove unused variables
This commit is contained in:
@@ -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)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|
||||||
|
|||||||
@@ -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];
|
||||||
|
|||||||
@@ -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)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user