summaryrefslogtreecommitdiff
path: root/src/BulletSoftBody/btDeformableMultiBodyConstraintSolver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/BulletSoftBody/btDeformableMultiBodyConstraintSolver.cpp')
-rw-r--r--src/BulletSoftBody/btDeformableMultiBodyConstraintSolver.cpp71
1 files changed, 0 insertions, 71 deletions
diff --git a/src/BulletSoftBody/btDeformableMultiBodyConstraintSolver.cpp b/src/BulletSoftBody/btDeformableMultiBodyConstraintSolver.cpp
index 2a0e5ec34..631fd5fbe 100644
--- a/src/BulletSoftBody/btDeformableMultiBodyConstraintSolver.cpp
+++ b/src/BulletSoftBody/btDeformableMultiBodyConstraintSolver.cpp
@@ -14,16 +14,11 @@
*/
#include "btDeformableMultiBodyConstraintSolver.h"
-#include "BulletReducedDeformableBody/btReducedDeformableBodySolver.h"
#include <iostream>
-#include <thread>
// override the iterations method to include deformable/multibody contact
btScalar btDeformableMultiBodyConstraintSolver::solveDeformableGroupIterations(btCollisionObject** bodies, int numBodies, btCollisionObject** deformableBodies, int numDeformableBodies, btPersistentManifold** manifoldPtr, int numManifolds, btTypedConstraint** constraints, int numConstraints, const btContactSolverInfo& infoGlobal, btIDebugDraw* debugDrawer)
{
{
- // pair deformable body with solver body
- pairDeformableAndSolverBody(bodies, numBodies, numDeformableBodies, infoGlobal);
-
///this is a special step to resolve penetrations (just for contacts)
solveGroupCacheFriendlySplitImpulseIterations(bodies, numBodies, deformableBodies, numDeformableBodies, manifoldPtr, numManifolds, constraints, numConstraints, infoGlobal, debugDrawer);
@@ -42,10 +37,6 @@ btScalar btDeformableMultiBodyConstraintSolver::solveDeformableGroupIterations(b
// solver body velocity <- rigid body velocity
writeToSolverBody(bodies, numBodies, infoGlobal);
-
- // std::cout << "------------Iteration " << iteration << "------------\n";
- // std::cout << "m_leastSquaresResidual: " << m_leastSquaresResidual << "\n";
-
if (m_leastSquaresResidual <= infoGlobal.m_leastSquaresResidualThreshold || (iteration >= (maxIterations - 1)))
{
#ifdef VERBOSE_RESIDUAL_PRINTF
@@ -60,9 +51,6 @@ btScalar btDeformableMultiBodyConstraintSolver::solveDeformableGroupIterations(b
m_analyticsData.m_numBodies = numBodies;
m_analyticsData.m_numContactManifolds = numManifolds;
m_analyticsData.m_remainingLeastSquaresResidual = m_leastSquaresResidual;
-
- m_deformableSolver->deformableBodyInternalWriteBack();
- // std::cout << "[===================Next Step===================]\n";
break;
}
}
@@ -90,12 +78,6 @@ void btDeformableMultiBodyConstraintSolver::solveDeformableBodyGroup(btCollision
void btDeformableMultiBodyConstraintSolver::writeToSolverBody(btCollisionObject** bodies, int numBodies, const btContactSolverInfo& infoGlobal)
{
- // reduced soft body solver directly modifies the solver body
- if (m_deformableSolver->isReducedSolver())
- {
- return;
- }
-
for (int i = 0; i < numBodies; i++)
{
int bodyId = getOrInitSolverBody(*bodies[i], infoGlobal.m_timeStep);
@@ -112,12 +94,6 @@ void btDeformableMultiBodyConstraintSolver::writeToSolverBody(btCollisionObject*
void btDeformableMultiBodyConstraintSolver::solverBodyWriteBack(const btContactSolverInfo& infoGlobal)
{
- // reduced soft body solver directly modifies the solver body
- if (m_deformableSolver->isReducedSolver())
- {
- return;
- }
-
for (int i = 0; i < m_tmpSolverBodyPool.size(); i++)
{
btRigidBody* body = m_tmpSolverBodyPool[i].m_originalBody;
@@ -129,53 +105,6 @@ void btDeformableMultiBodyConstraintSolver::solverBodyWriteBack(const btContactS
}
}
-
-void btDeformableMultiBodyConstraintSolver::pairDeformableAndSolverBody(btCollisionObject** bodies, int numBodies, int numDeformableBodies, const btContactSolverInfo& infoGlobal)
-{
- if (!m_deformableSolver->isReducedSolver())
- {
- return;
- }
-
- btReducedDeformableBodySolver* solver = static_cast<btReducedDeformableBodySolver*>(m_deformableSolver);
-
- for (int i = 0; i < numDeformableBodies; ++i)
- {
- for (int k = 0; k < solver->m_nodeRigidConstraints[i].size(); ++k)
- {
- btReducedDeformableNodeRigidContactConstraint& constraint = solver->m_nodeRigidConstraints[i][k];
-
- if (!constraint.m_contact->m_cti.m_colObj->isStaticObject())
- {
- btCollisionObject& col_obj = const_cast<btCollisionObject&>(*constraint.m_contact->m_cti.m_colObj);
-
- // object index in the solver body pool
- int bodyId = getOrInitSolverBody(col_obj, infoGlobal.m_timeStep);
-
- const btRigidBody* body = btRigidBody::upcast(bodies[bodyId]);
- if (body && body->getInvMass())
- {
- // std::cout << "Node: " << constraint.m_node->index << ", body: " << bodyId << "\n";
- btSolverBody& solverBody = m_tmpSolverBodyPool[bodyId];
- constraint.setSolverBody(bodyId, solverBody);
- }
- }
- }
-
- // for (int j = 0; j < numBodies; j++)
- // {
- // int bodyId = getOrInitSolverBody(*bodies[j], infoGlobal.m_timeStep);
-
- // btRigidBody* body = btRigidBody::upcast(bodies[j]);
- // if (body && body->getInvMass())
- // {
- // btSolverBody& solverBody = m_tmpSolverBodyPool[bodyId];
- // m_deformableSolver->pairConstraintWithSolverBody(i, bodyId, solverBody);
- // }
- // }
- }
-}
-
void btDeformableMultiBodyConstraintSolver::solveGroupCacheFriendlySplitImpulseIterations(btCollisionObject** bodies, int numBodies, btCollisionObject** deformableBodies, int numDeformableBodies, btPersistentManifold** manifoldPtr, int numManifolds, btTypedConstraint** constraints, int numConstraints, const btContactSolverInfo& infoGlobal, btIDebugDraw* debugDrawer)
{
BT_PROFILE("solveGroupCacheFriendlySplitImpulseIterations");