Bullet Collision Detection & Physics Library: btSoftBody Class Reference

Bullet Collision Detection & Physics Library

Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
btSoftBody Class Reference

The btSoftBody is an class to simulate cloth and volumetric soft bodies. More...

`#include <btSoftBody.h>`

Inheritance diagram for btSoftBody:
[legend]
Collaboration diagram for btSoftBody:
[legend]

## Classes
struct | AJoint
struct | Anchor
struct | Body
struct | CJoint
struct | Cluster
struct | Config
struct | eAeroModel
| eAeroModel More...
struct | eFeature
| eFeature More...
struct | Element
struct | ePSolver
| ePSolver : positions solvers More...
struct | eSolverPresets
| eSolverPresets More...
struct | eVSolver
| eVSolver : velocities solvers More...
struct | Face
struct | fCollision
| fCollision More...
struct | Feature
struct | fMaterial
| fMaterial More...
struct | ImplicitFn
struct | Impulse
struct | Joint
struct | Link
struct | LJoint
struct | Material
struct | Node
struct | Note
struct | Pose
struct | RayFromToCaster
| RayFromToCaster takes a ray from, ray to (instead of direction!) More...
struct | RContact
struct | SContact
struct | sCti
struct | sMedium
struct | SolverState
struct | sRayCast
struct | Tetra

## Public Types
typedef btAlignedObjectArray< eVSolver::_ > | tVSolverArray
typedef btAlignedObjectArray< ePSolver::_ > | tPSolverArray
typedef btAlignedObjectArray< btScalar > | tScalarArray
typedef btAlignedObjectArray< btVector3 > | tVector3Array
typedef void(* | psolver_t) (btSoftBody *, btScalar, btScalar)
typedef void(* | vsolver_t) (btSoftBody *, btScalar)
typedef btAlignedObjectArray< Cluster * > | tClusterArray
typedef btAlignedObjectArray< Note > | tNoteArray
typedef btAlignedObjectArray< Node > | tNodeArray
typedef btAlignedObjectArray< btDbvtNode * > | tLeafArray
typedef btAlignedObjectArray< Link > | tLinkArray
typedef btAlignedObjectArray< Face > | tFaceArray
typedef btAlignedObjectArray< Tetra > | tTetraArray
typedef btAlignedObjectArray< Anchor > | tAnchorArray
typedef btAlignedObjectArray< RContact > | tRContactArray
typedef btAlignedObjectArray< SContact > | tSContactArray
typedef btAlignedObjectArray< Material * > | tMaterialArray
typedef btAlignedObjectArray< Joint * > | tJointArray
typedef btAlignedObjectArray< btSoftBody * > | tSoftBodyArray
Public Types inherited from btCollisionObject
enum | CollisionFlags { CF_STATIC_OBJECT = 1, CF_KINEMATIC_OBJECT = 2, CF_NO_CONTACT_RESPONSE = 4, CF_CUSTOM_MATERIAL_CALLBACK = 8, CF_CHARACTER_OBJECT = 16, CF_DISABLE_VISUALIZE_OBJECT = 32, CF_DISABLE_SPU_COLLISION_PROCESSING = 64, CF_HAS_CONTACT_STIFFNESS_DAMPING = 128, CF_HAS_CUSTOM_DEBUG_RENDERING_COLOR = 256 }
enum | CollisionObjectTypes { CO_COLLISION_OBJECT =1, CO_RIGID_BODY =2, CO_GHOST_OBJECT =4, CO_SOFT_BODY =8, CO_HF_FLUID =16, CO_USER_TYPE =32, CO_FEATHERSTONE_LINK =64 }
enum | AnisotropicFrictionFlags { CF_ANISOTROPIC_FRICTION_DISABLED =0, CF_ANISOTROPIC_FRICTION = 1, CF_ANISOTROPIC_ROLLING_FRICTION = 2 }

## Public Member Functions
| btSoftBody (btSoftBodyWorldInfo *worldInfo, int node_count, const btVector3 *x, const btScalar *m)
| btSoftBody implementation by Nathanael Presson More...
| btSoftBody (btSoftBodyWorldInfo *worldInfo)
void | initDefaults ()
virtual | ~btSoftBody ()
btSoftBodyWorldInfo * | getWorldInfo ()
virtual void | setCollisionShape (btCollisionShape *collisionShape)
bool | checkLink (int node0, int node1) const
bool | checkLink (const Node *node0, const Node *node1) const
bool | checkFace (int node0, int node1, int node2) const
Material * | appendMaterial ()
void | appendNote (const char *text, const btVector3 &o, const btVector4 &c=btVector4(1, 0, 0, 0), Node *n0=0, Node *n1=0, Node *n2=0, Node *n3=0)
void | appendNote (const char *text, const btVector3 &o, Node *feature)
void | appendNote (const char *text, const btVector3 &o, Link *feature)
void | appendNote (const char *text, const btVector3 &o, Face *feature)
void | appendNode (const btVector3 &x, btScalar m)
void | appendLink (int model=-1, Material *mat=0)
void | appendLink (int node0, int node1, Material *mat=0, bool bcheckexist=false)
void | appendLink (Node *node0, Node *node1, Material *mat=0, bool bcheckexist=false)
void | appendFace (int model=-1, Material *mat=0)
void | appendFace (int node0, int node1, int node2, Material *mat=0)
void | appendTetra (int model, Material *mat)
void | appendTetra (int node0, int node1, int node2, int node3, Material *mat=0)
void | appendAnchor (int node, btRigidBody *body, bool disableCollisionBetweenLinkedBodies=false, btScalar influence=1)
void | appendAnchor (int node, btRigidBody *body, const btVector3 &localPivot, bool disableCollisionBetweenLinkedBodies=false, btScalar influence=1)
void | appendLinearJoint (const LJoint::Specs &specs, Cluster *body0, Body body1)
void | appendLinearJoint (const LJoint::Specs &specs, Body body=Body())
void | appendLinearJoint (const LJoint::Specs &specs, btSoftBody *body)
void | appendAngularJoint (const AJoint::Specs &specs, Cluster *body0, Body body1)
void | appendAngularJoint (const AJoint::Specs &specs, Body body=Body())
void | appendAngularJoint (const AJoint::Specs &specs, btSoftBody *body)
void | addForce (const btVector3 &force)
void | addForce (const btVector3 &force, int node)
void | addAeroForceToNode (const btVector3 &windVelocity, int nodeIndex)
void | addAeroForceToFace (const btVector3 &windVelocity, int faceIndex)
void | addVelocity (const btVector3 &velocity)
void | setVelocity (const btVector3 &velocity)
void | addVelocity (const btVector3 &velocity, int node)
void | setMass (int node, btScalar mass)
btScalar | getMass (int node) const
btScalar | getTotalMass () const
void | setTotalMass (btScalar mass, bool fromfaces=false)
void | setTotalDensity (btScalar density)
void | setVolumeMass (btScalar mass)
void | setVolumeDensity (btScalar density)
void | transform (const btTransform &trs)
void | translate (const btVector3 &trs)
void | rotate (const btQuaternion &rot)
void | scale (const btVector3 &scl)
btScalar | getRestLengthScale ()
void | setRestLengthScale (btScalar restLength)
void | setPose (bool bvolume, bool bframe)
void | resetLinkRestLengths ()
btScalar | getVolume () const
int | clusterCount () const
btVector3 | clusterCom (int cluster) const
int | generateBendingConstraints (int distance, Material *mat=0)
void | randomizeConstraints ()
void | releaseCluster (int index)
void | releaseClusters ()
int | generateClusters (int k, int maxiterations=8192)
| generateClusters with k=0 will create a convex cluster for each tetrahedron or triangle otherwise an approximation will be used (better performance) More...
void | refine (ImplicitFn *ifn, btScalar accurary, bool cut)
bool | cutLink (int node0, int node1, btScalar position)
bool | cutLink (const Node *node0, const Node *node1, btScalar position)
bool | rayTest (const btVector3 &rayFrom, const btVector3 &rayTo, sRayCast &results)
| Ray casting using rayFrom and rayTo in worldspace, (not direction!) More...
void | setSolver (eSolverPresets::_ preset)
void | predictMotion (btScalar dt)
void | solveConstraints ()
void | staticSolve (int iterations)
void | integrateMotion ()
void | defaultCollisionHandler (const btCollisionObjectWrapper *pcoWrap)
void | defaultCollisionHandler (btSoftBody *psb)
void | setWindVelocity (const btVector3 &velocity)
| Set a wind velocity for interaction with the air. More...
const btVector3 & | getWindVelocity ()
| Return the wind velocity for interaction with the air. More...
void | setSoftBodySolver (btSoftBodySolver *softBodySolver)
btSoftBodySolver * | getSoftBodySolver ()
btSoftBodySolver * | getSoftBodySolver () const
virtual void | getAabb (btVector3 &aabbMin, btVector3 &aabbMax) const
void | pointersToIndices ()
void | indicesToPointers (const int *map=0)
int | rayTest (const btVector3 &rayFrom, const btVector3 &rayTo, btScalar &mint, eFeature::_ &feature, int &index, bool bcountonly) const
void | initializeFaceTree ()
btVector3 | evaluateCom () const
bool | checkContact (const btCollisionObjectWrapper *colObjWrap, const btVector3 &x, btScalar margin, btSoftBody::sCti &cti) const
void | updateNormals ()
void | updateBounds ()
void | updatePose ()
void | updateConstants ()
void | updateLinkConstants ()
void | updateArea (bool averageArea=true)
void | initializeClusters ()
void | updateClusters ()
void | cleanupClusters ()
void | prepareClusters (int iterations)
void | solveClusters (btScalar sor)
void | applyClusters (bool drift)
void | dampClusters ()
void | applyForces ()
virtual int | calculateSerializeBufferSize () const
virtual const char * | serialize (void *dataBuffer, class btSerializer *serializer) const
| fills the dataBuffer and returns the struct name (and 0 on failure) More...
Public Member Functions inherited from btCollisionObject
| BT_DECLARE_ALIGNED_ALLOCATOR ()
bool | mergesSimulationIslands () const
const btVector3 & | getAnisotropicFriction () const
void | setAnisotropicFriction (const btVector3 &anisotropicFriction, int frictionMode=CF_ANISOTROPIC_FRICTION)
bool | hasAnisotropicFriction (int frictionMode=CF_ANISOTROPIC_FRICTION) const
void | setContactProcessingThreshold (btScalar contactProcessingThreshold)
| the constraint solver can discard solving contacts, if the distance is above this threshold. More...
btScalar | getContactProcessingThreshold () const
bool | isStaticObject () const
bool | isKinematicObject () const
bool | isStaticOrKinematicObject () const
bool | hasContactResponse () const
| btCollisionObject ()
virtual | ~btCollisionObject ()
const btCollisionShape * | getCollisionShape () const
btCollisionShape * | getCollisionShape ()
void | setIgnoreCollisionCheck (const btCollisionObject *co, bool ignoreCollisionCheck)
virtual bool | checkCollideWithOverride (const btCollisionObject *co) const
void * | internalGetExtensionPointer () const
| Avoid using this internal API call, the extension pointer is used by some Bullet extensions. More...
void | internalSetExtensionPointer (void *pointer)
| Avoid using this internal API call, the extension pointer is used by some Bullet extensions If you need to store your own user pointer, use 'setUserPointer/getUserPointer' instead. More...
int | getActivationState () const
void | setActivationState (int newState) const
void | setDeactivationTime (btScalar time)
btScalar | getDeactivationTime () const
void | forceActivationState (int newState) const
void | activate (bool forceActivation=false) const
bool | isActive () const
void | setRestitution (btScalar rest)
btScalar | getRestitution () const
void | setFriction (btScalar frict)
btScalar | getFriction () const
void | setRollingFriction (btScalar frict)
btScalar | getRollingFriction () const
void | setSpinningFriction (btScalar frict)
btScalar | getSpinningFriction () const
void | setContactStiffnessAndDamping (btScalar stiffness, btScalar damping)
btScalar | getContactStiffness () const
btScalar | getContactDamping () const
int | getInternalType () const
| reserved for Bullet internal usage More...
btTransform & | getWorldTransform ()
const btTransform & | getWorldTransform () const
void | setWorldTransform (const btTransform &worldTrans)
btBroadphaseProxy * | getBroadphaseHandle ()
const btBroadphaseProxy * | getBroadphaseHandle () const
void | setBroadphaseHandle (btBroadphaseProxy *handle)
const btTransform & | getInterpolationWorldTransform () const
btTransform & | getInterpolationWorldTransform ()
void | setInterpolationWorldTransform (const btTransform &trans)
void | setInterpolationLinearVelocity (const btVector3 &linvel)
void | setInterpolationAngularVelocity (const btVector3 &angvel)
const btVector3 & | getInterpolationLinearVelocity () const
const btVector3 & | getInterpolationAngularVelocity () const
int | getIslandTag () const
void | setIslandTag (int tag)
int | getCompanionId () const
void | setCompanionId (int id)
int | getWorldArrayIndex () const
void | setWorldArrayIndex (int ix)
btScalar | getHitFraction () const
void | setHitFraction (btScalar hitFraction)
int | getCollisionFlags () const
void | setCollisionFlags (int flags)
btScalar | getCcdSweptSphereRadius () const
| Swept sphere radius (0.0 by default), see btConvexConvexAlgorithm:: More...
void | setCcdSweptSphereRadius (btScalar radius)
| Swept sphere radius (0.0 by default), see btConvexConvexAlgorithm:: More...
btScalar | getCcdMotionThreshold () const
btScalar | getCcdSquareMotionThreshold () const
void | setCcdMotionThreshold (btScalar ccdMotionThreshold)
| Don't do continuous collision detection if the motion (in one step) is less then m_ccdMotionThreshold. More...
void * | getUserPointer () const
| users can point to their objects, userPointer is not used by Bullet More...
int | getUserIndex () const
int | getUserIndex2 () const
void | setUserPointer (void *userPointer)
| users can point to their objects, userPointer is not used by Bullet More...
void | setUserIndex (int index)
| users can point to their objects, userPointer is not used by Bullet More...
void | setUserIndex2 (int index)
int | getUpdateRevisionInternal () const
void | setCustomDebugColor (const btVector3 &colorRGB)
void | removeCustomDebugColor ()
bool | getCustomDebugColor (btVector3 &colorRGB) const
bool | checkCollideWith (const btCollisionObject *co) const
virtual void | serializeSingleObject (class btSerializer *serializer) const

## Static Public Member Functions
static btVector3 | clusterCom (const Cluster *cluster)
static btVector3 | clusterVelocity (const Cluster *cluster, const btVector3 &rpos)
static void | clusterVImpulse (Cluster *cluster, const btVector3 &rpos, const btVector3 &impulse)
static void | clusterDImpulse (Cluster *cluster, const btVector3 &rpos, const btVector3 &impulse)
static void | clusterImpulse (Cluster *cluster, const btVector3 &rpos, const Impulse &impulse)
static void | clusterVAImpulse (Cluster *cluster, const btVector3 &impulse)
static void | clusterDAImpulse (Cluster *cluster, const btVector3 &impulse)
static void | clusterAImpulse (Cluster *cluster, const Impulse &impulse)
static void | clusterDCImpulse (Cluster *cluster, const btVector3 &impulse)
static void | solveCommonConstraints (btSoftBody **bodies, int count, int iterations)
static void | solveClusters (const btAlignedObjectArray< btSoftBody *> &bodies)
static const btSoftBody * | upcast (const btCollisionObject *colObj)
static btSoftBody * | upcast (btCollisionObject *colObj)
static void | PSolve_Anchors (btSoftBody *psb, btScalar kst, btScalar ti)
static void | PSolve_RContacts (btSoftBody *psb, btScalar kst, btScalar ti)
static void | PSolve_SContacts (btSoftBody *psb, btScalar, btScalar ti)
static void | PSolve_Links (btSoftBody *psb, btScalar kst, btScalar ti)
static void | VSolve_Links (btSoftBody *psb, btScalar kst)
static psolver_t | getSolver (ePSolver::_ solver)
static vsolver_t | getSolver (eVSolver::_ solver)

## Public Attributes
btAlignedObjectArray< const class btCollisionObject * > | m_collisionDisabledObjects
btSoftBodySolver * | m_softBodySolver
Config | m_cfg
SolverState | m_sst
Pose | m_pose
void * | m_tag
btSoftBodyWorldInfo * | m_worldInfo
tNoteArray | m_notes
tNodeArray | m_nodes
tLinkArray | m_links
tFaceArray | m_faces
tTetraArray | m_tetras
tAnchorArray | m_anchors
tRContactArray | m_rcontacts
tSContactArray | m_scontacts
tJointArray | m_joints
tMaterialArray | m_materials
btScalar | m_timeacc
btVector3 | m_bounds [2]
bool | m_bUpdateRtCst
btDbvt | m_ndbvt
btDbvt | m_fdbvt
btDbvt | m_cdbvt
tClusterArray | m_clusters
btAlignedObjectArray< bool > | m_clusterConnectivity
btTransform | m_initialWorldTransform
btVector3 | m_windVelocity
btScalar | m_restLengthScale
btAlignedObjectArray< int > | m_userIndexMapping

## Additional Inherited Members
Protected Attributes inherited from btCollisionObject
btTransform | m_worldTransform
btTransform | m_interpolationWorldTransform
| m_interpolationWorldTransform is used for CCD and interpolation it can be either previous or future (predicted) transform More...
btVector3 | m_interpolationLinearVelocity
btVector3 | m_interpolationAngularVelocity
btVector3 | m_anisotropicFriction
int | m_hasAnisotropicFriction
btScalar | m_contactProcessingThreshold
btBroadphaseProxy * | m_broadphaseHandle
btCollisionShape * | m_collisionShape
void * | m_extensionPointer
| m_extensionPointer is used by some internal low-level Bullet extensions. More...
btCollisionShape * | m_rootCollisionShape
| m_rootCollisionShape is temporarily used to store the original collision shape The m_collisionShape might be temporarily replaced by a child collision shape during collision detection purposes If it is NULL, the m_collisionShape is not temporarily replaced. More...
int | m_collisionFlags
int | m_islandTag1
int | m_companionId
int | m_worldArrayIndex
int | m_activationState1
btScalar | m_deactivationTime
btScalar | m_friction
btScalar | m_restitution
btScalar | m_rollingFriction
btScalar | m_spinningFriction
btScalar | m_contactDamping
btScalar | m_contactStiffness
int | m_internalType
| m_internalType is reserved to distinguish Bullet's btCollisionObject, btRigidBody, btSoftBody, btGhostObject etc. More...
void * | m_userObjectPointer
| users can point to their objects, m_userPointer is not used by Bullet, see setUserPointer/getUserPointer More...
int | m_userIndex2
int | m_userIndex
btScalar | m_hitFraction
| time of impact calculation More...
btScalar | m_ccdSweptSphereRadius
| Swept sphere radius (0.0 by default), see btConvexConvexAlgorithm:: More...
btScalar | m_ccdMotionThreshold
| Don't do continuous collision detection if the motion (in one step) is less then m_ccdMotionThreshold. More...
int | m_checkCollideWith
| If some object should have elaborate collision filtering by sub-classes. More...
btAlignedObjectArray< const btCollisionObject * > | m_objectsWithoutCollisionCheck
int | m_updateRevision
| internal update revision number. It will be increased when the object changes. This allows some subsystems to perform lazy evaluation. More...
btVector3 | m_customDebugColorRGB

## Detailed Description

The btSoftBody is an class to simulate cloth and volumetric soft bodies.

There is two-way interaction between btSoftBody and btRigidBody/btCollisionObject.

Definition at line 71 of file btSoftBody.h.

## Member Typedef Documentation

## § psolver_t

typedef void(* btSoftBody::psolver_t) (btSoftBody *, btScalar, btScalar)

Definition at line 633 of file btSoftBody.h.

## § tAnchorArray

typedef btAlignedObjectArray<Anchor> btSoftBody::tAnchorArray

Definition at line 642 of file btSoftBody.h.

## § tClusterArray

typedef btAlignedObjectArray<Cluster*> btSoftBody::tClusterArray

Definition at line 635 of file btSoftBody.h.

## § tFaceArray

typedef btAlignedObjectArray<Face> btSoftBody::tFaceArray

Definition at line 640 of file btSoftBody.h.

## § tJointArray

typedef btAlignedObjectArray<Joint*> btSoftBody::tJointArray

Definition at line 646 of file btSoftBody.h.

## § tLeafArray

typedef btAlignedObjectArray<btDbvtNode*> btSoftBody::tLeafArray

Definition at line 638 of file btSoftBody.h.

## § tLinkArray

typedef btAlignedObjectArray<Link> btSoftBody::tLinkArray

Definition at line 639 of file btSoftBody.h.

## § tMaterialArray

typedef btAlignedObjectArray<Material*> btSoftBody::tMaterialArray

Definition at line 645 of file btSoftBody.h.

## § tNodeArray

typedef btAlignedObjectArray<Node> btSoftBody::tNodeArray

Definition at line 637 of file btSoftBody.h.

## § tNoteArray

typedef btAlignedObjectArray<Note> btSoftBody::tNoteArray

Definition at line 636 of file btSoftBody.h.

## § tPSolverArray

typedef btAlignedObjectArray<ePSolver::_> btSoftBody::tPSolverArray

Definition at line 129 of file btSoftBody.h.

## § tRContactArray

typedef btAlignedObjectArray<RContact> btSoftBody::tRContactArray

Definition at line 643 of file btSoftBody.h.

## § tScalarArray

typedef btAlignedObjectArray<btScalar> btSoftBody::tScalarArray

Definition at line 182 of file btSoftBody.h.

## § tSContactArray

typedef btAlignedObjectArray<SContact> btSoftBody::tSContactArray

Definition at line 644 of file btSoftBody.h.

## § tSoftBodyArray

typedef btAlignedObjectArray<btSoftBody*> btSoftBody::tSoftBodyArray

Definition at line 647 of file btSoftBody.h.

## § tTetraArray

typedef btAlignedObjectArray<Tetra> btSoftBody::tTetraArray

Definition at line 641 of file btSoftBody.h.

## § tVector3Array

typedef btAlignedObjectArray<btVector3> btSoftBody::tVector3Array

Definition at line 183 of file btSoftBody.h.

## § tVSolverArray

typedef btAlignedObjectArray<eVSolver::_> btSoftBody::tVSolverArray

Definition at line 128 of file btSoftBody.h.

## § vsolver_t

typedef void(* btSoftBody::vsolver_t) (btSoftBody *, btScalar)

Definition at line 634 of file btSoftBody.h.

## Constructor & Destructor Documentation

## § btSoftBody() [1/2]

btSoftBody::btSoftBody | ( | btSoftBodyWorldInfo * | worldInfo,
|  | int | node_count,
|  | const btVector3 * | x,
|  | const btScalar * | m
| ) |  |

btSoftBody implementation by Nathanael Presson

Definition at line 26 of file btSoftBody.cpp.

## § btSoftBody() [2/2]

btSoftBody::btSoftBody | ( | btSoftBodyWorldInfo * | worldInfo | ) |

Definition at line 57 of file btSoftBody.cpp.

## § ~btSoftBody()

btSoftBody::~btSoftBody | ( |  | ) |
| virtual

Definition at line 119 of file btSoftBody.cpp.

## Member Function Documentation

## § addAeroForceToFace()

void btSoftBody::addAeroForceToFace | ( | const btVector3 & | windVelocity,
|  | int | faceIndex
| ) |  |

Definition at line 547 of file btSoftBody.cpp.

## § addAeroForceToNode()

void btSoftBody::addAeroForceToNode | ( | const btVector3 & | windVelocity,
|  | int | nodeIndex
| ) |  |

Definition at line 458 of file btSoftBody.cpp.

## § addForce() [1/2]

void btSoftBody::addForce | ( | const btVector3 & | force | ) |

Definition at line 443 of file btSoftBody.cpp.

## § addForce() [2/2]

void btSoftBody::addForce | ( | const btVector3 & | force,
|  | int | node
| ) |  |

Definition at line 449 of file btSoftBody.cpp.

## § addVelocity() [1/2]

void btSoftBody::addVelocity | ( | const btVector3 & | velocity | ) |

Definition at line 644 of file btSoftBody.cpp.

## § addVelocity() [2/2]

void btSoftBody::addVelocity | ( | const btVector3 & | velocity,
|  | int | node
| ) |  |

Definition at line 664 of file btSoftBody.cpp.

## § appendAnchor() [1/2]

void btSoftBody::appendAnchor | ( | int | node,
|  | btRigidBody * | body,
|  | bool | disableCollisionBetweenLinkedBodies = `false`,
|  | btScalar | influence = `1`
| ) |  |

Definition at line 363 of file btSoftBody.cpp.

## § appendAnchor() [2/2]

void btSoftBody::appendAnchor | ( | int | node,
|  | btRigidBody * | body,
|  | const btVector3 & | localPivot,
|  | bool | disableCollisionBetweenLinkedBodies = `false`,
|  | btScalar | influence = `1`
| ) |  |

Definition at line 370 of file btSoftBody.cpp.

## § appendAngularJoint() [1/3]

void btSoftBody::appendAngularJoint | ( | const AJoint::Specs & | specs,
|  | Cluster * | body0,
|  | Body | body1
| ) |  |

Definition at line 416 of file btSoftBody.cpp.

## § appendAngularJoint() [2/3]

void btSoftBody::appendAngularJoint | ( | const AJoint::Specs & | specs,
|  | Body | body = `Body()`
| ) |  |

Definition at line 431 of file btSoftBody.cpp.

## § appendAngularJoint() [3/3]

void btSoftBody::appendAngularJoint | ( | const AJoint::Specs & | specs,
|  | btSoftBody * | body
| ) |  |

Definition at line 437 of file btSoftBody.cpp.

## § appendFace() [1/2]

void btSoftBody::appendFace | ( | int | model = `-1`,
|  | Material * | mat = `0`
| ) |  |

Definition at line 299 of file btSoftBody.cpp.

## § appendFace() [2/2]

void btSoftBody::appendFace | ( | int | node0,
|  | int | node1,
|  | int | node2,
|  | Material * | mat = `0`
| ) |  |

Definition at line 310 of file btSoftBody.cpp.

## § appendLinearJoint() [1/3]

void btSoftBody::appendLinearJoint | ( | const LJoint::Specs & | specs,
|  | Cluster * | body0,
|  | Body | body1
| ) |  |

Definition at line 390 of file btSoftBody.cpp.

## § appendLinearJoint() [2/3]

void btSoftBody::appendLinearJoint | ( | const LJoint::Specs & | specs,
|  | Body | body = `Body()`
| ) |  |

Definition at line 404 of file btSoftBody.cpp.

## § appendLinearJoint() [3/3]

void btSoftBody::appendLinearJoint | ( | const LJoint::Specs & | specs,
|  | btSoftBody * | body
| ) |  |

Definition at line 410 of file btSoftBody.cpp.

## § appendLink() [1/3]

void btSoftBody::appendLink | ( | int | model = `-1`,
|  | Material * | mat = `0`
| ) |  |

Definition at line 262 of file btSoftBody.cpp.

## § appendLink() [2/3]

void btSoftBody::appendLink | ( | int | node0,
|  | int | node1,
|  | Material * | mat = `0`,
|  | bool | bcheckexist = `false`
| ) |  |

Definition at line 273 of file btSoftBody.cpp.

## § appendLink() [3/3]

void btSoftBody::appendLink | ( | Node * | node0,
|  | Node * | node1,
|  | Material * | mat = `0`,
|  | bool | bcheckexist = `false`
| ) |  |

Definition at line 282 of file btSoftBody.cpp.

## § appendMaterial()

btSoftBody::Material * btSoftBody::appendMaterial | ( |  | ) |

Definition at line 176 of file btSoftBody.cpp.

## § appendNode()

void btSoftBody::appendNode | ( | const btVector3 & | x,
|  | btScalar | m
| ) |  |

Definition at line 242 of file btSoftBody.cpp.

## § appendNote() [1/4]

void btSoftBody::appendNote | ( | const char * | text,
|  | const btVector3 & | o,
|  | const btVector4 & | c = `btVector4(1,0,0,0)`,
|  | Node * | n0 = `0`,
|  | Node * | n1 = `0`,
|  | Node * | n2 = `0`,
|  | Node * | n3 = `0`
| ) |  |

Definition at line 188 of file btSoftBody.cpp.

## § appendNote() [2/4]

void btSoftBody::appendNote | ( | const char * | text,
|  | const btVector3 & | o,
|  | Node * | feature
| ) |  |

Definition at line 213 of file btSoftBody.cpp.

## § appendNote() [3/4]

void btSoftBody::appendNote | ( | const char * | text,
|  | const btVector3 & | o,
|  | Link * | feature
| ) |  |

Definition at line 221 of file btSoftBody.cpp.

## § appendNote() [4/4]

void btSoftBody::appendNote | ( | const char * | text,
|  | const btVector3 & | o,
|  | Face * | feature
| ) |  |

Definition at line 231 of file btSoftBody.cpp.

## § appendTetra() [1/2]

void btSoftBody::appendTetra | ( | int | model,
|  | Material * | mat
| ) |  |

Definition at line 334 of file btSoftBody.cpp.

## § appendTetra() [2/2]

void btSoftBody::appendTetra | ( | int | node0,
|  | int | node1,
|  | int | node2,
|  | int | node3,
|  | Material * | mat = `0`
| ) |  |

Definition at line 345 of file btSoftBody.cpp.

## § applyClusters()

void btSoftBody::applyClusters | ( | bool | drift | ) |

Definition at line 2689 of file btSoftBody.cpp.

## § applyForces()

void btSoftBody::applyForces | ( |  | ) |

Definition at line 2935 of file btSoftBody.cpp.

## § calculateSerializeBufferSize()

int btSoftBody::calculateSerializeBufferSize | ( |  | ) | const
| virtual

Reimplemented from btCollisionObject.

Definition at line 3302 of file btSoftBody.cpp.

## § checkContact()

bool btSoftBody::checkContact | ( | const btCollisionObjectWrapper * | colObjWrap,
|  | const btVector3 & | x,
|  | btScalar | margin,
|  | btSoftBody::sCti & | cti
| ) |  | const

Definition at line 2248 of file btSoftBody.cpp.

## § checkFace()

bool btSoftBody::checkFace | ( | int | node0,
|  | int | node1,
|  | int | node2
| ) |  | const

Definition at line 155 of file btSoftBody.cpp.

## § checkLink() [1/2]

bool btSoftBody::checkLink | ( | int | node0,
|  | int | node1
| ) |  | const

Definition at line 133 of file btSoftBody.cpp.

## § checkLink() [2/2]

bool btSoftBody::checkLink | ( | const Node * | node0,
|  | const Node * | node1
| ) |  | const

Definition at line 139 of file btSoftBody.cpp.

## § cleanupClusters()

void btSoftBody::cleanupClusters | ( |  | ) |

Definition at line 2656 of file btSoftBody.cpp.

## § clusterAImpulse()

void btSoftBody::clusterAImpulse | ( | Cluster * | cluster,
|  | const Impulse & | impulse
| ) |  |
| static

Definition at line 1019 of file btSoftBody.cpp.

## § clusterCom() [1/2]

btVector3 btSoftBody::clusterCom | ( | const Cluster * | cluster | ) |
| static

Definition at line 953 of file btSoftBody.cpp.

## § clusterCom() [2/2]

btVector3 btSoftBody::clusterCom | ( | int | cluster | ) | const

Definition at line 964 of file btSoftBody.cpp.

## § clusterCount()

int btSoftBody::clusterCount | ( |  | ) | const

Definition at line 947 of file btSoftBody.cpp.

## § clusterDAImpulse()

void btSoftBody::clusterDAImpulse | ( | Cluster * | cluster,
|  | const btVector3 & | impulse
| ) |  |
| static

Definition at line 1011 of file btSoftBody.cpp.

## § clusterDCImpulse()

void btSoftBody::clusterDCImpulse | ( | Cluster * | cluster,
|  | const btVector3 & | impulse
| ) |  |
| static

Definition at line 1026 of file btSoftBody.cpp.

## § clusterDImpulse()

void btSoftBody::clusterDImpulse | ( | Cluster * | cluster,
|  | const btVector3 & | rpos,
|  | const btVector3 & | impulse
| ) |  |
| static

Definition at line 986 of file btSoftBody.cpp.

## § clusterImpulse()

void btSoftBody::clusterImpulse | ( | Cluster * | cluster,
|  | const btVector3 & | rpos,
|  | const Impulse & | impulse
| ) |  |
| static

Definition at line 996 of file btSoftBody.cpp.

## § clusterVAImpulse()

void btSoftBody::clusterVAImpulse | ( | Cluster * | cluster,
|  | const btVector3 & | impulse
| ) |  |
| static

Definition at line 1003 of file btSoftBody.cpp.

## § clusterVelocity()

btVector3 btSoftBody::clusterVelocity | ( | const Cluster * | cluster,
|  | const btVector3 & | rpos
| ) |  |
| static

Definition at line 970 of file btSoftBody.cpp.

## § clusterVImpulse()

void btSoftBody::clusterVImpulse | ( | Cluster * | cluster,
|  | const btVector3 & | rpos,
|  | const btVector3 & | impulse
| ) |  |
| static

Definition at line 976 of file btSoftBody.cpp.

## § cutLink() [1/2]

bool btSoftBody::cutLink | ( | int | node0,
|  | int | node1,
|  | btScalar | position
| ) |  |

Definition at line 1644 of file btSoftBody.cpp.

## § cutLink() [2/2]

bool btSoftBody::cutLink | ( | const Node * | node0,
|  | const Node * | node1,
|  | btScalar | position
| ) |  |

Definition at line 1638 of file btSoftBody.cpp.

## § dampClusters()

void btSoftBody::dampClusters | ( |  | ) |

Definition at line 2740 of file btSoftBody.cpp.

## § defaultCollisionHandler() [1/2]

void btSoftBody::defaultCollisionHandler | ( | const btCollisionObjectWrapper * | pcoWrap | ) |

Definition at line 3198 of file btSoftBody.cpp.

## § defaultCollisionHandler() [2/2]

void btSoftBody::defaultCollisionHandler | ( | btSoftBody * | psb | ) |

Definition at line 3239 of file btSoftBody.cpp.

## § evaluateCom()

btVector3 btSoftBody::evaluateCom | ( |  | ) | const

Definition at line 2234 of file btSoftBody.cpp.

## § generateBendingConstraints()

int btSoftBody::generateBendingConstraints | ( | int | distance,
|  | Material * | mat = `0`
| ) |  |

generic Floyd's algorithm

Definition at line 1040 of file btSoftBody.cpp.

## § generateClusters()

int btSoftBody::generateClusters | ( | int | k,
|  | int | maxiterations = `8192`
| ) |  |

generateClusters with k=0 will create a convex cluster for each tetrahedron or triangle otherwise an approximation will be used (better performance)

Definition at line 1194 of file btSoftBody.cpp.

## § getAabb()

virtual void btSoftBody::getAabb | ( | btVector3 & | aabbMin,
|  | btVector3 & | aabbMax
| ) |  | const
| inlinevirtual

Definition at line 953 of file btSoftBody.h.

## § getMass()

btScalar btSoftBody::getMass | ( | int | node | ) | const

Definition at line 681 of file btSoftBody.cpp.

## § getRestLengthScale()

btScalar btSoftBody::getRestLengthScale | ( |  | ) |

Definition at line 846 of file btSoftBody.cpp.

## § getSoftBodySolver() [1/2]

btSoftBodySolver* btSoftBody::getSoftBodySolver | ( |  | ) |
| inline

Definition at line 918 of file btSoftBody.h.

## § getSoftBodySolver() [2/2]

btSoftBodySolver* btSoftBody::getSoftBodySolver | ( |  | ) | const
| inline

Definition at line 926 of file btSoftBody.h.

## § getSolver() [1/2]

btSoftBody::psolver_t btSoftBody::getSolver | ( | ePSolver::_ | solver | ) |
| static

Definition at line 3165 of file btSoftBody.cpp.

## § getSolver() [2/2]

btSoftBody::vsolver_t btSoftBody::getSolver | ( | eVSolver::_ | solver | ) |
| static

Definition at line 3185 of file btSoftBody.cpp.

## § getTotalMass()

btScalar btSoftBody::getTotalMass | ( |  | ) | const

Definition at line 687 of file btSoftBody.cpp.

## § getVolume()

btScalar btSoftBody::getVolume | ( |  | ) | const

Definition at line 928 of file btSoftBody.cpp.

## § getWindVelocity()

const btVector3 & btSoftBody::getWindVelocity | ( |  | ) |

Return the wind velocity for interaction with the air.

Definition at line 3295 of file btSoftBody.cpp.

## § getWorldInfo()

btSoftBodyWorldInfo* btSoftBody::getWorldInfo | ( |  | ) |
| inline

Definition at line 702 of file btSoftBody.h.

## § indicesToPointers()

void btSoftBody::indicesToPointers | ( | const int * | map = `0` | ) |

Definition at line 2100 of file btSoftBody.cpp.

## § initDefaults()

void btSoftBody::initDefaults | ( |  | ) |

for now, create a collision shape internally

Definition at line 64 of file btSoftBody.cpp.

## § initializeClusters()

void btSoftBody::initializeClusters | ( |  | ) |

Definition at line 2472 of file btSoftBody.cpp.

## § initializeFaceTree()

void btSoftBody::initializeFaceTree | ( |  | ) |

Definition at line 2223 of file btSoftBody.cpp.

## § integrateMotion()

void btSoftBody::integrateMotion | ( |  | ) |

Definition at line 1990 of file btSoftBody.cpp.

## § pointersToIndices()

void btSoftBody::pointersToIndices | ( |  | ) |

Definition at line 2057 of file btSoftBody.cpp.

## § predictMotion()

void btSoftBody::predictMotion | ( | btScalar | dt | ) |

Definition at line 1741 of file btSoftBody.cpp.

## § prepareClusters()

void btSoftBody::prepareClusters | ( | int | iterations | ) |

Definition at line 2670 of file btSoftBody.cpp.

## § PSolve_Anchors()

void btSoftBody::PSolve_Anchors | ( | btSoftBody * | psb,
|  | btScalar | kst,
|  | btScalar | ti
| ) |  |
| static

Definition at line 3004 of file btSoftBody.cpp.

## § PSolve_Links()

void btSoftBody::PSolve_Links | ( | btSoftBody * | psb,
|  | btScalar | kst,
|  | btScalar | ti
| ) |  |
| static

Definition at line 3130 of file btSoftBody.cpp.

## § PSolve_RContacts()

void btSoftBody::PSolve_RContacts | ( | btSoftBody * | psb,
|  | btScalar | kst,
|  | btScalar | ti
| ) |  |
| static

Definition at line 3025 of file btSoftBody.cpp.

## § PSolve_SContacts()

void btSoftBody::PSolve_SContacts | ( | btSoftBody * | psb,
|  | btScalar | ,
|  | btScalar | ti
| ) |  |
| static

Definition at line 3097 of file btSoftBody.cpp.

## § randomizeConstraints()

void btSoftBody::randomizeConstraints | ( |  | ) |

Definition at line 1160 of file btSoftBody.cpp.

## § rayTest() [1/2]

bool btSoftBody::rayTest | ( | const btVector3 & | rayFrom,
|  | const btVector3 & | rayTo,
|  | sRayCast & | results
| ) |  |

Ray casting using rayFrom and rayTo in worldspace, (not direction!)

Definition at line 1699 of file btSoftBody.cpp.

## § rayTest() [2/2]

int btSoftBody::rayTest | ( | const btVector3 & | rayFrom,
|  | const btVector3 & | rayTo,
|  | btScalar & | mint,
|  | eFeature::_ & | feature,
|  | int & | index,
|  | bool | bcountonly
| ) |  | const

Definition at line 2144 of file btSoftBody.cpp.

## § refine()

void btSoftBody::refine | ( | ImplicitFn * | ifn,
|  | btScalar | accurary,
|  | bool | cut
| ) |  |

Definition at line 1387 of file btSoftBody.cpp.

## § releaseCluster()

void btSoftBody::releaseCluster | ( | int | index | ) |

Definition at line 1178 of file btSoftBody.cpp.

## § releaseClusters()

void btSoftBody::releaseClusters | ( |  | ) |

Definition at line 1188 of file btSoftBody.cpp.

## § resetLinkRestLengths()

void btSoftBody::resetLinkRestLengths | ( |  | ) |

Definition at line 917 of file btSoftBody.cpp.

## § rotate()

void btSoftBody::rotate | ( | const btQuaternion & | rot | ) |

Definition at line 817 of file btSoftBody.cpp.

## § scale()

void btSoftBody::scale | ( | const btVector3 & | scl | ) |

Definition at line 826 of file btSoftBody.cpp.

## § serialize()

const char * btSoftBody::serialize | ( | void * | dataBuffer,
|  | class btSerializer * | serializer
| ) |  | const
| virtual

fills the dataBuffer and returns the struct name (and 0 on failure)

Reimplemented from btCollisionObject.

Definition at line 3309 of file btSoftBody.cpp.

## § setCollisionShape()

virtual void btSoftBody::setCollisionShape | ( | btCollisionShape * | collisionShape | ) |
| inlinevirtual

Reimplemented from btCollisionObject.

Definition at line 708 of file btSoftBody.h.

## § setMass()

void btSoftBody::setMass | ( | int | node,
|  | btScalar | mass
| ) |  |

Definition at line 674 of file btSoftBody.cpp.

## § setPose()

void btSoftBody::setPose | ( | bool | bvolume,
|  | bool | bframe
| ) |  |

Definition at line 867 of file btSoftBody.cpp.

## § setRestLengthScale()

void btSoftBody::setRestLengthScale | ( | btScalar | restLength | ) |

Definition at line 852 of file btSoftBody.cpp.

## § setSoftBodySolver()

void btSoftBody::setSoftBodySolver | ( | btSoftBodySolver * | softBodySolver | ) |
| inline

Definition at line 910 of file btSoftBody.h.

## § setSolver()

void btSoftBody::setSolver | ( | eSolverPresets::_ | preset | ) |

Definition at line 1715 of file btSoftBody.cpp.

## § setTotalDensity()

void btSoftBody::setTotalDensity | ( | btScalar | density | ) |

Definition at line 735 of file btSoftBody.cpp.

## § setTotalMass()

void btSoftBody::setTotalMass | ( | btScalar | mass,
|  | bool | fromfaces = `false`
| ) |  |

Definition at line 698 of file btSoftBody.cpp.

## § setVelocity()

void btSoftBody::setVelocity | ( | const btVector3 & | velocity | ) |

Definition at line 650 of file btSoftBody.cpp.

## § setVolumeDensity()

void btSoftBody::setVolumeDensity | ( | btScalar | density | ) |

Definition at line 771 of file btSoftBody.cpp.

## § setVolumeMass()

void btSoftBody::setVolumeMass | ( | btScalar | mass | ) |

Definition at line 741 of file btSoftBody.cpp.

## § setWindVelocity()

void btSoftBody::setWindVelocity | ( | const btVector3 & | velocity | ) |

Set a wind velocity for interaction with the air.

Definition at line 3289 of file btSoftBody.cpp.

## § solveClusters() [1/2]

void btSoftBody::solveClusters | ( | const btAlignedObjectArray< btSoftBody *> & | bodies | ) |
| static

Definition at line 1961 of file btSoftBody.cpp.

## § solveClusters() [2/2]

void btSoftBody::solveClusters | ( | btScalar | sor | ) |

Definition at line 2680 of file btSoftBody.cpp.

## § solveCommonConstraints()

void btSoftBody::solveCommonConstraints | ( | btSoftBody ** | bodies,
|  | int | count,
|  | int | iterations
| ) |  |
| static

placeholder

Definition at line 1955 of file btSoftBody.cpp.

## § solveConstraints()

void btSoftBody::solveConstraints | ( |  | ) |

Definition at line 1849 of file btSoftBody.cpp.

## § staticSolve()

void btSoftBody::staticSolve | ( | int | iterations | ) |

Definition at line 1943 of file btSoftBody.cpp.

## § transform()

void btSoftBody::transform | ( | const btTransform & | trs | ) |

Definition at line 786 of file btSoftBody.cpp.

## § translate()

void btSoftBody::translate | ( | const btVector3 & | trs | ) |

Definition at line 808 of file btSoftBody.cpp.

## § upcast() [1/2]

static const btSoftBody* btSoftBody::upcast | ( | const btCollisionObject * | colObj | ) |
| inlinestatic

Definition at line 936 of file btSoftBody.h.

## § upcast() [2/2]

static btSoftBody* btSoftBody::upcast | ( | btCollisionObject * | colObj | ) |
| inlinestatic

Definition at line 942 of file btSoftBody.h.

## § updateArea()

void btSoftBody::updateArea | ( | bool | averageArea = `true` | ) |

Definition at line 2384 of file btSoftBody.cpp.

## § updateBounds()

void btSoftBody::updateBounds | ( |  | ) |

Definition at line 2306 of file btSoftBody.cpp.

## § updateClusters()

void btSoftBody::updateClusters | ( |  | ) |

Definition at line 2538 of file btSoftBody.cpp.

## § updateConstants()

void btSoftBody::updateConstants | ( |  | ) |

Definition at line 2462 of file btSoftBody.cpp.

## § updateLinkConstants()

void btSoftBody::updateLinkConstants | ( |  | ) |

Definition at line 2449 of file btSoftBody.cpp.

## § updateNormals()

void btSoftBody::updateNormals | ( |  | ) |

Definition at line 2277 of file btSoftBody.cpp.

## § updatePose()

void btSoftBody::updatePose | ( |  | ) |

Definition at line 2348 of file btSoftBody.cpp.

## § VSolve_Links()

void btSoftBody::VSolve_Links | ( | btSoftBody * | psb,
|  | btScalar | kst
| ) |  |
| static

Definition at line 3152 of file btSoftBody.cpp.

## Member Data Documentation

## § m_anchors

tAnchorArray btSoftBody::m_anchors

Definition at line 663 of file btSoftBody.h.

## § m_bounds

btVector3 btSoftBody::m_bounds[2]

Definition at line 669 of file btSoftBody.h.

## § m_bUpdateRtCst

bool btSoftBody::m_bUpdateRtCst

Definition at line 670 of file btSoftBody.h.

## § m_cdbvt

btDbvt btSoftBody::m_cdbvt

Definition at line 673 of file btSoftBody.h.

## § m_cfg

Config btSoftBody::m_cfg

Definition at line 653 of file btSoftBody.h.

## § m_clusterConnectivity

btAlignedObjectArray<bool> btSoftBody::m_clusterConnectivity

Definition at line 676 of file btSoftBody.h.

## § m_clusters

tClusterArray btSoftBody::m_clusters

Definition at line 674 of file btSoftBody.h.

## § m_collisionDisabledObjects

btAlignedObjectArray<const class btCollisionObject*> btSoftBody::m_collisionDisabledObjects

Definition at line 74 of file btSoftBody.h.

## § m_faces

tFaceArray btSoftBody::m_faces

Definition at line 661 of file btSoftBody.h.

## § m_fdbvt

btDbvt btSoftBody::m_fdbvt

Definition at line 672 of file btSoftBody.h.

## § m_initialWorldTransform

btTransform btSoftBody::m_initialWorldTransform

Definition at line 678 of file btSoftBody.h.

## § m_joints

tJointArray btSoftBody::m_joints

Definition at line 666 of file btSoftBody.h.

## § m_links

tLinkArray btSoftBody::m_links

Definition at line 660 of file btSoftBody.h.

## § m_materials

tMaterialArray btSoftBody::m_materials

Definition at line 667 of file btSoftBody.h.

## § m_ndbvt

btDbvt btSoftBody::m_ndbvt

Definition at line 671 of file btSoftBody.h.

## § m_nodes

tNodeArray btSoftBody::m_nodes

Definition at line 659 of file btSoftBody.h.

## § m_notes

tNoteArray btSoftBody::m_notes

Definition at line 658 of file btSoftBody.h.

## § m_pose

Pose btSoftBody::m_pose

Definition at line 655 of file btSoftBody.h.

## § m_rcontacts

tRContactArray btSoftBody::m_rcontacts

Definition at line 664 of file btSoftBody.h.

## § m_restLengthScale

btScalar btSoftBody::m_restLengthScale

Definition at line 682 of file btSoftBody.h.

## § m_scontacts

tSContactArray btSoftBody::m_scontacts

Definition at line 665 of file btSoftBody.h.

## § m_softBodySolver

btSoftBodySolver* btSoftBody::m_softBodySolver

Definition at line 77 of file btSoftBody.h.

## § m_sst

SolverState btSoftBody::m_sst

Definition at line 654 of file btSoftBody.h.

## § m_tag

void* btSoftBody::m_tag

Definition at line 656 of file btSoftBody.h.

## § m_tetras

tTetraArray btSoftBody::m_tetras

Definition at line 662 of file btSoftBody.h.

## § m_timeacc

btScalar btSoftBody::m_timeacc

Definition at line 668 of file btSoftBody.h.

## § m_userIndexMapping

btAlignedObjectArray<int> btSoftBody::m_userIndexMapping

Definition at line 700 of file btSoftBody.h.

## § m_windVelocity

btVector3 btSoftBody::m_windVelocity

Definition at line 680 of file btSoftBody.h.

## § m_worldInfo

btSoftBodyWorldInfo* btSoftBody::m_worldInfo

Definition at line 657 of file btSoftBody.h.

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

- btSoftBody.h
- btSoftBody.cpp