Bullet Collision Detection & Physics Library
Public Member Functions | Public Attributes | Protected Attributes | Private Types | List of all members
btDeformableBodySolver Class Reference

#include <btDeformableBodySolver.h>

Inheritance diagram for btDeformableBodySolver:
Inheritance graph
[legend]
Collaboration diagram for btDeformableBodySolver:
Collaboration graph
[legend]

Public Member Functions

 btDeformableBodySolver ()
 
virtual ~btDeformableBodySolver ()
 
virtual SolverTypes getSolverType () const
 Return the type of the solver. More...
 
virtual void updateSoftBodies ()
 Perform necessary per-step updates of soft bodies such as recomputing normals and bounding boxes. More...
 
virtual btScalar solveContactConstraints (btCollisionObject **deformableBodies, int numDeformableBodies, const btContactSolverInfo &infoGlobal)
 
virtual void solveDeformableConstraints (btScalar solverdt)
 
void reinitialize (const btAlignedObjectArray< btSoftBody * > &softBodies, btScalar dt)
 
void setConstraints (const btContactSolverInfo &infoGlobal)
 
virtual void predictMotion (btScalar solverdt)
 Predict motion of soft bodies into next timestep. More...
 
void predictDeformableMotion (btSoftBody *psb, btScalar dt)
 
void backupVelocity ()
 
void setupDeformableSolve (bool implicit)
 
void revertVelocity ()
 
void updateVelocity ()
 
bool updateNodes ()
 
void computeStep (TVStack &ddv, const TVStack &residual)
 
btScalar computeDescentStep (TVStack &ddv, const TVStack &residual, bool verbose=false)
 
virtual void copySoftBodyToVertexBuffer (const btSoftBody *const softBody, btVertexBufferDescriptor *vertexBuffer)
 
virtual void processCollision (btSoftBody *softBody, const btCollisionObjectWrapper *collisionObjectWrap)
 
virtual void processCollision (btSoftBody *softBody, btSoftBody *otherSoftBody)
 Process a collision between two soft bodies. More...
 
void setImplicit (bool implicit)
 
void setLineSearch (bool lineSearch)
 
void updateState ()
 
void updateDv (btScalar scale=1)
 
void updateTempPosition ()
 
void backupDv ()
 
void revertDv ()
 
void updateEnergy (btScalar scale)
 
btScalar kineticEnergy ()
 
virtual void optimize (btAlignedObjectArray< btSoftBody * > &softBodies, bool forceUpdate=false)
 Optimize soft bodies in this solver. More...
 
virtual void solveConstraints (btScalar dt)
 Solve constraints for a set of soft bodies. More...
 
virtual bool checkInitialized ()
 Ensure that this solver is initialized. More...
 
virtual void copyBackToSoftBodies (bool bMove=true)
 Copy necessary data back to the original soft body source objects. More...
 
- Public Member Functions inherited from btSoftBodySolver
 btSoftBodySolver ()
 
virtual ~btSoftBodySolver ()
 
virtual void processCollision (btSoftBody *, const struct btCollisionObjectWrapper *)=0
 Process a collision between one of the world's soft bodies and another collision object. More...
 
virtual void setNumberOfPositionIterations (int iterations)
 Set the number of velocity constraint solver iterations this solver uses. More...
 
virtual int getNumberOfPositionIterations ()
 Get the number of velocity constraint solver iterations this solver uses. More...
 
virtual void setNumberOfVelocityIterations (int iterations)
 Set the number of velocity constraint solver iterations this solver uses. More...
 
virtual int getNumberOfVelocityIterations ()
 Get the number of velocity constraint solver iterations this solver uses. More...
 
float getTimeScale ()
 Return the timescale that the simulation is using. More...
 

Public Attributes

btDeformableBackwardEulerObjectivem_objective
 
bool m_useProjection
 

Protected Attributes

int m_numNodes
 
TVStack m_dv
 
TVStack m_backup_dv
 
TVStack m_ddv
 
TVStack m_residual
 
btAlignedObjectArray< btSoftBody * > m_softBodies
 
TVStack m_backupVelocity
 
btScalar m_dt
 
btConjugateGradient< btDeformableBackwardEulerObjectivem_cg
 
btConjugateResidual< btDeformableBackwardEulerObjectivem_cr
 
bool m_implicit
 
int m_maxNewtonIterations
 
btScalar m_newtonTolerance
 
bool m_lineSearch
 
- Protected Attributes inherited from btSoftBodySolver
int m_numberOfPositionIterations
 
int m_numberOfVelocityIterations
 
float m_timeScale
 

Private Types

typedef btAlignedObjectArray< btVector3TVStack
 

Additional Inherited Members

- Public Types inherited from btSoftBodySolver
enum  SolverTypes {
  DEFAULT_SOLVER ,
  CPU_SOLVER ,
  CL_SOLVER ,
  CL_SIMD_SOLVER ,
  DX_SOLVER ,
  DX_SIMD_SOLVER ,
  DEFORMABLE_SOLVER
}
 

Detailed Description

Definition at line 30 of file btDeformableBodySolver.h.

Member Typedef Documentation

◆ TVStack

Definition at line 32 of file btDeformableBodySolver.h.

Constructor & Destructor Documentation

◆ btDeformableBodySolver()

btDeformableBodySolver::btDeformableBodySolver ( )

Definition at line 22 of file btDeformableBodySolver.cpp.

◆ ~btDeformableBodySolver()

btDeformableBodySolver::~btDeformableBodySolver ( )
virtual

Definition at line 28 of file btDeformableBodySolver.cpp.

Member Function Documentation

◆ backupDv()

void btDeformableBodySolver::backupDv ( )

Definition at line 139 of file btDeformableBodySolver.cpp.

◆ backupVelocity()

void btDeformableBodySolver::backupVelocity ( )

Definition at line 316 of file btDeformableBodySolver.cpp.

◆ checkInitialized()

virtual bool btDeformableBodySolver::checkInitialized ( )
inlinevirtual

Ensure that this solver is initialized.

Implements btSoftBodySolver.

Definition at line 156 of file btDeformableBodySolver.h.

◆ computeDescentStep()

btScalar btDeformableBodySolver::computeDescentStep ( TVStack ddv,
const TVStack residual,
bool  verbose = false 
)

Definition at line 165 of file btDeformableBodySolver.cpp.

◆ computeStep()

void btDeformableBodySolver::computeStep ( TVStack ddv,
const TVStack residual 
)

Definition at line 213 of file btDeformableBodySolver.cpp.

◆ copyBackToSoftBodies()

virtual void btDeformableBodySolver::copyBackToSoftBodies ( bool  bMove = true)
inlinevirtual

Copy necessary data back to the original soft body source objects.

Implements btSoftBodySolver.

Definition at line 157 of file btDeformableBodySolver.h.

◆ copySoftBodyToVertexBuffer()

virtual void btDeformableBodySolver::copySoftBodyToVertexBuffer ( const btSoftBody *const  softBody,
btVertexBufferDescriptor vertexBuffer 
)
inlinevirtual

Definition at line 105 of file btDeformableBodySolver.h.

◆ getSolverType()

virtual SolverTypes btDeformableBodySolver::getSolverType ( ) const
inlinevirtual

Return the type of the solver.

Implements btSoftBodySolver.

Definition at line 58 of file btDeformableBodySolver.h.

◆ kineticEnergy()

btScalar btDeformableBodySolver::kineticEnergy ( )

Definition at line 121 of file btDeformableBodySolver.cpp.

◆ optimize()

virtual void btDeformableBodySolver::optimize ( btAlignedObjectArray< btSoftBody * > &  softBodies,
bool  forceUpdate = false 
)
inlinevirtual

Optimize soft bodies in this solver.

Implements btSoftBodySolver.

Definition at line 154 of file btDeformableBodySolver.h.

◆ predictDeformableMotion()

void btDeformableBodySolver::predictDeformableMotion ( btSoftBody psb,
btScalar  dt 
)

Definition at line 420 of file btDeformableBodySolver.cpp.

◆ predictMotion()

void btDeformableBodySolver::predictMotion ( btScalar  solverdt)
virtual

Predict motion of soft bodies into next timestep.

Implements btSoftBodySolver.

Definition at line 387 of file btDeformableBodySolver.cpp.

◆ processCollision() [1/2]

virtual void btDeformableBodySolver::processCollision ( btSoftBody ,
btSoftBody  
)
inlinevirtual

Process a collision between two soft bodies.

Implements btSoftBodySolver.

Definition at line 114 of file btDeformableBodySolver.h.

◆ processCollision() [2/2]

virtual void btDeformableBodySolver::processCollision ( btSoftBody softBody,
const btCollisionObjectWrapper collisionObjectWrap 
)
inlinevirtual

Definition at line 108 of file btDeformableBodySolver.h.

◆ reinitialize()

void btDeformableBodySolver::reinitialize ( const btAlignedObjectArray< btSoftBody * > &  softBodies,
btScalar  dt 
)

Definition at line 221 of file btDeformableBodySolver.cpp.

◆ revertDv()

void btDeformableBodySolver::revertDv ( )

Definition at line 148 of file btDeformableBodySolver.cpp.

◆ revertVelocity()

void btDeformableBodySolver::revertVelocity ( )

Definition at line 361 of file btDeformableBodySolver.cpp.

◆ setConstraints()

void btDeformableBodySolver::setConstraints ( const btContactSolverInfo infoGlobal)

Definition at line 250 of file btDeformableBodySolver.cpp.

◆ setImplicit()

void btDeformableBodySolver::setImplicit ( bool  implicit)

Definition at line 496 of file btDeformableBodySolver.cpp.

◆ setLineSearch()

void btDeformableBodySolver::setLineSearch ( bool  lineSearch)

Definition at line 502 of file btDeformableBodySolver.cpp.

◆ setupDeformableSolve()

void btDeformableBodySolver::setupDeformableSolve ( bool  implicit)

Definition at line 329 of file btDeformableBodySolver.cpp.

◆ solveConstraints()

virtual void btDeformableBodySolver::solveConstraints ( btScalar  solverdt)
inlinevirtual

Solve constraints for a set of soft bodies.

Implements btSoftBodySolver.

Definition at line 155 of file btDeformableBodySolver.h.

◆ solveContactConstraints()

btScalar btDeformableBodySolver::solveContactConstraints ( btCollisionObject **  deformableBodies,
int  numDeformableBodies,
const btContactSolverInfo infoGlobal 
)
virtual

Definition at line 256 of file btDeformableBodySolver.cpp.

◆ solveDeformableConstraints()

void btDeformableBodySolver::solveDeformableConstraints ( btScalar  solverdt)
virtual

Definition at line 33 of file btDeformableBodySolver.cpp.

◆ updateDv()

void btDeformableBodySolver::updateDv ( btScalar  scale = 1)

Definition at line 205 of file btDeformableBodySolver.cpp.

◆ updateEnergy()

void btDeformableBodySolver::updateEnergy ( btScalar  scale)

Definition at line 156 of file btDeformableBodySolver.cpp.

◆ updateNodes()

bool btDeformableBodySolver::updateNodes ( )

Definition at line 374 of file btDeformableBodySolver.cpp.

◆ updateSoftBodies()

void btDeformableBodySolver::updateSoftBodies ( )
virtual

Perform necessary per-step updates of soft bodies such as recomputing normals and bounding boxes.

Implements btSoftBodySolver.

Definition at line 483 of file btDeformableBodySolver.cpp.

◆ updateState()

void btDeformableBodySolver::updateState ( )

Definition at line 199 of file btDeformableBodySolver.cpp.

◆ updateTempPosition()

void btDeformableBodySolver::updateTempPosition ( )

Definition at line 296 of file btDeformableBodySolver.cpp.

◆ updateVelocity()

void btDeformableBodySolver::updateVelocity ( )

Definition at line 263 of file btDeformableBodySolver.cpp.

Member Data Documentation

◆ m_backup_dv

TVStack btDeformableBodySolver::m_backup_dv
protected

Definition at line 37 of file btDeformableBodySolver.h.

◆ m_backupVelocity

TVStack btDeformableBodySolver::m_backupVelocity
protected

Definition at line 41 of file btDeformableBodySolver.h.

◆ m_cg

btConjugateGradient<btDeformableBackwardEulerObjective> btDeformableBodySolver::m_cg
protected

Definition at line 43 of file btDeformableBodySolver.h.

◆ m_cr

btConjugateResidual<btDeformableBackwardEulerObjective> btDeformableBodySolver::m_cr
protected

Definition at line 44 of file btDeformableBodySolver.h.

◆ m_ddv

TVStack btDeformableBodySolver::m_ddv
protected

Definition at line 38 of file btDeformableBodySolver.h.

◆ m_dt

btScalar btDeformableBodySolver::m_dt
protected

Definition at line 42 of file btDeformableBodySolver.h.

◆ m_dv

TVStack btDeformableBodySolver::m_dv
protected

Definition at line 36 of file btDeformableBodySolver.h.

◆ m_implicit

bool btDeformableBodySolver::m_implicit
protected

Definition at line 45 of file btDeformableBodySolver.h.

◆ m_lineSearch

bool btDeformableBodySolver::m_lineSearch
protected

Definition at line 48 of file btDeformableBodySolver.h.

◆ m_maxNewtonIterations

int btDeformableBodySolver::m_maxNewtonIterations
protected

Definition at line 46 of file btDeformableBodySolver.h.

◆ m_newtonTolerance

btScalar btDeformableBodySolver::m_newtonTolerance
protected

Definition at line 47 of file btDeformableBodySolver.h.

◆ m_numNodes

int btDeformableBodySolver::m_numNodes
protected

Definition at line 35 of file btDeformableBodySolver.h.

◆ m_objective

btDeformableBackwardEulerObjective* btDeformableBodySolver::m_objective

Definition at line 51 of file btDeformableBodySolver.h.

◆ m_residual

TVStack btDeformableBodySolver::m_residual
protected

Definition at line 39 of file btDeformableBodySolver.h.

◆ m_softBodies

btAlignedObjectArray<btSoftBody*> btDeformableBodySolver::m_softBodies
protected

Definition at line 40 of file btDeformableBodySolver.h.

◆ m_useProjection

bool btDeformableBodySolver::m_useProjection

Definition at line 52 of file btDeformableBodySolver.h.


The documentation for this class was generated from the following files: