Logo Search packages:      
Sourcecode: blender version File versions  Download package

btSoftBody Class Reference

#include <btSoftBody.h>

List of all members.


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 49 of file btSoftBody.h.


Public Types

typedef void(* psolver_t )(btSoftBody *, btScalar, btScalar)
typedef btAlignedObjectArray
< Anchor > 
tAnchorArray
typedef btAlignedObjectArray
< Cluster * > 
tClusterArray
typedef btAlignedObjectArray
< Face > 
tFaceArray
typedef btAlignedObjectArray
< Joint * > 
tJointArray
typedef btAlignedObjectArray
< btDbvtNode * > 
tLeafArray
typedef btAlignedObjectArray
< Link > 
tLinkArray
typedef btAlignedObjectArray
< Material * > 
tMaterialArray
typedef btAlignedObjectArray
< Node > 
tNodeArray
typedef btAlignedObjectArray
< Note > 
tNoteArray
typedef btAlignedObjectArray
< ePSolver::_
tPSolverArray
typedef btAlignedObjectArray
< RContact > 
tRContactArray
typedef btAlignedObjectArray
< btScalar > 
tScalarArray
typedef btAlignedObjectArray
< SContact > 
tSContactArray
typedef btAlignedObjectArray
< btSoftBody * > 
tSoftBodyArray
typedef btAlignedObjectArray
< btVector3 > 
tVector3Array
typedef btAlignedObjectArray
< eVSolver::_
tVSolverArray
typedef void(* vsolver_t )(btSoftBody *, btScalar)

Public Member Functions

void addForce (const btVector3 &force, int node)
void addForce (const btVector3 &force)
void addVelocity (const btVector3 &velocity, int node)
void addVelocity (const btVector3 &velocity)
void appendAnchor (int node, btRigidBody *body, bool disableCollisionBetweenLinkedBodies=false)
void appendAngularJoint (const AJoint::Specs &specs, btSoftBody *body)
void appendAngularJoint (const AJoint::Specs &specs, Body body=Body())
void appendAngularJoint (const AJoint::Specs &specs, Cluster *body0, Body body1)
void appendFace (int node0, int node1, int node2, Material *mat=0)
void appendFace (int model=-1, Material *mat=0)
void appendLinearJoint (const LJoint::Specs &specs, btSoftBody *body)
void appendLinearJoint (const LJoint::Specs &specs, Body body=Body())
void appendLinearJoint (const LJoint::Specs &specs, Cluster *body0, Body body1)
void appendLink (Node *node0, Node *node1, Material *mat=0, bool bcheckexist=false)
void appendLink (int node0, int node1, Material *mat=0, bool bcheckexist=false)
void appendLink (int model=-1, Material *mat=0)
Material * appendMaterial ()
void appendNode (const btVector3 &x, btScalar m)
void appendNote (const char *text, const btVector3 &o, Face *feature)
void appendNote (const char *text, const btVector3 &o, Link *feature)
void appendNote (const char *text, const btVector3 &o, Node *feature)
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 applyClusters (bool drift)
void applyForces ()
 btSoftBody (btSoftBodyWorldInfo *worldInfo, int node_count, const btVector3 *x, const btScalar *m)
 btSoftBody implementation by Nathanael Presson
bool checkContact (btCollisionObject *colObj, const btVector3 &x, btScalar margin, btSoftBody::sCti &cti) const
bool checkFace (int node0, int node1, int node2) const
bool checkLink (const Node *node0, const Node *node1) const
bool checkLink (int node0, int node1) const
void cleanupClusters ()
btVector3 clusterCom (int cluster) const
int clusterCount () const
bool cutLink (const Node *node0, const Node *node1, btScalar position)
bool cutLink (int node0, int node1, btScalar position)
void dampClusters ()
void defaultCollisionHandler (btSoftBody *psb)
void defaultCollisionHandler (btCollisionObject *pco)
btVector3 evaluateCom () const
int generateBendingConstraints (int distance, Material *mat=0)
int generateClusters (int k, int maxiterations=8192)
virtual void getAabb (btVector3 &aabbMin, btVector3 &aabbMax) const
btScalar getMass (int node) const
btScalar getTotalMass () const
btScalar getVolume () const
btSoftBodyWorldInfo * getWorldInfo ()
void indicesToPointers (const int *map=0)
void initializeClusters ()
void initializeFaceTree ()
void integrateMotion ()
void pointersToIndices ()
void predictMotion (btScalar dt)
void prepareClusters (int iterations)
void randomizeConstraints ()
int rayTest (const btVector3 &rayFrom, const btVector3 &rayTo, btScalar &mint, eFeature::_ &feature, int &index, bool bcountonly) const
bool rayTest (const btVector3 &rayFrom, const btVector3 &rayTo, sRayCast &results)
 Ray casting using rayFrom and rayTo in worldspace, (not direction!).
void refine (ImplicitFn *ifn, btScalar accurary, bool cut)
void releaseCluster (int index)
void releaseClusters ()
void rotate (const btQuaternion &rot)
void scale (const btVector3 &scl)
virtual void setCollisionShape (btCollisionShape *collisionShape)
void setMass (int node, btScalar mass)
void setPose (bool bvolume, bool bframe)
void setSolver (eSolverPresets::_ preset)
void setTotalDensity (btScalar density)
void setTotalMass (btScalar mass, bool fromfaces=false)
void setVelocity (const btVector3 &velocity)
void solveClusters (btScalar sor)
void solveConstraints ()
void staticSolve (int iterations)
void transform (const btTransform &trs)
void translate (const btVector3 &trs)
void updateBounds ()
void updateClusters ()
void updateConstants ()
void updateNormals ()
void updatePose ()

Static Public Member Functions

static void clusterAImpulse (Cluster *cluster, const Impulse &impulse)
static btVector3 clusterCom (const Cluster *cluster)
static void clusterDAImpulse (Cluster *cluster, const btVector3 &impulse)
static void clusterDCImpulse (Cluster *cluster, 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 btVector3 clusterVelocity (const Cluster *cluster, const btVector3 &rpos)
static void clusterVImpulse (Cluster *cluster, const btVector3 &rpos, const btVector3 &impulse)
static vsolver_t getSolver (eVSolver::_ solver)
static psolver_t getSolver (ePSolver::_ solver)
static void PSolve_Anchors (btSoftBody *psb, btScalar kst, btScalar ti)
static void PSolve_Links (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 solveClusters (const btAlignedObjectArray< btSoftBody * > &bodies)
static void solveCommonConstraints (btSoftBody **bodies, int count, int iterations)
static btSoftBodyupcast (btCollisionObject *colObj)
static const btSoftBodyupcast (const btCollisionObject *colObj)
static void VSolve_Links (btSoftBody *psb, btScalar kst)

Public Attributes

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

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

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

Generated by  Doxygen 1.6.0   Back to index